Ipopt
3.11.4
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
src
contrib
CGPenalty
IpCGPenaltyLSAcceptor.hpp
Go to the documentation of this file.
1
// Copyright (C) 2005, 2008 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpCGPenaltyLSAcceptor.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2005-10-13
8
9
#ifndef __IPCGPENALTYLSACCEPTOR_HPP__
10
#define __IPCGPENALTYLSACCEPTOR_HPP__
11
12
#include "
IpPiecewisePenalty.hpp
"
13
#include "
IpBacktrackingLSAcceptor.hpp
"
14
#include "
IpPDSystemSolver.hpp
"
15
#include "
IpIpoptAlg.hpp
"
16
#include "
IpCGPenaltyCq.hpp
"
17
18
namespace
Ipopt
19
{
20
23
class
CGPenaltyLSAcceptor
:
public
BacktrackingLSAcceptor
24
{
25
public
:
31
CGPenaltyLSAcceptor
(
const
SmartPtr<PDSystemSolver>
& pd_solver);
32
34
virtual
~CGPenaltyLSAcceptor
();
36
38
virtual
bool
InitializeImpl
(
const
OptionsList
& options,
39
const
std::string& prefix);
40
47
virtual
void
Reset
();
48
52
virtual
void
InitThisLineSearch
(
bool
in_watchdog);
53
57
virtual
void
PrepareRestoPhaseStart
();
58
63
virtual
Number
CalculateAlphaMin
();
64
70
virtual
bool
CheckAcceptabilityOfTrialPoint
(
Number
alpha_primal);
71
84
virtual
bool
TrySecondOrderCorrection
(
Number
alpha_primal_test,
85
Number
& alpha_primal,
86
SmartPtr<IteratesVector>
& actual_delta);
87
94
virtual
bool
TryCorrector
(
Number
alpha_primal_test,
95
Number
& alpha_primal,
96
SmartPtr<IteratesVector>
& actual_delta);
97
102
virtual
char
UpdateForNextIteration
(
Number
alpha_primal_test);
103
106
virtual
void
StartWatchDog
();
107
110
virtual
void
StopWatchDog
();
111
114
virtual
bool
RestoredIterate
();
117
virtual
bool
NeverRestorationPhase
();
118
122
virtual
bool
DoFallback
();
123
126
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
128
129
private
:
139
CGPenaltyLSAcceptor
(
const
CGPenaltyLSAcceptor
&);
140
142
void
operator=
(
const
CGPenaltyLSAcceptor
&);
144
146
CGPenaltyData
&
CGPenData
()
147
{
148
CGPenaltyData
& cg_pen_data =
149
static_cast<
CGPenaltyData
&
>
(
IpData
().
AdditionalData
());
150
DBG_ASSERT
(dynamic_cast<CGPenaltyData*>(&
IpData
().AdditionalData()));
151
return
cg_pen_data;
152
}
153
155
CGPenaltyCq
&
CGPenCq
()
156
{
157
CGPenaltyCq
& cg_pen_cq =
158
static_cast<
CGPenaltyCq
&
>
(
IpCq
().
AdditionalCq
());
159
DBG_ASSERT
(dynamic_cast<CGPenaltyCq*>(&
IpCq
().AdditionalCq()));
160
return
cg_pen_cq;
161
}
162
164
bool
IsAcceptableToPiecewisePenalty
(
Number
alpha_primal_test);
165
167
bool
ArmijoHolds
(
Number
alpha_primal_test);
168
170
//ToDo This should probably not be a static member function if we want to
171
// allow for different relaxation parameters values
172
static
bool
Compare_le
(
Number
lhs,
Number
rhs,
Number
BasVal);
173
174
bool
CurrentIsBest
();
175
void
StoreBestPoint
();
176
bool
RestoreBestPoint
();
177
bool
MultipliersDiverged
();
178
char
UpdatePenaltyParameter
();
179
183
Number
eta_penalty_
;
186
Number
penalty_update_infeasibility_tol_
;
189
Number
eta_min_
;
192
Number
penalty_update_compl_tol_
;
193
Number
chi_hat_
;
194
Number
chi_tilde_
;
195
Number
chi_cup_
;
196
Number
gamma_hat_
;
197
Number
gamma_tilde_
;
198
Number
penalty_max_
;
199
Number
epsilon_c_
;
201
Number
piecewisepenalty_gamma_obj_
;
202
Number
piecewisepenalty_gamma_infeasi_
;
204
205
Number
pen_theta_max_
;
206
Number
pen_theta_max_fact_
;
208
// Number used to indicate that mu has been decreased
209
Number
pen_curr_mu_
;
210
212
Number
theta_min_
;
213
217
bool
accepted_by_Armijo_
;
218
220
Number
min_alpha_primal_
;
221
223
/*Initial constraint violation*/
224
Number
reference_theta_
;
226
227
Index
max_soc_
;
231
Number
kappa_soc_
;
233
234
Index
counter_first_type_penalty_updates_
;
235
Index
counter_second_type_penalty_updates_
;
237
Number
curr_eta_
;
238
240
Index
ls_counter_
;
242
Number
best_KKT_error_
;
244
SmartPtr<const IteratesVector>
best_iterate_
;
246
Number
mult_diverg_feasibility_tol_
;
247
Number
mult_diverg_y_tol_
;
248
253
Number
reference_penalty_function_
;
256
Number
reference_direct_deriv_penalty_function_
;
257
Number
reference_curr_direct_f_nrm_
;
260
Number
watchdog_penalty_function_
;
263
Number
watchdog_direct_deriv_penalty_function_
;
266
SmartPtr<const IteratesVector>
watchdog_delta_cgpen_
;
268
269
bool
never_use_piecewise_penalty_ls_
;
270
// piecewise penalty list
271
PiecewisePenalty
PiecewisePenalty_
;
273
bool
reset_piecewise_penalty_
;
274
275
Index
jump_for_tiny_step_
;
276
279
SmartPtr<PDSystemSolver>
pd_solver_
;
281
};
282
283
284
285
286
287
}
// namespace Ipopt
288
289
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4