Main Page
Namespaces
Classes
Files
File List
File Members
build
buildd
coinor-ipopt-3.10.2
Ipopt
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 Fri Jun 29 2012 06:35:13 by
1.8.1.1