Go to the documentation of this file.
9 #ifndef __IPBACKTRACKINGLINESEARCH_HPP__
10 #define __IPBACKTRACKINGLINESEARCH_HPP__
63 const std::string& prefix
152 bool skip_first_trial_point,
157 bool& evaluation_error,
213 bool& satisfies_original_criterion
virtual bool ActivateFallbackMechanism()
Activate fallback mechanism.
void operator=(const BacktrackingLineSearch &)
Default Assignment Operator.
bool fallback_activated_
Flag indicating whether the algorithm has asked to immediately switch to the fallback mechanism (rest...
Number watchdog_alpha_primal_test_
Step size for Armijo test in watch dog.
bool CurrentIsAcceptable()
Method for determining if the current iterate is acceptable (in the sense of the acceptable_tol optio...
Index watchdog_shortened_iter_trigger_
Number of shortened iterations that trigger the watchdog.
Number tiny_step_y_tol_
Tolerance for y variables for the tiny step stopping heuristic.
@ PRIMAL_AND_FULL_ALPHA_FOR_Y
bool DetectTinyStep()
Detect if the search direction is too small.
bool expect_infeasible_problem_
Indicates whether problem can be expected to be infeasible.
Index accept_after_max_steps_
Maximal number of trial steps before we blindly accept trial point.
virtual void FindAcceptableTrialPoint()
Perform the line search.
SmartPtr< RestorationPhase > resto_phase_
Index soft_resto_counter_
Counter for iteration performed in soft restoration phase in a row.
@ DUAL_AND_FULL_ALPHA_FOR_Y
bool RestoreAcceptablePoint()
Restore acceptable point into the current fields of IpData if found.
Number soft_resto_pderror_reduction_factor_
Reduction factor for the restoration phase that accepts steps reducing the optimality error ("soft re...
This file contains a base class for all exceptions and a set of macros to help with exceptions.
double Number
Type of all numbers.
SmartPtr< ConvergenceCheck > conv_check_
bool start_with_resto_
Indicates whether the algorithm should start directly with the restoration phase.
bool TrySoftRestoStep(SmartPtr< IteratesVector > &actual_delta, bool &satisfies_original_criterion)
Try a step for the soft restoration phase and check if it is acceptable.
General implementation of a backtracking line search.
Number alpha_red_factor_
factor by which search direction is to be shortened if trial point is rejected.
Base class for line search objects.
bool accept_every_trial_step_
Flag indicating whether the line search should always accept the full (fraction-to-the-boundary) step...
Number alpha_for_y_tol_
Tolerance for primal step to switch to full equality constraint multiplier steps.
Index watchdog_trial_iter_max_
Number of watch dog trial steps.
int Index
Type of all indices of vectors, matrices etc.
BacktrackingLineSearch(const SmartPtr< BacktrackingLSAcceptor > &acceptor, const SmartPtr< RestorationPhase > &resto_phase, const SmartPtr< ConvergenceCheck > &conv_check)
Constructor.
virtual void Reset()
Reset the line search.
Number expect_infeasible_problem_ytol_
Trigger tolerance on constraint multipliers.
SmartPtr< const IteratesVector > watchdog_delta_
Watchdog search direction at reference point.
Index watchdog_shortened_iter_
Counter for shortened iterations.
Template class for Smart Pointers.
bool rigorous_
Flag indicating whether the line search is to be performed robust (usually this is true,...
Index max_soft_resto_iters_
Maximal number of iterations that can be done in the soft iteration phase before the algorithm revert...
void StoreAcceptablePoint()
Store current iterate as acceptable point.
virtual void SetRigorousLineSearch(bool rigorous)
Set flag indicating whether a very rigorous line search should be performed.
SmartPtr< const IteratesVector > watchdog_iterate_
Watchdog reference iterate.
bool DoBacktrackingLineSearch(bool skip_first_trial_point, Number &alpha_primal, bool &corr_taken, bool &soc_taken, Index &n_steps, bool &evaluation_error, SmartPtr< IteratesVector > &actual_delta)
Method performing the backtracking line search.
bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
void StopWatchDog(SmartPtr< IteratesVector > &actual_delta)
Method for stopping the watch dog.
bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
@ MIN_DUAL_INFEAS_ALPHA_FOR_Y
BacktrackingLineSearch(const BacktrackingLineSearch &)
Copy Constructor.
SmartPtr< const IteratesVector > acceptable_iterate_
virtual bool CheckSkippedLineSearch()
Check if the line search procedure didn't accept a new iterate during the last call of FindAcceptable...
void StartWatchDog()
Method for starting the watch dog.
void PerformDualStep(Number alpha_primal, Number alpha_dual, SmartPtr< IteratesVector > &delta)
Method for setting the dual variables in the trial fields in IpData, given the search direction.
AlphaForYEnum
enumeration for the different alpha_for_y_ settings
AlphaForYEnum alpha_for_y_
Flag indicating whether the dual step size is to be used for the equality constraint multipliers.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
bool magic_steps_
Flag indicating whether magic steps should be used.
Number expect_infeasible_problem_ctol_
Tolerance on constraint violation for expect_infeasible_problem heuristic.
bool tiny_step_last_iteration_
Flag indicating if a tiny step was detected in previous iteration.
bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
Index watchdog_trial_iter_
Counter for watch dog iterations.
Index acceptable_iteration_number_
bool in_soft_resto_phase_
Flag indicating whether we are currently in the "soft" restoration phase mode, in which steps are acc...
bool skipped_line_search_
Flag indicating whether no acceptable trial point was found during last line search.
virtual ~BacktrackingLineSearch()
Destructor.
bool in_watchdog_
Flag indicating if the watchdog is active.
This class stores a list of user set options.
@ SAFE_MIN_DUAL_INFEAS_ALPHA_FOR_Y
Number tiny_step_tol_
Tolerance for detecting tiny steps.
Index count_successive_shortened_steps_
Counter for the number of successive iterations in which the full step was not accepted.
Number last_mu_
Barrier parameter value during last line search.
void PerformMagicStep()
Perform magic steps.
SmartPtr< BacktrackingLSAcceptor > acceptor_
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
InitializeImpl - overloaded from AlgorithmStrategyObject.