Bonmin
1.7
|
00001 // (C) Copyright International Business Machines Corporation 2006 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: BonIpoptInteriorWarmStarter.hpp 1858 2011-06-18 20:13:40Z stefan $ 00006 // 00007 // Authors: Andreas Waechter IBM 2006-03-02 00008 00009 #ifndef __IPOPTINTERIORWARMSTARTER_HPP__ 00010 #define __IPOPTINTERIORWARMSTARTER_HPP__ 00011 00012 #include "IpSmartPtr.hpp" 00013 #include "IpNLP.hpp" 00014 #include <vector> 00015 00016 namespace Bonmin 00017 { 00018 class IpoptInteriorWarmStarter : public Ipopt::ReferencedObject 00019 { 00020 public: 00025 IpoptInteriorWarmStarter(Ipopt::Index n, const Ipopt::Number* x_L, const Ipopt::Number* x_u, 00026 Ipopt::Number nlp_lower_bound_inf, 00027 Ipopt::Number nlp_upper_bound_inf, 00028 bool store_several_iterates); 00029 00031 ~IpoptInteriorWarmStarter(); 00033 00037 bool UpdateStoredIterates(Ipopt::AlgorithmMode mode, 00038 const Ipopt::IpoptData& ip_data, 00039 Ipopt::IpoptCalculatedQuantities& ip_cq); 00040 00043 bool Finalize(); 00044 00047 bool WarmStartIterate(Ipopt::Index n, const Ipopt::Number* x_l_new, const Ipopt::Number* x_u_new, 00048 Ipopt::IteratesVector& warm_start_iterate); 00049 00050 private: 00060 IpoptInteriorWarmStarter(); 00061 00063 IpoptInteriorWarmStarter(const IpoptInteriorWarmStarter&); 00064 00066 void operator=(const IpoptInteriorWarmStarter&); 00068 00070 00071 Ipopt::Number nlp_lower_bound_inf_; 00073 Ipopt::Number nlp_upper_bound_inf_; 00076 bool store_several_iterates_; 00078 00084 Ipopt::Index n_; 00085 Ipopt::Number* x_l_prev_; 00086 Ipopt::Number* x_u_prev_; 00088 00092 Ipopt::Index n_stored_iterates_; 00093 std::vector<Ipopt::Index> stored_iter_; 00094 std::vector<Ipopt::SmartPtr<const Ipopt::IteratesVector> > stored_iterates_; 00095 std::vector<Ipopt::Number> stored_mu_; 00096 std::vector<Ipopt::Number> stored_nlp_error_; 00097 std::vector<Ipopt::Number> stored_primal_inf_; 00098 std::vector<Ipopt::Number> stored_dual_inf_; 00099 std::vector<Ipopt::Number> stored_compl_; 00101 }; 00102 } 00103 #endif