# IpAdaptiveMuUpdate.hpp

Go to the documentation of this file.

    00001 // Copyright (C) 2004, 2010 International Business Machines and others.
    00002 // All Rights Reserved.
    00003 // This code is published under the Eclipse Public License.
    00004 //
    00005 // $Id: IpAdaptiveMuUpdate.hpp 1861 2010-12-21 21:34:47Z andreasw $
    00006 //
    00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
    00008
    00009 #ifndef __IPADAPTIVEMUUPDATE_HPP__
    00010 #define __IPADAPTIVEMUUPDATE_HPP__
    00011
    00012 #include "IpMuUpdate.hpp"
    00013 #include "IpLineSearch.hpp"
    00014 #include "IpMuOracle.hpp"
    00015 #include "IpFilter.hpp"
    00016 #include "IpQualityFunctionMuOracle.hpp"
    00017
    00018 namespace Ipopt
    00019 {
    00020
    00023   class AdaptiveMuUpdate : public MuUpdate
    00024   {
    00025   public:
    00029     AdaptiveMuUpdate(const SmartPtr<LineSearch>& linesearch,
    00030                      const SmartPtr<MuOracle>& free_mu_oracle,
    00031                      const SmartPtr<MuOracle>& fix_mu_oracle=NULL);
    00033     virtual ~AdaptiveMuUpdate();
    00035
    00037     virtual bool InitializeImpl(const OptionsList& options,
    00038                                 const std::string& prefix);
    00039
    00045     virtual bool UpdateBarrierParameter();
    00046
    00049     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
    00051
    00052   private:
    00061
    00063     AdaptiveMuUpdate();
    00064
    00066     AdaptiveMuUpdate(const AdaptiveMuUpdate&);
    00067
    00069     void operator=(const AdaptiveMuUpdate&);
    00071
    00074     Number mu_max_fact_;
    00075     Number mu_max_;
    00076     Number mu_min_;
    00077     Number mu_target_;
    00078     bool mu_min_default_;
    00079     Number tau_min_;
    00080     Number adaptive_mu_safeguard_factor_; //ToDo don't need that?
    00081     Number adaptive_mu_monotone_init_factor_;
    00082     Number barrier_tol_factor_;
    00083     Number mu_linear_decrease_factor_;
    00084     Number mu_superlinear_decrease_power_;
    00085     QualityFunctionMuOracle::NormEnum adaptive_mu_kkt_norm_;
    00086     QualityFunctionMuOracle::CentralityEnum adaptive_mu_kkt_centrality_;
    00087     QualityFunctionMuOracle::BalancingTermEnum adaptive_mu_kkt_balancing_term_;
    00089     enum AdaptiveMuGlobalizationEnum
    00090     {
    00091       KKT_ERROR=0,
    00092       FILTER_OBJ_CONSTR,
    00093       NEVER_MONOTONE_MODE
    00094     };
    00096     AdaptiveMuGlobalizationEnum adaptive_mu_globalization_;
    00098     Number filter_max_margin_;
    00100     Number filter_margin_fact_;
    00102     Number compl_inf_tol_;
    00104
    00108     SmartPtr<LineSearch> linesearch_;
    00112     SmartPtr<MuOracle> free_mu_oracle_;
    00117     SmartPtr<MuOracle> fix_mu_oracle_;
    00119
    00122     Number init_dual_inf_;
    00125     Number init_primal_inf_;
    00126
    00130     void InitializeFixedMuGlobalization();
    00134     bool CheckSufficientProgress();
    00137     void RememberCurrentPointAsAccepted();
    00141     Number NewFixedMu();
    00144     Number Compute_tau_monotone(Number mu);
    00145
    00151     Number quality_function_pd_system();
    00152
    00156     Number lower_mu_safeguard();
    00157
    00159     Number max_ref_val();
    00160
    00162     Number min_ref_val();
    00163
    00165     Index num_refs_max_;
    00168     std::list<Number> refs_vals_;
    00170     Number refs_red_fact_;
    00171
    00173     Filter filter_;
    00176     bool restore_accepted_iterate_;
    00178
    00180     bool no_bounds_;
    00182     bool check_if_no_bounds_;
    00183
    00188     SmartPtr<const IteratesVector> accepted_point_;
    00190
    00191   };
    00192
    00193 } // namespace Ipopt
    00194
    00195 #endif

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines