- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.7.1/Ipopt/src/Algorithm/IpAdaptiveMuUpdate.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: IpAdaptiveMuUpdate.hpp 929 2007-03-07 13:24:09Z 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     bool mu_min_default_;
    00078     Number tau_min_;
    00079     Number adaptive_mu_safeguard_factor_; //ToDo don't need that?
    00080     Number adaptive_mu_monotone_init_factor_;
    00081     Number barrier_tol_factor_;
    00082     Number mu_linear_decrease_factor_;
    00083     Number mu_superlinear_decrease_power_;
    00084     QualityFunctionMuOracle::NormEnum adaptive_mu_kkt_norm_;
    00085     QualityFunctionMuOracle::CentralityEnum adaptive_mu_kkt_centrality_;
    00086     QualityFunctionMuOracle::BalancingTermEnum adaptive_mu_kkt_balancing_term_;
    00088     enum AdaptiveMuGlobalizationEnum
    00089     {
    00090       KKT_ERROR=0,
    00091       FILTER_OBJ_CONSTR,
    00092       NEVER_MONOTONE_MODE
    00093     };
    00095     AdaptiveMuGlobalizationEnum adaptive_mu_globalization_;
    00097     Number filter_max_margin_;
    00099     Number filter_margin_fact_;
    00101     Number compl_inf_tol_;
    00103
    00107     SmartPtr<LineSearch> linesearch_;
    00111     SmartPtr<MuOracle> free_mu_oracle_;
    00116     SmartPtr<MuOracle> fix_mu_oracle_;
    00118
    00121     Number init_dual_inf_;
    00124     Number init_primal_inf_;
    00125
    00129     void InitializeFixedMuGlobalization();
    00133     bool CheckSufficientProgress();
    00136     void RememberCurrentPointAsAccepted();
    00140     Number NewFixedMu();
    00143     Number Compute_tau_monotone(Number mu);
    00144
    00150     Number quality_function_pd_system();
    00151
    00155     Number lower_mu_safeguard();
    00156
    00158     Number max_ref_val();
    00159
    00161     Number min_ref_val();
    00162
    00164     Index num_refs_max_;
    00167     std::list<Number> refs_vals_;
    00169     Number refs_red_fact_;
    00170
    00172     Filter filter_;
    00175     bool restore_accepted_iterate_;
    00177
    00179     bool no_bounds_;
    00181     bool check_if_no_bounds_;
    00182
    00187     SmartPtr<const IteratesVector> accepted_point_;
    00189
    00190   };
    00191
    00192 } // namespace Ipopt
    00193
    00194 #endif