Ipopt Documentation  
 
Loading...
Searching...
No Matches
Ipopt::InexactLSAcceptor Class Reference

Penalty function line search for the inexact step algorithm version. More...

#include <IpInexactLSAcceptor.hpp>

+ Inheritance diagram for Ipopt::InexactLSAcceptor:

Public Member Functions

virtual bool InitializeImpl (const OptionsList &options, const std::string &prefix)
 Implementation of the initialization method that has to be overloaded by for each derived class.
 
virtual void Reset ()
 Reset the acceptor.
 
virtual void InitThisLineSearch (bool in_watchdog)
 Initialization for the next line search.
 
virtual void PrepareRestoPhaseStart ()
 Method that is called before the restoration phase is called.
 
virtual Number CalculateAlphaMin ()
 Method returning the lower bound on the trial step sizes.
 
virtual bool CheckAcceptabilityOfTrialPoint (Number alpha_primal)
 Method for checking if current trial point is acceptable.
 
virtual bool TrySecondOrderCorrection (Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
 Try a second order correction for the constraints.
 
virtual bool TryCorrector (Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
 Try higher order corrector (for fast local convergence).
 
virtual char UpdateForNextIteration (Number alpha_primal_test)
 Method for ending the current line search.
 
virtual void StartWatchDog ()
 Method for setting internal data if the watchdog procedure is started.
 
virtual void StopWatchDog ()
 Method for setting internal data if the watchdog procedure is stopped.
 
virtual Number ComputeAlphaForY (Number alpha_primal, Number alpha_dual, SmartPtr< IteratesVector > &delta)
 Method for updating the equality constraint multipliers.
 
virtual bool HasComputeAlphaForY () const
 Method returning true of ComputeAlphaForY is implemented for this acceptor.
 
Constructors/Destructors
 InexactLSAcceptor ()
 Constructor.
 
virtual ~InexactLSAcceptor ()
 Destructor.
 
Trial Point Accepting Methods.

Used internally to check certain acceptability criteria and used externally (by the restoration phase convergence check object, for instance)

bool IsAcceptableToCurrentIterate (Number trial_barr, Number trial_theta, bool called_from_restoration=false) const
 Checks if a trial point is acceptable to the current iterate.
 
- Public Member Functions inherited from Ipopt::BacktrackingLSAcceptor
virtual bool RestoredIterate ()
 Method for telling the BacktrackingLineSearch object that a previous iterate has been restored.
 
virtual bool NeverRestorationPhase ()
 Method called by BacktrackingLineSearch object to determine whether the restoration phase should never be called.
 
virtual bool DoFallback ()
 Method for doing a fallback approach in case no search direction could be computed.
 
 BacktrackingLSAcceptor ()
 Constructor.
 
virtual ~BacktrackingLSAcceptor ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::AlgorithmStrategyObject
bool Initialize (const Journalist &jnlst, IpoptNLP &ip_nlp, IpoptData &ip_data, IpoptCalculatedQuantities &ip_cq, const OptionsList &options, const std::string &prefix)
 This method is called every time the algorithm starts again - it is used to reset any internal state.
 
bool ReducedInitialize (const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
 Reduced version of the Initialize method, which does not require special Ipopt information.
 
 AlgorithmStrategyObject ()
 Default Constructor.
 
virtual ~AlgorithmStrategyObject ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::ReferencedObject
 ReferencedObject ()
 
virtual ~ReferencedObject ()
 
Index ReferenceCount () const
 
void AddRef (const Referencer *referencer) const
 
void ReleaseRef (const Referencer *referencer) const
 

Static Public Member Functions

static void RegisterOptions (SmartPtr< RegisteredOptions > roptions)
 Methods for OptionsList.
 
- Static Public Member Functions inherited from Ipopt::BacktrackingLSAcceptor
static void RegisterOptions (SmartPtr< RegisteredOptions > roptions)
 Methods for OptionsList.
 

Protected Member Functions

InexactDataInexData ()
 Method to easily access Inexact data.
 
InexactCqInexCq ()
 Method to easily access Inexact calculated quantities.
 
- Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject
const JournalistJnlst () const
 
IpoptNLPIpNLP () const
 
IpoptDataIpData () const
 
IpoptCalculatedQuantitiesIpCq () const
 
bool HaveIpData () const
 

Private Member Functions

Number CalcPred (Number alpha)
 Compute predicted reduction for given step size.
 
void ResetSlacks ()
 Method for resetting the slacks to be satisfying the slack equality constraints without increasing the barrier function.
 
Default Compiler Generated Methods

(Hidden to avoid implicit creation/calling).

These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.

 InexactLSAcceptor (const InexactLSAcceptor &)
 Copy Constructor.
 
void operator= (const InexactLSAcceptor &)
 Overloaded Assignment Operator.
 

Private Attributes

bool in_tt2_
 Flag indicating if this is a termination test 2 iteration in which we just update the multipliers and skip the line search.
 
Number resto_pred_
 When called from the restoration phase, this is the required predicted reduction.
 
bool accepted_by_low_only_
 Flag indicating if the step was accepted only because of the lower penalty parameter.
 
Parameters for the penalty function algorithm.
Number nu_init_
 Initial value of penalty parameter.
 
Number nu_low_init_
 Initial value of lower penalty parameter.
 
Number nu_low_fact_
 Factor in update rule for lower penalty parameter.
 
Number nu_inc_
 Increment for penalty parameter.
 
Number eta_
 \( \eta_{\varphi} \)
 
Number rho_
 \( \rho \)
 
Number tcc_theta_
 theta factor in Tangential Component Condition
 
Number nu_update_inf_skip_tol_
 Lower feasibility bound to skip penalty parameter update.
 
bool flexible_penalty_function_
 Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.
 
Information related to watchdog procedure
Number reference_theta_
 Constraint violation at the point with respect to which progress is to be made.
 
Number reference_barr_
 Barrier objective function at the point with respect to which progress is to be made.
 
Number reference_pred_
 Reference predicted reduction.
 
Number watchdog_theta_
 Constraint violation at reference point.
 
Number watchdog_barr_
 Barrier objective function at reference point.
 
Number watchdog_pred_
 Predicted reduction to be compared with in watch dog.
 
Penalty parameter
Number nu_
 Current value of the penalty parameter.
 
Number last_nu_
 Value of penalty parameter at beginning of the iteration.
 
Number nu_low_
 Current lower value of the penalty parameter.
 
Number last_nu_low_
 Value of lower penalty parameter at beginning of the iteration.
 
Number inexact_decomposition_activate_tol_
 Step size threshold for activating step decomposition.
 
Number inexact_decomposition_inactivate_tol_
 Step size threshold for inactivating step decomposition.
 

Detailed Description

Penalty function line search for the inexact step algorithm version.

Definition at line 20 of file IpInexactLSAcceptor.hpp.

Constructor & Destructor Documentation

◆ InexactLSAcceptor() [1/2]

Ipopt::InexactLSAcceptor::InexactLSAcceptor ( )

Constructor.

The PDSystemSolver object only needs to be provided (i.e. not NULL) if second order correction or corrector steps are to be used.

◆ ~InexactLSAcceptor()

virtual Ipopt::InexactLSAcceptor::~InexactLSAcceptor ( )
virtual

Destructor.

◆ InexactLSAcceptor() [2/2]

Ipopt::InexactLSAcceptor::InexactLSAcceptor ( const InexactLSAcceptor )
private

Copy Constructor.

Member Function Documentation

◆ InitializeImpl()

virtual bool Ipopt::InexactLSAcceptor::InitializeImpl ( const OptionsList options,
const std::string &  prefix 
)
virtual

Implementation of the initialization method that has to be overloaded by for each derived class.

Implements Ipopt::BacktrackingLSAcceptor.

◆ Reset()

virtual void Ipopt::InexactLSAcceptor::Reset ( )
virtual

Reset the acceptor.

This function should be called if all previous information should be discarded when the line search is performed the next time. For example, this method should be called if the barrier parameter is changed.

Implements Ipopt::BacktrackingLSAcceptor.

◆ InitThisLineSearch()

virtual void Ipopt::InexactLSAcceptor::InitThisLineSearch ( bool  in_watchdog)
virtual

Initialization for the next line search.

Here is where the penalty parameter is updated.

Parameters
in_watchdogindicates if we are currently in an active watchdog procedure

Implements Ipopt::BacktrackingLSAcceptor.

◆ PrepareRestoPhaseStart()

virtual void Ipopt::InexactLSAcceptor::PrepareRestoPhaseStart ( )
virtual

Method that is called before the restoration phase is called.

For now, we just terminate if this is called.

Implements Ipopt::BacktrackingLSAcceptor.

◆ CalculateAlphaMin()

virtual Number Ipopt::InexactLSAcceptor::CalculateAlphaMin ( )
virtual

Method returning the lower bound on the trial step sizes.

Implements Ipopt::BacktrackingLSAcceptor.

◆ CheckAcceptabilityOfTrialPoint()

virtual bool Ipopt::InexactLSAcceptor::CheckAcceptabilityOfTrialPoint ( Number  alpha_primal)
virtual

Method for checking if current trial point is acceptable.

It is assumed that the delta information in ip_data is the search direction used in criteria. The primal trial point has to be set before the call.

Implements Ipopt::BacktrackingLSAcceptor.

◆ TrySecondOrderCorrection()

virtual bool Ipopt::InexactLSAcceptor::TrySecondOrderCorrection ( Number  alpha_primal_test,
Number alpha_primal,
SmartPtr< IteratesVector > &  actual_delta 
)
virtual

Try a second order correction for the constraints.

For the inexact version, this always returns false because a second order step is too expensive.

Implements Ipopt::BacktrackingLSAcceptor.

◆ TryCorrector()

virtual bool Ipopt::InexactLSAcceptor::TryCorrector ( Number  alpha_primal_test,
Number alpha_primal,
SmartPtr< IteratesVector > &  actual_delta 
)
virtual

Try higher order corrector (for fast local convergence).

In contrast to a second order correction step, which tries to make an unacceptable point acceptable by improving constraint violation, this corrector step is tried even if the regular primal-dual step is acceptable.

Implements Ipopt::BacktrackingLSAcceptor.

◆ UpdateForNextIteration()

virtual char Ipopt::InexactLSAcceptor::UpdateForNextIteration ( Number  alpha_primal_test)
virtual

Method for ending the current line search.

When it is called, the internal data should be updates.

Parameters
alpha_primal_testthe value of alpha that has been used for in the acceptance test earlier.

Implements Ipopt::BacktrackingLSAcceptor.

◆ StartWatchDog()

virtual void Ipopt::InexactLSAcceptor::StartWatchDog ( )
virtual

Method for setting internal data if the watchdog procedure is started.

Implements Ipopt::BacktrackingLSAcceptor.

◆ StopWatchDog()

virtual void Ipopt::InexactLSAcceptor::StopWatchDog ( )
virtual

Method for setting internal data if the watchdog procedure is stopped.

Implements Ipopt::BacktrackingLSAcceptor.

◆ IsAcceptableToCurrentIterate()

bool Ipopt::InexactLSAcceptor::IsAcceptableToCurrentIterate ( Number  trial_barr,
Number  trial_theta,
bool  called_from_restoration = false 
) const

Checks if a trial point is acceptable to the current iterate.

◆ ComputeAlphaForY()

virtual Number Ipopt::InexactLSAcceptor::ComputeAlphaForY ( Number  alpha_primal,
Number  alpha_dual,
SmartPtr< IteratesVector > &  delta 
)
virtual

Method for updating the equality constraint multipliers.

Reimplemented from Ipopt::BacktrackingLSAcceptor.

◆ HasComputeAlphaForY()

virtual bool Ipopt::InexactLSAcceptor::HasComputeAlphaForY ( ) const
inlinevirtual

Method returning true of ComputeAlphaForY is implemented for this acceptor.

Reimplemented from Ipopt::BacktrackingLSAcceptor.

Definition at line 150 of file IpInexactLSAcceptor.hpp.

◆ RegisterOptions()

static void Ipopt::InexactLSAcceptor::RegisterOptions ( SmartPtr< RegisteredOptions roptions)
static

Methods for OptionsList.

◆ InexData()

InexactData & Ipopt::InexactLSAcceptor::InexData ( )
inlineprotected

Method to easily access Inexact data.

Definition at line 164 of file IpInexactLSAcceptor.hpp.

◆ InexCq()

InexactCq & Ipopt::InexactLSAcceptor::InexCq ( )
inlineprotected

Method to easily access Inexact calculated quantities.

Definition at line 172 of file IpInexactLSAcceptor.hpp.

◆ operator=()

void Ipopt::InexactLSAcceptor::operator= ( const InexactLSAcceptor )
private

Overloaded Assignment Operator.

◆ CalcPred()

Number Ipopt::InexactLSAcceptor::CalcPred ( Number  alpha)
private

Compute predicted reduction for given step size.

◆ ResetSlacks()

void Ipopt::InexactLSAcceptor::ResetSlacks ( )
private

Method for resetting the slacks to be satisfying the slack equality constraints without increasing the barrier function.

Member Data Documentation

◆ nu_init_

Number Ipopt::InexactLSAcceptor::nu_init_
private

Initial value of penalty parameter.

Definition at line 215 of file IpInexactLSAcceptor.hpp.

◆ nu_low_init_

Number Ipopt::InexactLSAcceptor::nu_low_init_
private

Initial value of lower penalty parameter.

Definition at line 217 of file IpInexactLSAcceptor.hpp.

◆ nu_low_fact_

Number Ipopt::InexactLSAcceptor::nu_low_fact_
private

Factor in update rule for lower penalty parameter.

Definition at line 219 of file IpInexactLSAcceptor.hpp.

◆ nu_inc_

Number Ipopt::InexactLSAcceptor::nu_inc_
private

Increment for penalty parameter.

Definition at line 221 of file IpInexactLSAcceptor.hpp.

◆ eta_

Number Ipopt::InexactLSAcceptor::eta_
private

\( \eta_{\varphi} \)

Definition at line 223 of file IpInexactLSAcceptor.hpp.

◆ rho_

Number Ipopt::InexactLSAcceptor::rho_
private

\( \rho \)

Definition at line 225 of file IpInexactLSAcceptor.hpp.

◆ tcc_theta_

Number Ipopt::InexactLSAcceptor::tcc_theta_
private

theta factor in Tangential Component Condition

Definition at line 227 of file IpInexactLSAcceptor.hpp.

◆ nu_update_inf_skip_tol_

Number Ipopt::InexactLSAcceptor::nu_update_inf_skip_tol_
private

Lower feasibility bound to skip penalty parameter update.

Definition at line 229 of file IpInexactLSAcceptor.hpp.

◆ flexible_penalty_function_

bool Ipopt::InexactLSAcceptor::flexible_penalty_function_
private

Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.

Definition at line 232 of file IpInexactLSAcceptor.hpp.

◆ reference_theta_

Number Ipopt::InexactLSAcceptor::reference_theta_
private

Constraint violation at the point with respect to which progress is to be made.

Definition at line 239 of file IpInexactLSAcceptor.hpp.

◆ reference_barr_

Number Ipopt::InexactLSAcceptor::reference_barr_
private

Barrier objective function at the point with respect to which progress is to be made.

Definition at line 242 of file IpInexactLSAcceptor.hpp.

◆ reference_pred_

Number Ipopt::InexactLSAcceptor::reference_pred_
private

Reference predicted reduction.

If positive, then it is used in watch dog.

Definition at line 245 of file IpInexactLSAcceptor.hpp.

◆ watchdog_theta_

Number Ipopt::InexactLSAcceptor::watchdog_theta_
private

Constraint violation at reference point.

Definition at line 247 of file IpInexactLSAcceptor.hpp.

◆ watchdog_barr_

Number Ipopt::InexactLSAcceptor::watchdog_barr_
private

Barrier objective function at reference point.

Definition at line 249 of file IpInexactLSAcceptor.hpp.

◆ watchdog_pred_

Number Ipopt::InexactLSAcceptor::watchdog_pred_
private

Predicted reduction to be compared with in watch dog.

Definition at line 251 of file IpInexactLSAcceptor.hpp.

◆ nu_

Number Ipopt::InexactLSAcceptor::nu_
private

Current value of the penalty parameter.

Definition at line 257 of file IpInexactLSAcceptor.hpp.

◆ last_nu_

Number Ipopt::InexactLSAcceptor::last_nu_
private

Value of penalty parameter at beginning of the iteration.

Definition at line 259 of file IpInexactLSAcceptor.hpp.

◆ nu_low_

Number Ipopt::InexactLSAcceptor::nu_low_
private

Current lower value of the penalty parameter.

Definition at line 261 of file IpInexactLSAcceptor.hpp.

◆ last_nu_low_

Number Ipopt::InexactLSAcceptor::last_nu_low_
private

Value of lower penalty parameter at beginning of the iteration.

Definition at line 263 of file IpInexactLSAcceptor.hpp.

◆ inexact_decomposition_activate_tol_

Number Ipopt::InexactLSAcceptor::inexact_decomposition_activate_tol_
private

Step size threshold for activating step decomposition.

Definition at line 265 of file IpInexactLSAcceptor.hpp.

◆ inexact_decomposition_inactivate_tol_

Number Ipopt::InexactLSAcceptor::inexact_decomposition_inactivate_tol_
private

Step size threshold for inactivating step decomposition.

Definition at line 267 of file IpInexactLSAcceptor.hpp.

◆ in_tt2_

bool Ipopt::InexactLSAcceptor::in_tt2_
private

Flag indicating if this is a termination test 2 iteration in which we just update the multipliers and skip the line search.

Definition at line 274 of file IpInexactLSAcceptor.hpp.

◆ resto_pred_

Number Ipopt::InexactLSAcceptor::resto_pred_
private

When called from the restoration phase, this is the required predicted reduction.

Definition at line 279 of file IpInexactLSAcceptor.hpp.

◆ accepted_by_low_only_

bool Ipopt::InexactLSAcceptor::accepted_by_low_only_
private

Flag indicating if the step was accepted only because of the lower penalty parameter.

This is for output only.

Definition at line 286 of file IpInexactLSAcceptor.hpp.


The documentation for this class was generated from the following file: