- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.5.1/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