/home/coin/SVN-release/CoinAll-1.1.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 
00063     virtual Number CalculateAlphaMin();
00064 
00070     virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
00071 
00083     virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
00084                                           Number& alpha_primal,
00085                                           SmartPtr<IteratesVector>& actual_delta);
00086 
00093     virtual bool TryCorrector(Number alpha_primal_test,
00094                               Number& alpha_primal,
00095                               SmartPtr<IteratesVector>& actual_delta);
00096 
00101     virtual char UpdateForNextIteration(Number alpha_primal_test);
00102 
00105     virtual void StartWatchDog();
00106 
00109     virtual void StopWatchDog();
00110 
00117     bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta,
00118                                       bool called_from_restoration=false) const;
00119 
00121     bool IsAcceptableToCurrentFilter(Number trial_barr, Number trial_theta) const;
00123 
00126     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00128 
00129   private:
00139     PenaltyLSAcceptor(const PenaltyLSAcceptor&);
00140 
00142     void operator=(const PenaltyLSAcceptor&);
00144 
00146     Number CalcPred(Number alpha);
00147 
00149     //ToDo This should probably not be a static member function if we want to
00150     //     allow for different relaxation parameters values
00151     static bool Compare_le(Number lhs, Number rhs, Number BasVal);
00152 
00156     Number nu_init_;
00158     Number nu_inc_;
00160     Number eta_;
00162     Number rho_;
00164     Index max_soc_;
00168     Number kappa_soc_;
00170 
00175     Number reference_theta_;
00178     Number reference_barr_;
00181     Number reference_gradBarrTDelta_;
00183     Number reference_dWd_;
00185     SmartPtr<const Vector> reference_JacC_delta_;
00187     SmartPtr<const Vector> reference_JacD_delta_;
00190     Number reference_pred_;
00192     Number watchdog_theta_;
00194     Number watchdog_barr_;
00196     Number watchdog_pred_;
00198 
00202     Number nu_;
00204     Number last_nu_;
00206 
00209     SmartPtr<PDSystemSolver> pd_solver_;
00211   };
00212 
00213 } // namespace Ipopt
00214 
00215 #endif

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