Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpInexactLSAcceptor.hpp
Go to the documentation of this file.
1// Copyright (C) 2008 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Authors: Andreas Waechter IBM 2008-09-11
6// derived file from IpPenaltyLSAcceptor.hpp (rev 019)
7
8#ifndef __IPINEXACTLSACCEPTOR_HPP__
9#define __IPINEXACTLSACCEPTOR_HPP__
10
12#include "IpInexactCq.hpp"
13
14namespace Ipopt
15{
16
21{
22public:
25
32
36
37 virtual bool InitializeImpl(
38 const OptionsList& options,
39 const std::string& prefix
40 );
41
49 virtual void Reset();
50
57 virtual void InitThisLineSearch(
58 bool in_watchdog
59 );
60
65 virtual void PrepareRestoPhaseStart();
66
69
77 Number alpha_primal
78 );
79
86 Number alpha_primal_test,
87 Number& alpha_primal,
88 SmartPtr<IteratesVector>& actual_delta
89 );
90
98 virtual bool TryCorrector(
99 Number alpha_primal_test,
100 Number& alpha_primal,
101 SmartPtr<IteratesVector>& actual_delta
102 );
103
112 Number alpha_primal_test
113 );
114
118 virtual void StartWatchDog();
119
123 virtual void StopWatchDog();
124
132
134 Number trial_barr,
135 Number trial_theta,
136 bool called_from_restoration = false
137 ) const;
139
142 Number alpha_primal,
143 Number alpha_dual,
145 );
146
150 virtual bool HasComputeAlphaForY() const
151 {
152 return true;
153 }
154
157 static void RegisterOptions(
159 );
161
162protected:
165 {
166 InexactData& inexact_data = static_cast<InexactData&>(IpData().AdditionalData());
167 DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
168 return inexact_data;
169 }
170
173 {
174 InexactCq& inexact_cq = static_cast<InexactCq&>(IpCq().AdditionalCq());
175 DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
176 return inexact_cq;
177 }
178
179private:
190
192 const InexactLSAcceptor&
193 );
194
197 const InexactLSAcceptor&
198 );
200
203 Number alpha
204 );
205
211
214
234
237
253
256
269
275
280
287};
288
289} // namespace Ipopt
290
291#endif
#define DBG_ASSERT(test)
Definition IpDebug.hpp:27
IpoptCalculatedQuantities & IpCq() const
Base class for backtracking line search acceptors.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
Penalty function line search for the inexact step algorithm version.
InexactLSAcceptor(const InexactLSAcceptor &)
Copy Constructor.
virtual char UpdateForNextIteration(Number alpha_primal_test)
Method for ending the current line search.
virtual void Reset()
Reset the acceptor.
Number nu_update_inf_skip_tol_
Lower feasibility bound to skip penalty parameter update.
Number reference_theta_
Constraint violation at the point with respect to which progress is to be made.
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 InitThisLineSearch(bool in_watchdog)
Initialization for the next line search.
Number reference_barr_
Barrier objective function at the point with respect to which progress is to be made.
void operator=(const InexactLSAcceptor &)
Overloaded Assignment Operator.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
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.
Number reference_pred_
Reference predicted reduction.
virtual bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
Number nu_low_init_
Initial value of lower penalty parameter.
bool in_tt2_
Flag indicating if this is a termination test 2 iteration in which we just update the multipliers and...
Number nu_inc_
Increment for penalty parameter.
void ResetSlacks()
Method for resetting the slacks to be satisfying the slack equality constraints without increasing th...
Number inexact_decomposition_activate_tol_
Step size threshold for activating step decomposition.
Number inexact_decomposition_inactivate_tol_
Step size threshold for inactivating step decomposition.
Number nu_low_
Current lower value of the penalty parameter.
InexactData & InexData()
Method to easily access Inexact data.
virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
virtual Number CalculateAlphaMin()
Method returning the lower bound on the trial step sizes.
virtual Number ComputeAlphaForY(Number alpha_primal, Number alpha_dual, SmartPtr< IteratesVector > &delta)
Method for updating the equality constraint multipliers.
Number watchdog_barr_
Barrier objective function at reference point.
bool flexible_penalty_function_
Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.
virtual void StartWatchDog()
Method for setting internal data if the watchdog procedure is started.
InexactLSAcceptor()
Constructor.
virtual bool HasComputeAlphaForY() const
Method returning true of ComputeAlphaForY is implemented for this acceptor.
bool accepted_by_low_only_
Flag indicating if the step was accepted only because of the lower penalty parameter.
Number watchdog_pred_
Predicted reduction to be compared with in watch dog.
Number nu_low_fact_
Factor in update rule for lower penalty parameter.
virtual ~InexactLSAcceptor()
Destructor.
Number CalcPred(Number alpha)
Compute predicted reduction for given step size.
Number nu_init_
Initial value of penalty parameter.
Number tcc_theta_
theta factor in Tangential Component Condition
Number resto_pred_
When called from the restoration phase, this is the required predicted reduction.
Number last_nu_
Value of penalty parameter at beginning of the iteration.
Number nu_
Current value of the penalty parameter.
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
Number watchdog_theta_
Constraint violation at reference point.
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
virtual void PrepareRestoPhaseStart()
Method that is called before the restoration phase is called.
Number last_nu_low_
Value of lower penalty parameter at beginning of the iteration.
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
This class stores a list of user set options.
Template class for Smart Pointers.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17