/home/coin/SVN-release/CoinAll-1.1.0/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

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