Ipopt
3.11.8
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Algorithm
IpOrigIpoptNLP.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2010 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpOrigIpoptNLP.hpp 2160 2012-12-26 19:14:42Z stefan $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9
#ifndef __IPORIGIPOPTNLP_HPP__
10
#define __IPORIGIPOPTNLP_HPP__
11
12
#include "
IpIpoptNLP.hpp
"
13
#include "
IpException.hpp
"
14
#include "
IpTimingStatistics.hpp
"
15
16
namespace
Ipopt
17
{
18
20
enum
HessianApproximationType
{
21
EXACT
=0,
22
LIMITED_MEMORY
23
};
24
26
enum
HessianApproximationSpace
{
27
NONLINEAR_VARS
=0,
28
ALL_VARS
29
};
30
37
class
OrigIpoptNLP
:
public
IpoptNLP
38
{
39
public
:
42
OrigIpoptNLP
(
const
SmartPtr<const Journalist>
& jnlst,
43
const
SmartPtr<NLP>
&
nlp
,
44
const
SmartPtr<NLPScalingObject>
& nlp_scaling);
45
47
virtual
~OrigIpoptNLP
();
49
51
virtual
bool
Initialize
(
const
Journalist
& jnlst,
52
const
OptionsList
& options,
53
const
std::string& prefix);
54
57
virtual
bool
InitializeStructures
(
SmartPtr<Vector>
&
x
,
58
bool
init_x,
59
SmartPtr<Vector>
& y_c,
60
bool
init_y_c,
61
SmartPtr<Vector>
& y_d,
62
bool
init_y_d,
63
SmartPtr<Vector>
& z_L,
64
bool
init_z_L,
65
SmartPtr<Vector>
& z_U,
66
bool
init_z_U,
67
SmartPtr<Vector>
& v_L,
68
SmartPtr<Vector>
& v_U
69
);
70
72
virtual
bool
GetWarmStartIterate
(
IteratesVector
& warm_start_iterate)
73
{
74
return
nlp_
->GetWarmStartIterate(warm_start_iterate);
75
}
79
virtual
Number
f
(
const
Vector
& x);
80
83
virtual
Number
f
(
const
Vector
& x,
Number
mu);
84
86
virtual
SmartPtr<const Vector>
grad_f
(
const
Vector
& x);
87
90
virtual
SmartPtr<const Vector>
grad_f
(
const
Vector
& x,
Number
mu);
91
93
virtual
SmartPtr<const Vector>
c
(
const
Vector
& x);
94
96
virtual
SmartPtr<const Matrix>
jac_c
(
const
Vector
& x);
97
100
virtual
SmartPtr<const Vector>
d
(
const
Vector
& x);
101
103
virtual
SmartPtr<const Matrix>
jac_d
(
const
Vector
& x);
104
106
virtual
SmartPtr<const SymMatrix>
h
(
const
Vector
& x,
107
Number
obj_factor,
108
const
Vector
& yc,
109
const
Vector
& yd
110
);
111
114
virtual
SmartPtr<const SymMatrix>
h
(
const
Vector
& x,
115
Number
obj_factor,
116
const
Vector
& yc,
117
const
Vector
& yd,
118
Number
mu);
119
123
virtual
SmartPtr<const SymMatrix>
uninitialized_h
();
124
126
virtual
SmartPtr<const Vector>
x_L
()
const
127
{
128
return
x_L_
;
129
}
130
132
virtual
SmartPtr<const Matrix>
Px_L
()
const
133
{
134
return
Px_L_
;
135
}
136
138
virtual
SmartPtr<const Vector>
x_U
()
const
139
{
140
return
x_U_
;
141
}
142
144
virtual
SmartPtr<const Matrix>
Px_U
()
const
145
{
146
return
Px_U_
;
147
}
148
150
virtual
SmartPtr<const Vector>
d_L
()
const
151
{
152
return
d_L_
;
153
}
154
156
virtual
SmartPtr<const Matrix>
Pd_L
()
const
157
{
158
return
Pd_L_
;
159
}
160
162
virtual
SmartPtr<const Vector>
d_U
()
const
163
{
164
return
d_U_
;
165
}
166
168
virtual
SmartPtr<const Matrix>
Pd_U
()
const
169
{
170
return
Pd_U_
;
171
}
172
173
virtual
SmartPtr<const SymMatrixSpace>
HessianMatrixSpace
()
const
174
{
175
return
h_space_
;
176
}
178
180
virtual
void
GetSpaces
(
SmartPtr<const VectorSpace>
& x_space,
181
SmartPtr<const VectorSpace>
& c_space,
182
SmartPtr<const VectorSpace>
& d_space,
183
SmartPtr<const VectorSpace>
& x_l_space,
184
SmartPtr<const MatrixSpace>
& px_l_space,
185
SmartPtr<const VectorSpace>
& x_u_space,
186
SmartPtr<const MatrixSpace>
& px_u_space,
187
SmartPtr<const VectorSpace>
& d_l_space,
188
SmartPtr<const MatrixSpace>
& pd_l_space,
189
SmartPtr<const VectorSpace>
& d_u_space,
190
SmartPtr<const MatrixSpace>
& pd_u_space,
191
SmartPtr<const MatrixSpace>
& Jac_c_space,
192
SmartPtr<const MatrixSpace>
& Jac_d_space,
193
SmartPtr<const SymMatrixSpace>
& Hess_lagrangian_space);
194
197
virtual
void
AdjustVariableBounds
(
const
Vector
& new_x_L,
198
const
Vector
& new_x_U,
199
const
Vector
& new_d_L,
200
const
Vector
& new_d_U);
201
204
virtual
Index
f_evals
()
const
205
{
206
return
f_evals_
;
207
}
208
virtual
Index
grad_f_evals
()
const
209
{
210
return
grad_f_evals_
;
211
}
212
virtual
Index
c_evals
()
const
213
{
214
return
c_evals_
;
215
}
216
virtual
Index
jac_c_evals
()
const
217
{
218
return
jac_c_evals_
;
219
}
220
virtual
Index
d_evals
()
const
221
{
222
return
d_evals_
;
223
}
224
virtual
Index
jac_d_evals
()
const
225
{
226
return
jac_d_evals_
;
227
}
228
virtual
Index
h_evals
()
const
229
{
230
return
h_evals_
;
231
}
233
236
void
FinalizeSolution
(
SolverReturn
status,
237
const
Vector
& x,
const
Vector
& z_L,
const
Vector
& z_U,
238
const
Vector
&
c
,
const
Vector
&
d
,
239
const
Vector
& y_c,
const
Vector
& y_d,
240
Number
obj_value,
241
const
IpoptData
* ip_data,
242
IpoptCalculatedQuantities
* ip_cq);
243
bool
IntermediateCallBack
(
AlgorithmMode
mode,
244
Index
iter,
Number
obj_value,
245
Number
inf_pr,
Number
inf_du,
246
Number
mu,
Number
d_norm,
247
Number
regularization_size,
248
Number
alpha_du,
Number
alpha_pr,
249
Index
ls_trials,
250
SmartPtr<const IpoptData>
ip_data,
251
SmartPtr<IpoptCalculatedQuantities>
ip_cq);
253
257
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
259
261
SmartPtr<NLP>
nlp
()
262
{
263
return
nlp_
;
264
}
265
268
270
void
ResetTimes
();
271
272
void
PrintTimingStatistics
(
Journalist
& jnlst,
273
EJournalLevel
level,
274
EJournalCategory
category)
const
;
275
276
const
TimedTask
&
f_eval_time
()
const
277
{
278
return
f_eval_time_
;
279
}
280
const
TimedTask
&
grad_f_eval_time
()
const
281
{
282
return
grad_f_eval_time_
;
283
}
284
const
TimedTask
&
c_eval_time
()
const
285
{
286
return
c_eval_time_
;
287
}
288
const
TimedTask
&
jac_c_eval_time
()
const
289
{
290
return
jac_c_eval_time_
;
291
}
292
const
TimedTask
&
d_eval_time
()
const
293
{
294
return
d_eval_time_
;
295
}
296
const
TimedTask
&
jac_d_eval_time
()
const
297
{
298
return
jac_d_eval_time_
;
299
}
300
const
TimedTask
&
h_eval_time
()
const
301
{
302
return
h_eval_time_
;
303
}
304
305
Number
TotalFunctionEvaluationCpuTime
()
const
;
306
Number
TotalFunctionEvaluationSysTime
()
const
;
307
Number
TotalFunctionEvaluationWallclockTime
()
const
;
309
310
private
:
312
SmartPtr<const Journalist>
jnlst_
;
313
315
SmartPtr<NLP>
nlp_
;
316
319
SmartPtr<const VectorSpace>
x_space_
;
320
SmartPtr<const VectorSpace>
c_space_
;
321
SmartPtr<const VectorSpace>
d_space_
;
322
SmartPtr<const VectorSpace>
x_l_space_
;
323
SmartPtr<const MatrixSpace>
px_l_space_
;
324
SmartPtr<const VectorSpace>
x_u_space_
;
325
SmartPtr<const MatrixSpace>
px_u_space_
;
326
SmartPtr<const VectorSpace>
d_l_space_
;
327
SmartPtr<const MatrixSpace>
pd_l_space_
;
328
SmartPtr<const VectorSpace>
d_u_space_
;
329
SmartPtr<const MatrixSpace>
pd_u_space_
;
330
SmartPtr<const MatrixSpace>
jac_c_space_
;
331
SmartPtr<const MatrixSpace>
jac_d_space_
;
332
SmartPtr<const SymMatrixSpace>
h_space_
;
333
334
SmartPtr<const MatrixSpace>
scaled_jac_c_space_
;
335
SmartPtr<const MatrixSpace>
scaled_jac_d_space_
;
336
SmartPtr<const SymMatrixSpace>
scaled_h_space_
;
338
341
CachedResults<Number>
f_cache_
;
342
344
CachedResults<SmartPtr<const Vector>
>
grad_f_cache_
;
345
347
CachedResults<SmartPtr<const Vector>
>
c_cache_
;
348
351
CachedResults<SmartPtr<const Matrix>
>
jac_c_cache_
;
352
355
CachedResults<SmartPtr<const Vector>
>
d_cache_
;
356
359
CachedResults<SmartPtr<const Matrix>
>
jac_d_cache_
;
360
363
CachedResults<SmartPtr<const SymMatrix>
>
h_cache_
;
364
366
CachedResults<SmartPtr<const Vector>
>
unscaled_x_cache_
;
367
369
SmartPtr<const Vector>
x_L_
;
370
372
SmartPtr<const Matrix>
Px_L_
;
373
375
SmartPtr<const Vector>
x_U_
;
376
378
SmartPtr<const Matrix>
Px_U_
;
379
381
SmartPtr<const Vector>
d_L_
;
382
384
SmartPtr<const Matrix>
Pd_L_
;
385
387
SmartPtr<const Vector>
d_U_
;
388
390
SmartPtr<const Matrix>
Pd_U_
;
391
393
SmartPtr<const Vector>
orig_x_L_
;
394
396
SmartPtr<const Vector>
orig_x_U_
;
398
408
OrigIpoptNLP
();
409
411
OrigIpoptNLP
(
const
OrigIpoptNLP
&);
412
414
void
operator=
(
const
OrigIpoptNLP
&);
416
423
void
relax_bounds
(
Number
bound_relax_factor,
Vector
& bounds);
425
SmartPtr<const Vector>
get_unscaled_x
(
const
Vector
& x);
427
431
Number
bound_relax_factor_
;
434
bool
honor_original_bounds_
;
437
bool
warm_start_same_structure_
;
439
HessianApproximationType
hessian_approximation_
;
441
HessianApproximationSpace
hessian_approximation_space_
;
444
bool
check_derivatives_for_naninf_
;
447
bool
jac_c_constant_
;
450
bool
jac_d_constant_
;
452
bool
hessian_constant_
;
454
457
Index
f_evals_
;
458
Index
grad_f_evals_
;
459
Index
c_evals_
;
460
Index
jac_c_evals_
;
461
Index
d_evals_
;
462
Index
jac_d_evals_
;
463
Index
h_evals_
;
465
467
bool
initialized_
;
468
471
TimedTask
f_eval_time_
;
472
TimedTask
grad_f_eval_time_
;
473
TimedTask
c_eval_time_
;
474
TimedTask
jac_c_eval_time_
;
475
TimedTask
d_eval_time_
;
476
TimedTask
jac_d_eval_time_
;
477
TimedTask
h_eval_time_
;
479
};
480
481
}
// namespace Ipopt
482
483
#endif
Generated by
1.8.3.1