Bonmin 1.4trunk
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$
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