/home/coin/SVN-release/Ipopt-3.5.0/Ipopt/src/Algorithm/IpPenaltyLSAcceptor.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpFilterLSAcceptor.hpp 1019 2007-06-24 03:52:34Z andreasw $
00006 //
00007 // Authors:  Andreas Waechter                 IBM    2008-04-04
00008 //               derived file from IpFilterLSAcceptor.hpp
00009 
00010 #ifndef __IPPENALTYLSACCEPTOR_HPP__
00011 #define __IPPENALTYLSACCEPTOR_HPP__
00012 
00013 #include "IpBacktrackingLSAcceptor.hpp"
00014 #include "IpPDSystemSolver.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00022   class PenaltyLSAcceptor : public BacktrackingLSAcceptor
00023   {
00024   public:
00030     PenaltyLSAcceptor(const SmartPtr<PDSystemSolver>& pd_solver);
00031 
00033     virtual ~PenaltyLSAcceptor();
00035 
00037     virtual bool InitializeImpl(const OptionsList& options,
00038                                 const std::string& prefix);
00039 
00046     virtual void Reset();
00047 
00051     virtual void InitThisLineSearch(bool in_watchdog);
00052 
00057     virtual void PrepareRestoPhaseStart();
00058 
00060     virtual Number CalculateAlphaMin();
00061 
00067     virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
00068 
00080     virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
00081                                           Number& alpha_primal,
00082                                           SmartPtr<IteratesVector>& actual_delta);
00083 
00090     virtual bool TryCorrector(Number alpha_primal_test,
00091                               Number& alpha_primal,
00092                               SmartPtr<IteratesVector>& actual_delta);
00093 
00098     virtual char UpdateForNextIteration(Number alpha_primal_test);
00099 
00102     virtual void StartWatchDog();
00103 
00106     virtual void StopWatchDog();
00107 
00114     bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta,
00115                                       bool called_from_restoration=false) const;
00117 
00120     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00122 
00123   private:
00133     PenaltyLSAcceptor(const PenaltyLSAcceptor&);
00134 
00136     void operator=(const PenaltyLSAcceptor&);
00138 
00140     Number CalcPred(Number alpha);
00141 
00143     //ToDo This should probably not be a static member function if we want to
00144     //     allow for different relaxation parameters values
00145     static bool Compare_le(Number lhs, Number rhs, Number BasVal);
00146 
00150     Number nu_init_;
00152     Number nu_inc_;
00154     Number eta_;
00156     Number rho_;
00158     Index max_soc_;
00162     Number kappa_soc_;
00164 
00169     Number reference_theta_;
00172     Number reference_barr_;
00175     Number reference_gradBarrTDelta_;
00177     Number reference_dWd_;
00179     SmartPtr<const Vector> reference_JacC_delta_;
00181     SmartPtr<const Vector> reference_JacD_delta_;
00184     Number reference_pred_;
00186     Number watchdog_theta_;
00188     Number watchdog_barr_;
00190     Number watchdog_pred_;
00192 
00196     Number nu_;
00198     Number last_nu_;
00200 
00203     Number resto_pred_;
00204 
00207     SmartPtr<PDSystemSolver> pd_solver_;
00209   };
00210 
00211 } // namespace Ipopt
00212 
00213 #endif

Generated on Tue Aug 26 03:00:26 2008 by  doxygen 1.4.7