# 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 Eclipse Public License.
    00004 //
    00005 // $Id: IpDefaultIterateInitializer.hpp 1861 2010-12-21 21:34:47Z 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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines