/home/coin/SVN-release/Ipopt-3.3.2/Ipopt/src/Algorithm/IpDefaultIterateInitializer.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2007 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpDefaultIterateInitializer.hpp 1010 2007-06-21 15:54:36Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter              IBM    2004-09-24
00008 
00009 #ifndef __IPDEFAULTITERATEINITIALIZER_HPP__
00010 #define __IPDEFAULTITERATEINITIALIZER_HPP__
00011 
00012 #include "IpIterateInitializer.hpp"
00013 #include "IpEqMultCalculator.hpp"
00014 #include "IpAugSystemSolver.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00024   class DefaultIterateInitializer: public IterateInitializer
00025   {
00026   public:
00034     DefaultIterateInitializer
00035     (const SmartPtr<EqMultiplierCalculator>& eq_mult_calculator,
00036      const SmartPtr<IterateInitializer>& warm_start_initializer,
00037      const SmartPtr<AugSystemSolver> aug_system_solver = NULL);
00038 
00040     virtual ~DefaultIterateInitializer()
00041     {}
00043 
00045     virtual bool InitializeImpl(const OptionsList& options,
00046                                 const std::string& prefix);
00047 
00050     virtual bool SetInitialIterates();
00051 
00055     static void push_variables(const Journalist& jnlst,
00056                                Number bound_push,
00057                                Number bound_frac,
00058                                std::string name,
00059                                const Vector& orig_x,
00060                                SmartPtr<const Vector>& new_x,
00061                                const Vector& x_L,
00062                                const Vector& x_U,
00063                                const Matrix& Px_L,
00064                                const Matrix& Px_U);
00065 
00073     static void least_square_mults(const Journalist& jnlst,
00074                                    IpoptNLP& ip_nlp,
00075                                    IpoptData& ip_data,
00076                                    IpoptCalculatedQuantities& ip_cq,
00077                                    const SmartPtr<EqMultiplierCalculator>& eq_mult_calculator,
00078                                    Number constr_mult_init_max);
00079 
00080 
00083     static void RegisterOptions(SmartPtr<RegisteredOptions> reg_options);
00085 
00086   private:
00096     DefaultIterateInitializer();
00097 
00099     DefaultIterateInitializer(const DefaultIterateInitializer&);
00100 
00102     void operator=(const DefaultIterateInitializer&);
00104 
00108     Number bound_push_;
00110     Number bound_frac_;
00112     Number slack_bound_push_;
00114     Number slack_bound_frac_;
00115 
00119     Number constr_mult_init_max_;
00121     Number bound_mult_init_val_;
00124     bool warm_start_init_point_;
00128     bool least_square_init_primal_;
00132     bool least_square_init_duals_;
00134 
00137     SmartPtr<EqMultiplierCalculator> eq_mult_calculator_;
00138 
00140     SmartPtr<IterateInitializer> warm_start_initializer_;
00141 
00145     SmartPtr<AugSystemSolver> aug_system_solver_;
00146 
00149     bool CalculateLeastSquarePrimals(Vector& x_ls, Vector& s_ls);
00150 
00153     bool CalculateLeastSquareDuals(Vector& zL_new, Vector& zU_new,
00154                                    Vector& vL_new, Vector& vU_new,
00155                                    Vector& yc_new, Vector& yd_new);
00156 
00157   };
00158 
00159 } // namespace Ipopt
00160 
00161 #endif

Generated on Thu May 15 22:27:51 2008 by  doxygen 1.4.7