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

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpDefaultIterateInitializer.hpp 1213 2008-04-10 18:40:50Z 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 
00088     enum BoundMultInitMethod
00089     {
00090       B_CONSTANT=0,
00091       B_MU_BASED
00092     };
00094   private:
00104     DefaultIterateInitializer();
00105 
00107     DefaultIterateInitializer(const DefaultIterateInitializer&);
00108 
00110     void operator=(const DefaultIterateInitializer&);
00112 
00116     Number bound_push_;
00118     Number bound_frac_;
00120     Number slack_bound_push_;
00122     Number slack_bound_frac_;
00123 
00127     Number constr_mult_init_max_;
00129     Number bound_mult_init_val_;
00132     bool warm_start_init_point_;
00136     bool least_square_init_primal_;
00140     bool least_square_init_duals_;
00142     BoundMultInitMethod bound_mult_init_method_;
00144     Number mu_init_;
00146 
00149     SmartPtr<EqMultiplierCalculator> eq_mult_calculator_;
00150 
00152     SmartPtr<IterateInitializer> warm_start_initializer_;
00153 
00157     SmartPtr<AugSystemSolver> aug_system_solver_;
00158 
00161     bool CalculateLeastSquarePrimals(Vector& x_ls, Vector& s_ls);
00162 
00165     bool CalculateLeastSquareDuals(Vector& zL_new, Vector& zU_new,
00166                                    Vector& vL_new, Vector& vU_new,
00167                                    Vector& yc_new, Vector& yd_new);
00168 
00169   };
00170 
00171 } // namespace Ipopt
00172 
00173 #endif

Generated on Sun Nov 14 14:06:34 2010 for Coin-All by  doxygen 1.4.7