Bonmin 1.4trunk
|
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$ 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 using namespace Ipopt; 00017 namespace Bonmin 00018 { 00019 class IpoptInteriorWarmStarter : public ReferencedObject 00020 { 00021 public: 00026 IpoptInteriorWarmStarter(Index n, const Number* x_L, const Number* x_u, 00027 Number nlp_lower_bound_inf, 00028 Number nlp_upper_bound_inf, 00029 bool store_several_iterates); 00030 00032 ~IpoptInteriorWarmStarter(); 00034 00038 bool UpdateStoredIterates(AlgorithmMode mode, 00039 const IpoptData& ip_data, 00040 IpoptCalculatedQuantities& ip_cq); 00041 00044 bool Finalize(); 00045 00048 bool WarmStartIterate(Index n, const Number* x_l_new, const Number* x_u_new, 00049 IteratesVector& warm_start_iterate); 00050 00051 private: 00061 IpoptInteriorWarmStarter(); 00062 00064 IpoptInteriorWarmStarter(const IpoptInteriorWarmStarter&); 00065 00067 void operator=(const IpoptInteriorWarmStarter&); 00069 00071 00072 Number nlp_lower_bound_inf_; 00074 Number nlp_upper_bound_inf_; 00077 bool store_several_iterates_; 00079 00085 Index n_; 00086 Number* x_l_prev_; 00087 Number* x_u_prev_; 00089 00093 Index n_stored_iterates_; 00094 std::vector<Index> stored_iter_; 00095 std::vector<SmartPtr<const IteratesVector> > stored_iterates_; 00096 std::vector<Number> stored_mu_; 00097 std::vector<Number> stored_nlp_error_; 00098 std::vector<Number> stored_primal_inf_; 00099 std::vector<Number> stored_dual_inf_; 00100 std::vector<Number> stored_compl_; 00102 }; 00103 } 00104 #endif