- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.7.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: IpPenaltyLSAcceptor.hpp 1390 2009-01-06 16:55:52Z 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
    00023   class PenaltyLSAcceptor : public BacktrackingLSAcceptor
    00024   {
    00025   public:
    00031     PenaltyLSAcceptor(const SmartPtr<PDSystemSolver>& pd_solver);
    00032
    00034     virtual ~PenaltyLSAcceptor();
    00036
    00038     virtual bool InitializeImpl(const OptionsList& options,
    00039                                 const std::string& prefix);
    00040
    00047     virtual void Reset();
    00048
    00052     virtual void InitThisLineSearch(bool in_watchdog);
    00053
    00057     virtual void PrepareRestoPhaseStart();
    00058
    00060     virtual Number CalculateAlphaMin();
    00061
    00067     virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
    00068
    00081     virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
    00082                                           Number& alpha_primal,
    00083                                           SmartPtr<IteratesVector>& actual_delta);
    00084
    00091     virtual bool TryCorrector(Number alpha_primal_test,
    00092                               Number& alpha_primal,
    00093                               SmartPtr<IteratesVector>& actual_delta);
    00094
    00099     virtual char UpdateForNextIteration(Number alpha_primal_test);
    00100
    00103     virtual void StartWatchDog();
    00104
    00107     virtual void StopWatchDog();
    00108
    00115     bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta,
    00116                                       bool called_from_restoration=false) const;
    00118
    00121     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
    00123
    00124   private:
    00134     PenaltyLSAcceptor(const PenaltyLSAcceptor&);
    00135
    00137     void operator=(const PenaltyLSAcceptor&);
    00139
    00141     Number CalcPred(Number alpha);
    00142
    00147     Number nu_init_;
    00149     Number nu_inc_;
    00151     Number eta_;
    00153     Number rho_;
    00155     Index max_soc_;
    00159     Number kappa_soc_;
    00161
    00166     Number reference_theta_;
    00169     Number reference_barr_;
    00172     Number reference_gradBarrTDelta_;
    00174     Number reference_dWd_;
    00176     SmartPtr<const Vector> reference_JacC_delta_;
    00178     SmartPtr<const Vector> reference_JacD_delta_;
    00181     Number reference_pred_;
    00183     Number watchdog_theta_;
    00185     Number watchdog_barr_;
    00187     Number watchdog_pred_;
    00189
    00193     Number nu_;
    00195     Number last_nu_;
    00197
    00200     Number resto_pred_;
    00201
    00204     SmartPtr<PDSystemSolver> pd_solver_;
    00206   };
    00207
    00208 } // namespace Ipopt
    00209
    00210 #endif