Bonmin  1.8.8
BonIpoptInteriorWarmStarter.hpp
Go to the documentation of this file.
1 // (C) Copyright International Business Machines Corporation 2006
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: BonIpoptInteriorWarmStarter.hpp 2106 2015-01-20 10:33:55Z stefan $
6 //
7 // Authors: Andreas Waechter IBM 2006-03-02
8 
9 #ifndef __IPOPTINTERIORWARMSTARTER_HPP__
10 #define __IPOPTINTERIORWARMSTARTER_HPP__
11 
12 #include "IpSmartPtr.hpp"
13 #include "IpNLP.hpp"
14 #include <vector>
15 
16 namespace Bonmin
17 {
18  class IpoptInteriorWarmStarter : public Ipopt::ReferencedObject
19  {
20  public:
25  IpoptInteriorWarmStarter(Ipopt::Index n, const Ipopt::Number* x_L, const Ipopt::Number* x_u,
26  Ipopt::Number nlp_lower_bound_inf,
27  Ipopt::Number nlp_upper_bound_inf,
28  bool store_several_iterates);
29 
33 
37  bool UpdateStoredIterates(Ipopt::AlgorithmMode mode,
38  const Ipopt::IpoptData& ip_data,
39  Ipopt::IpoptCalculatedQuantities& ip_cq);
40 
43  bool Finalize();
44 
47  bool WarmStartIterate(Ipopt::Index n, const Ipopt::Number* x_l_new, const Ipopt::Number* x_u_new,
48  Ipopt::IteratesVector& warm_start_iterate);
49 
50  private:
61 
64 
68 
70 
71  Ipopt::Number nlp_lower_bound_inf_;
73  Ipopt::Number nlp_upper_bound_inf_;
78 
84  Ipopt::Index n_;
85  Ipopt::Number* x_l_prev_;
86  Ipopt::Number* x_u_prev_;
88 
92  Ipopt::Index n_stored_iterates_;
93  std::vector<Ipopt::Index> stored_iter_;
94  std::vector<Ipopt::SmartPtr<const Ipopt::IteratesVector> > stored_iterates_;
95  std::vector<Ipopt::Number> stored_mu_;
96  std::vector<Ipopt::Number> stored_nlp_error_;
97  std::vector<Ipopt::Number> stored_primal_inf_;
98  std::vector<Ipopt::Number> stored_dual_inf_;
99  std::vector<Ipopt::Number> stored_compl_;
101  };
102 }
103 #endif
std::vector< Ipopt::SmartPtr< const Ipopt::IteratesVector > > stored_iterates_
~IpoptInteriorWarmStarter()
Default destructor.
bool UpdateStoredIterates(Ipopt::AlgorithmMode mode, const Ipopt::IpoptData &ip_data, Ipopt::IpoptCalculatedQuantities &ip_cq)
Method for possibly storing another iterate during the current optimizatin for possible use for a war...
bool WarmStartIterate(Ipopt::Index n, const Ipopt::Number *x_l_new, const Ipopt::Number *x_u_new, Ipopt::IteratesVector &warm_start_iterate)
Method for computing the initial point based on the stored information.
std::vector< Ipopt::Number > stored_compl_
IpoptInteriorWarmStarter()
Default constructor.
bool Finalize()
Method for doing whatever needs to be done after the parent NLP has been solved.
Ipopt::Number nlp_upper_bound_inf_
Value for a upper bound that denotes infinity.
bool store_several_iterates_
Flag indicating whether more than one iterate is to be stored.
std::vector< Ipopt::Number > stored_dual_inf_
Ipopt::Number nlp_lower_bound_inf_
Value for a lower bound that denotes -infinity.
std::vector< Ipopt::Number > stored_nlp_error_
std::vector< Ipopt::Number > stored_primal_inf_
void operator=(const IpoptInteriorWarmStarter &)
Overloaded Equals Operator.