Bonmin  1.7
BonIpoptInteriorWarmStarter.hpp
Go to the documentation of this file.
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