Ipopt
trunk
|
00001 // Copyright (C) 2008, 2009 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // $Id$ 00006 // 00007 // Authors: Andreas Waechter IBM 2008-08-31 00008 00009 #ifndef __IPINEXACTDATA_HPP__ 00010 #define __IPINEXACTDATA_HPP__ 00011 00012 #include "IpIpoptData.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00019 class InexactData : public IpoptAdditionalData 00020 { 00021 public: 00025 InexactData(); 00026 00028 ~InexactData(); 00030 00036 bool Initialize(const Journalist& jnlst, 00037 const OptionsList& options, 00038 const std::string& prefix); 00039 00041 bool InitializeDataStructures(); 00042 00046 void AcceptTrialPoint(); 00048 00051 void set_normal_x(SmartPtr<Vector>& normal_x) 00052 { 00053 normal_x_ = ConstPtr(normal_x); 00054 normal_x = NULL; 00055 } 00056 void set_normal_s(SmartPtr<Vector>& normal_s) 00057 { 00058 normal_s_ = ConstPtr(normal_s); 00059 normal_s = NULL; 00060 } 00061 SmartPtr<const Vector> normal_x() 00062 { 00063 return normal_x_; 00064 } 00065 SmartPtr<const Vector> normal_s() 00066 { 00067 return normal_s_; 00068 } 00070 00073 void set_tangential_x(SmartPtr<const Vector>& tangential_x) 00074 { 00075 tangential_x_ = tangential_x; 00076 tangential_x = NULL; 00077 } 00078 void set_tangential_s(SmartPtr<const Vector>& tangential_s) 00079 { 00080 tangential_s_ = tangential_s; 00081 tangential_s = NULL; 00082 } 00083 SmartPtr<const Vector> tangential_x() 00084 { 00085 return tangential_x_; 00086 } 00087 SmartPtr<const Vector> tangential_s() 00088 { 00089 return tangential_s_; 00090 } 00092 00097 void set_full_step_accepted(bool full_step_accepted) 00098 { 00099 full_step_accepted_ = full_step_accepted; 00100 } 00101 bool full_step_accepted() 00102 { 00103 return full_step_accepted_; 00104 } 00106 00109 void set_curr_nu(Number nu) 00110 { 00111 curr_nu_ = nu; 00112 } 00113 Number curr_nu() 00114 { 00115 return curr_nu_; 00116 } 00118 00121 void set_compute_normal(bool compute_normal) 00122 { 00123 compute_normal_ = compute_normal; 00124 } 00125 bool compute_normal() 00126 { 00127 return compute_normal_; 00128 } 00130 00133 void set_next_compute_normal(bool next_compute_normal) 00134 { 00135 next_compute_normal_ = next_compute_normal; 00136 } 00137 bool next_compute_normal() 00138 { 00139 return next_compute_normal_; 00140 } 00142 00143 private: 00153 InexactData(const InexactData&); 00154 00156 void operator=(const InexactData&); 00158 00161 SmartPtr<const Vector> normal_x_; 00162 SmartPtr<const Vector> normal_s_; 00164 00167 SmartPtr<const Vector> tangential_x_; 00168 SmartPtr<const Vector> tangential_s_; 00170 00172 bool full_step_accepted_; 00173 00175 Number curr_nu_; 00176 00178 bool compute_normal_; 00179 00181 bool next_compute_normal_; 00182 }; 00183 00184 } // namespace Ipopt 00185 00186 #endif