Penalty function line search for the inexact step algorithm version. More...
#include <IpInexactLSAcceptor.hpp>
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 | |
InexactData & | InexData () |
Method to easily access Inexact data. | |
InexactCq & | InexCq () |
Method to easily access Inexact calculated quantities. | |
Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
const Journalist & | Jnlst () const |
IpoptNLP & | IpNLP () const |
IpoptData & | IpData () const |
IpoptCalculatedQuantities & | IpCq () 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. | |
Penalty function line search for the inexact step algorithm version.
Definition at line 20 of file IpInexactLSAcceptor.hpp.
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.
|
virtual |
Destructor.
|
private |
Copy Constructor.
|
virtual |
Implementation of the initialization method that has to be overloaded by for each derived class.
Implements Ipopt::BacktrackingLSAcceptor.
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.
Initialization for the next line search.
Here is where the penalty parameter is updated.
in_watchdog | indicates if we are currently in an active watchdog procedure |
Implements Ipopt::BacktrackingLSAcceptor.
Method that is called before the restoration phase is called.
For now, we just terminate if this is called.
Implements Ipopt::BacktrackingLSAcceptor.
Method returning the lower bound on the trial step sizes.
Implements Ipopt::BacktrackingLSAcceptor.
|
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.
|
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.
|
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.
Method for ending the current line search.
When it is called, the internal data should be updates.
alpha_primal_test | the value of alpha that has been used for in the acceptance test earlier. |
Implements Ipopt::BacktrackingLSAcceptor.
Method for setting internal data if the watchdog procedure is started.
Implements Ipopt::BacktrackingLSAcceptor.
Method for setting internal data if the watchdog procedure is stopped.
Implements Ipopt::BacktrackingLSAcceptor.
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.
|
virtual |
Method for updating the equality constraint multipliers.
Reimplemented from Ipopt::BacktrackingLSAcceptor.
Method returning true of ComputeAlphaForY is implemented for this acceptor.
Reimplemented from Ipopt::BacktrackingLSAcceptor.
Definition at line 150 of file IpInexactLSAcceptor.hpp.
|
static |
Methods for OptionsList.
|
inlineprotected |
Method to easily access Inexact data.
Definition at line 164 of file IpInexactLSAcceptor.hpp.
|
inlineprotected |
Method to easily access Inexact calculated quantities.
Definition at line 172 of file IpInexactLSAcceptor.hpp.
|
private |
Overloaded Assignment Operator.
Compute predicted reduction for given step size.
|
private |
Method for resetting the slacks to be satisfying the slack equality constraints without increasing the barrier function.
|
private |
Initial value of penalty parameter.
Definition at line 215 of file IpInexactLSAcceptor.hpp.
|
private |
Initial value of lower penalty parameter.
Definition at line 217 of file IpInexactLSAcceptor.hpp.
|
private |
Factor in update rule for lower penalty parameter.
Definition at line 219 of file IpInexactLSAcceptor.hpp.
|
private |
Increment for penalty parameter.
Definition at line 221 of file IpInexactLSAcceptor.hpp.
|
private |
\( \eta_{\varphi} \)
Definition at line 223 of file IpInexactLSAcceptor.hpp.
|
private |
\( \rho \)
Definition at line 225 of file IpInexactLSAcceptor.hpp.
|
private |
theta factor in Tangential Component Condition
Definition at line 227 of file IpInexactLSAcceptor.hpp.
|
private |
Lower feasibility bound to skip penalty parameter update.
Definition at line 229 of file IpInexactLSAcceptor.hpp.
|
private |
Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.
Definition at line 232 of file IpInexactLSAcceptor.hpp.
|
private |
Constraint violation at the point with respect to which progress is to be made.
Definition at line 239 of file IpInexactLSAcceptor.hpp.
|
private |
Barrier objective function at the point with respect to which progress is to be made.
Definition at line 242 of file IpInexactLSAcceptor.hpp.
|
private |
Reference predicted reduction.
If positive, then it is used in watch dog.
Definition at line 245 of file IpInexactLSAcceptor.hpp.
|
private |
Constraint violation at reference point.
Definition at line 247 of file IpInexactLSAcceptor.hpp.
|
private |
Barrier objective function at reference point.
Definition at line 249 of file IpInexactLSAcceptor.hpp.
|
private |
Predicted reduction to be compared with in watch dog.
Definition at line 251 of file IpInexactLSAcceptor.hpp.
|
private |
Current value of the penalty parameter.
Definition at line 257 of file IpInexactLSAcceptor.hpp.
|
private |
Value of penalty parameter at beginning of the iteration.
Definition at line 259 of file IpInexactLSAcceptor.hpp.
|
private |
Current lower value of the penalty parameter.
Definition at line 261 of file IpInexactLSAcceptor.hpp.
|
private |
Value of lower penalty parameter at beginning of the iteration.
Definition at line 263 of file IpInexactLSAcceptor.hpp.
|
private |
Step size threshold for activating step decomposition.
Definition at line 265 of file IpInexactLSAcceptor.hpp.
|
private |
Step size threshold for inactivating step decomposition.
Definition at line 267 of file IpInexactLSAcceptor.hpp.
|
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.
|
private |
When called from the restoration phase, this is the required predicted reduction.
Definition at line 279 of file IpInexactLSAcceptor.hpp.
|
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.