Line search acceptor, based on the Chen-Goldfarb penalty function approach.
More...
#include <IpCGPenaltyLSAcceptor.hpp>
|
| | BacktrackingLSAcceptor () |
| | Constructor. More...
|
| |
| virtual | ~BacktrackingLSAcceptor () |
| | Default destructor. More...
|
| |
| virtual Number | ComputeAlphaForY (Number alpha_primal, Number alpha_dual, SmartPtr< IteratesVector > &delta) |
| | Method for computing the step for the constraint multipliers in the line search acceptor method. More...
|
| |
| virtual bool | HasComputeAlphaForY () const |
| | Method returning true of ComputeAlphaForY is implemented for this acceptor. More...
|
| |
| | AlgorithmStrategyObject () |
| | Default Constructor. More...
|
| |
| virtual | ~AlgorithmStrategyObject () |
| | Default Destructor. More...
|
| |
| 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. More...
|
| |
| 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. More...
|
| |
| | ReferencedObject () |
| |
| virtual | ~ReferencedObject () |
| |
| Index | ReferenceCount () const |
| |
| void | AddRef (const Referencer *referencer) const |
| |
| void | ReleaseRef (const Referencer *referencer) const |
| |
| static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
| | Methods for OptionsList. More...
|
| |
| const Journalist & | Jnlst () const |
| |
| IpoptNLP & | IpNLP () const |
| |
| IpoptData & | IpData () const |
| |
| IpoptCalculatedQuantities & | IpCq () const |
| |
| bool | HaveIpData () const |
| |
Line search acceptor, based on the Chen-Goldfarb penalty function approach.
Definition at line 23 of file IpCGPenaltyLSAcceptor.hpp.
◆ CGPenaltyLSAcceptor() [1/2]
Constructor.
The PDSystemSolver object only needs to be provided (i.e. not NULL) if second order correction or corrector steps are to be used.
◆ ~CGPenaltyLSAcceptor()
| virtual Ipopt::CGPenaltyLSAcceptor::~CGPenaltyLSAcceptor |
( |
| ) |
|
|
virtual |
◆ CGPenaltyLSAcceptor() [2/2]
◆ InitializeImpl()
| virtual bool Ipopt::CGPenaltyLSAcceptor::InitializeImpl |
( |
const OptionsList & |
options, |
|
|
const std::string & |
prefix |
|
) |
| |
|
virtual |
◆ Reset()
| virtual void Ipopt::CGPenaltyLSAcceptor::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::CGPenaltyLSAcceptor::InitThisLineSearch |
( |
bool |
in_watchdog | ) |
|
|
virtual |
Initialization for the next line search.
The flag in_watchdog indicates if we are currently in an active watchdog procedure.
Implements Ipopt::BacktrackingLSAcceptor.
◆ PrepareRestoPhaseStart()
| virtual void Ipopt::CGPenaltyLSAcceptor::PrepareRestoPhaseStart |
( |
| ) |
|
|
virtual |
Method that is called before the restoration phase is called.
Here, we can set up things that are required in the termination test for the restoration phase.
Implements Ipopt::BacktrackingLSAcceptor.
◆ CalculateAlphaMin()
| virtual Number Ipopt::CGPenaltyLSAcceptor::CalculateAlphaMin |
( |
| ) |
|
|
virtual |
Method returning the lower bound on the trial step sizes.
If the backtracking procedure encounters a trial step size below this value after the first trial set, it swtiches to the (soft) restoration phase.
Implements Ipopt::BacktrackingLSAcceptor.
◆ CheckAcceptabilityOfTrialPoint()
| virtual bool Ipopt::CGPenaltyLSAcceptor::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()
Try a second order correction for the constraints.
If the first trial step (with incoming alpha_primal) has been reject, this tries up to max_soc_ second order corrections for the constraints. Here, alpha_primal_test is the step size that has to be used in the merit function acceptance tests. On output actual_delta_ has been set to the step including the second order correction if it has been accepted, otherwise it is unchanged. If the SOC step has been accepted, alpha_primal has the fraction-to-the-boundary value for the SOC step on output. The return value is true, if a SOC step has been accepted.
Implements Ipopt::BacktrackingLSAcceptor.
◆ TryCorrector()
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::CGPenaltyLSAcceptor::UpdateForNextIteration |
( |
Number |
alpha_primal_test | ) |
|
|
virtual |
Method for ending the current line search.
When it is called, the internal data should be updates, e.g., the penalty parameter might be updated. alpha_primal_test is the value of alpha that has been used for in the acceptence test ealier.
Implements Ipopt::BacktrackingLSAcceptor.
◆ StartWatchDog()
| virtual void Ipopt::CGPenaltyLSAcceptor::StartWatchDog |
( |
| ) |
|
|
virtual |
◆ StopWatchDog()
| virtual void Ipopt::CGPenaltyLSAcceptor::StopWatchDog |
( |
| ) |
|
|
virtual |
◆ RestoredIterate()
| virtual bool Ipopt::CGPenaltyLSAcceptor::RestoredIterate |
( |
| ) |
|
|
virtual |
◆ NeverRestorationPhase()
| virtual bool Ipopt::CGPenaltyLSAcceptor::NeverRestorationPhase |
( |
| ) |
|
|
virtual |
◆ DoFallback()
| virtual bool Ipopt::CGPenaltyLSAcceptor::DoFallback |
( |
| ) |
|
|
virtual |
Method for doing a fallback approach in case no search direction could be computed.
If no such fall back option is available, return false.
Reimplemented from Ipopt::BacktrackingLSAcceptor.
◆ RegisterOptions()
◆ operator=()
Overloaded Equals Operator.
◆ CGPenData()
◆ CGPenCq()
◆ IsAcceptableToPiecewisePenalty()
| bool Ipopt::CGPenaltyLSAcceptor::IsAcceptableToPiecewisePenalty |
( |
Number |
alpha_primal_test | ) |
|
|
private |
Check if the trial point is acceptable to the piecewise penalty list.
◆ ArmijoHolds()
| bool Ipopt::CGPenaltyLSAcceptor::ArmijoHolds |
( |
Number |
alpha_primal_test | ) |
|
|
private |
Check if the trial point is acceptable by the Armijo condition.
◆ Compare_le()
| static bool Ipopt::CGPenaltyLSAcceptor::Compare_le |
( |
Number |
lhs, |
|
|
Number |
rhs, |
|
|
Number |
BasVal |
|
) |
| |
|
staticprivate |
Check comparison "lhs <= rhs", using machine precision based on BasVal.
◆ CurrentIsBest()
| bool Ipopt::CGPenaltyLSAcceptor::CurrentIsBest |
( |
| ) |
|
|
private |
◆ StoreBestPoint()
| void Ipopt::CGPenaltyLSAcceptor::StoreBestPoint |
( |
| ) |
|
|
private |
◆ RestoreBestPoint()
| bool Ipopt::CGPenaltyLSAcceptor::RestoreBestPoint |
( |
| ) |
|
|
private |
◆ MultipliersDiverged()
| bool Ipopt::CGPenaltyLSAcceptor::MultipliersDiverged |
( |
| ) |
|
|
private |
◆ UpdatePenaltyParameter()
| char Ipopt::CGPenaltyLSAcceptor::UpdatePenaltyParameter |
( |
| ) |
|
|
private |
◆ eta_penalty_
| Number Ipopt::CGPenaltyLSAcceptor::eta_penalty_ |
|
private |
◆ penalty_update_infeasibility_tol_
| Number Ipopt::CGPenaltyLSAcceptor::penalty_update_infeasibility_tol_ |
|
private |
◆ eta_min_
| Number Ipopt::CGPenaltyLSAcceptor::eta_min_ |
|
private |
◆ penalty_update_compl_tol_
| Number Ipopt::CGPenaltyLSAcceptor::penalty_update_compl_tol_ |
|
private |
◆ chi_hat_
| Number Ipopt::CGPenaltyLSAcceptor::chi_hat_ |
|
private |
◆ chi_tilde_
| Number Ipopt::CGPenaltyLSAcceptor::chi_tilde_ |
|
private |
◆ chi_cup_
| Number Ipopt::CGPenaltyLSAcceptor::chi_cup_ |
|
private |
◆ gamma_hat_
| Number Ipopt::CGPenaltyLSAcceptor::gamma_hat_ |
|
private |
◆ gamma_tilde_
| Number Ipopt::CGPenaltyLSAcceptor::gamma_tilde_ |
|
private |
◆ penalty_max_
| Number Ipopt::CGPenaltyLSAcceptor::penalty_max_ |
|
private |
◆ epsilon_c_
| Number Ipopt::CGPenaltyLSAcceptor::epsilon_c_ |
|
private |
◆ piecewisepenalty_gamma_obj_
| Number Ipopt::CGPenaltyLSAcceptor::piecewisepenalty_gamma_obj_ |
|
private |
◆ piecewisepenalty_gamma_infeasi_
| Number Ipopt::CGPenaltyLSAcceptor::piecewisepenalty_gamma_infeasi_ |
|
private |
◆ pen_theta_max_
| Number Ipopt::CGPenaltyLSAcceptor::pen_theta_max_ |
|
private |
◆ pen_theta_max_fact_
| Number Ipopt::CGPenaltyLSAcceptor::pen_theta_max_fact_ |
|
private |
◆ pen_curr_mu_
| Number Ipopt::CGPenaltyLSAcceptor::pen_curr_mu_ |
|
private |
◆ theta_min_
| Number Ipopt::CGPenaltyLSAcceptor::theta_min_ |
|
private |
◆ accepted_by_Armijo_
| bool Ipopt::CGPenaltyLSAcceptor::accepted_by_Armijo_ |
|
private |
Flag indicating whether the trial point is accepted by the Armijo condition or the PLPF condition.
Definition at line 217 of file IpCGPenaltyLSAcceptor.hpp.
◆ min_alpha_primal_
| Number Ipopt::CGPenaltyLSAcceptor::min_alpha_primal_ |
|
private |
◆ reference_theta_
| Number Ipopt::CGPenaltyLSAcceptor::reference_theta_ |
|
private |
◆ max_soc_
| Index Ipopt::CGPenaltyLSAcceptor::max_soc_ |
|
private |
◆ kappa_soc_
| Number Ipopt::CGPenaltyLSAcceptor::kappa_soc_ |
|
private |
Required reduction in constraint violation before trying multiple second order correction steps
.
Definition at line 231 of file IpCGPenaltyLSAcceptor.hpp.
◆ counter_first_type_penalty_updates_
| Index Ipopt::CGPenaltyLSAcceptor::counter_first_type_penalty_updates_ |
|
private |
◆ counter_second_type_penalty_updates_
| Index Ipopt::CGPenaltyLSAcceptor::counter_second_type_penalty_updates_ |
|
private |
◆ curr_eta_
| Number Ipopt::CGPenaltyLSAcceptor::curr_eta_ |
|
private |
◆ ls_counter_
| Index Ipopt::CGPenaltyLSAcceptor::ls_counter_ |
|
private |
◆ best_KKT_error_
| Number Ipopt::CGPenaltyLSAcceptor::best_KKT_error_ |
|
private |
◆ best_iterate_
◆ mult_diverg_feasibility_tol_
| Number Ipopt::CGPenaltyLSAcceptor::mult_diverg_feasibility_tol_ |
|
private |
◆ mult_diverg_y_tol_
| Number Ipopt::CGPenaltyLSAcceptor::mult_diverg_y_tol_ |
|
private |
◆ reference_penalty_function_
| Number Ipopt::CGPenaltyLSAcceptor::reference_penalty_function_ |
|
private |
◆ reference_direct_deriv_penalty_function_
| Number Ipopt::CGPenaltyLSAcceptor::reference_direct_deriv_penalty_function_ |
|
private |
Directional derivative of penalty function at the point with respect to which progress is to be made.
Definition at line 256 of file IpCGPenaltyLSAcceptor.hpp.
◆ reference_curr_direct_f_nrm_
| Number Ipopt::CGPenaltyLSAcceptor::reference_curr_direct_f_nrm_ |
|
private |
◆ watchdog_penalty_function_
| Number Ipopt::CGPenaltyLSAcceptor::watchdog_penalty_function_ |
|
private |
Penalty function at the point with respect to which progress is to be made (at watchdog point)
Definition at line 260 of file IpCGPenaltyLSAcceptor.hpp.
◆ watchdog_direct_deriv_penalty_function_
| Number Ipopt::CGPenaltyLSAcceptor::watchdog_direct_deriv_penalty_function_ |
|
private |
Directional derivative of penalty function at the point with respect to which progress is to be made (at watchdog point)
Definition at line 263 of file IpCGPenaltyLSAcceptor.hpp.
◆ watchdog_delta_cgpen_
Backup for the Chen-Goldfarb search direction (needed in the update rule for the penalty parameter.
Definition at line 266 of file IpCGPenaltyLSAcceptor.hpp.
◆ never_use_piecewise_penalty_ls_
| bool Ipopt::CGPenaltyLSAcceptor::never_use_piecewise_penalty_ls_ |
|
private |
◆ PiecewisePenalty_
◆ reset_piecewise_penalty_
| bool Ipopt::CGPenaltyLSAcceptor::reset_piecewise_penalty_ |
|
private |
◆ jump_for_tiny_step_
| Index Ipopt::CGPenaltyLSAcceptor::jump_for_tiny_step_ |
|
private |
◆ pd_solver_
The documentation for this class was generated from the following file: