00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpBacktrackingLSAcceptor.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 // Andreas Waechter IBM 2005-10-13 00009 // derived file from IpFilterLineSearch.hpp 00010 00011 #ifndef __IPBACKTRACKINGLSACCEPTOR_HPP__ 00012 #define __IPBACKTRACKINGLSACCEPTOR_HPP__ 00013 00014 #include "IpAlgStrategy.hpp" 00015 00016 namespace Ipopt 00017 { 00018 00021 class BacktrackingLSAcceptor : public AlgorithmStrategyObject 00022 { 00023 public: 00027 BacktrackingLSAcceptor() 00028 {} 00029 00031 virtual ~BacktrackingLSAcceptor() 00032 {} 00034 00036 virtual bool InitializeImpl(const OptionsList& options, 00037 const std::string& prefix)=0; 00038 00045 virtual void Reset()=0; 00046 00050 virtual void InitThisLineSearch(bool in_watchdog)=0; 00051 00056 virtual void PrepareRestoPhaseStart()=0; 00057 00062 virtual Number CalculateAlphaMin()=0; 00063 00071 virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)=0; 00072 00084 virtual bool TrySecondOrderCorrection(Number alpha_primal_test, 00085 Number& alpha_primal, 00086 SmartPtr<IteratesVector>& actual_delta)=0; 00087 00094 virtual bool TryCorrector(Number alpha_primal_test, 00095 Number& alpha_primal, 00096 SmartPtr<IteratesVector>& actual_delta)=0; 00097 00103 virtual char UpdateForNextIteration(Number alpha_primal_test)=0; 00104 00107 virtual void StartWatchDog()=0; 00108 00111 virtual void StopWatchDog()=0; 00112 00115 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00117 00118 private: 00128 BacktrackingLSAcceptor(const BacktrackingLSAcceptor&); 00129 00131 void operator=(const BacktrackingLSAcceptor&); 00133 }; 00134 00135 } // namespace Ipopt 00136 00137 #endif