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
IpIpoptCalculatedQuantities.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2011 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpIpoptCalculatedQuantities.hpp 2020 2011-06-16 20:46:16Z andreasw $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9
#ifndef __IPIPOPTCALCULATEDQUANTITIES_HPP__
10
#define __IPIPOPTCALCULATEDQUANTITIES_HPP__
11
12
#include "
IpSmartPtr.hpp
"
13
#include "
IpCachedResults.hpp
"
14
15
#include <string>
16
17
namespace
Ipopt
18
{
19
class
IpoptNLP;
20
class
IpoptData;
21
class
Vector;
22
class
Matrix;
23
class
SymMatrix;
24
class
Journalist;
25
class
OptionsList;
26
class
RegisteredOptions;
27
29
enum
ENormType
{
30
NORM_1
=0,
31
NORM_2
,
32
NORM_MAX
33
};
34
40
class
IpoptAdditionalCq
:
public
ReferencedObject
41
{
42
public
:
46
IpoptAdditionalCq
()
47
{}
48
50
virtual
~IpoptAdditionalCq
()
51
{}
53
57
virtual
bool
Initialize
(
const
Journalist
& jnlst,
58
const
OptionsList
& options,
59
const
std::string& prefix) = 0;
60
61
private
:
71
IpoptAdditionalCq
(
const
IpoptAdditionalCq
&);
72
74
void
operator=
(
const
IpoptAdditionalCq
&);
76
};
77
81
class
IpoptCalculatedQuantities
:
public
ReferencedObject
82
{
83
public
:
84
88
IpoptCalculatedQuantities
(
const
SmartPtr<IpoptNLP>
& ip_nlp,
89
const
SmartPtr<IpoptData>
& ip_data);
91
virtual
~IpoptCalculatedQuantities
();
93
96
void
SetAddCq
(
SmartPtr<IpoptAdditionalCq>
add_cq)
97
{
98
DBG_ASSERT
(!
HaveAddCq
());
99
add_cq_
= add_cq;
100
}
101
104
bool
HaveAddCq
()
105
{
106
return
IsValid
(
add_cq_
);
107
}
108
112
bool
Initialize
(
const
Journalist
& jnlst,
113
const
OptionsList
& options,
114
const
std::string& prefix);
115
119
SmartPtr<const Vector>
curr_slack_x_L
();
121
SmartPtr<const Vector>
curr_slack_x_U
();
123
SmartPtr<const Vector>
curr_slack_s_L
();
125
SmartPtr<const Vector>
curr_slack_s_U
();
127
SmartPtr<const Vector>
trial_slack_x_L
();
129
SmartPtr<const Vector>
trial_slack_x_U
();
131
SmartPtr<const Vector>
trial_slack_s_L
();
133
SmartPtr<const Vector>
trial_slack_s_U
();
135
Index
AdjustedTrialSlacks
();
137
void
ResetAdjustedTrialSlacks
();
139
143
virtual
Number
curr_f
();
145
virtual
Number
unscaled_curr_f
();
147
virtual
Number
trial_f
();
149
virtual
Number
unscaled_trial_f
();
151
SmartPtr<const Vector>
curr_grad_f
();
153
SmartPtr<const Vector>
trial_grad_f
();
155
161
virtual
Number
curr_barrier_obj
();
165
virtual
Number
trial_barrier_obj
();
166
169
SmartPtr<const Vector>
curr_grad_barrier_obj_x
();
172
SmartPtr<const Vector>
curr_grad_barrier_obj_s
();
173
176
SmartPtr<const Vector>
grad_kappa_times_damping_x
();
179
SmartPtr<const Vector>
grad_kappa_times_damping_s
();
181
185
SmartPtr<const Vector>
curr_c
();
187
SmartPtr<const Vector>
unscaled_curr_c
();
189
SmartPtr<const Vector>
trial_c
();
191
SmartPtr<const Vector>
unscaled_trial_c
();
193
SmartPtr<const Vector>
curr_d
();
195
SmartPtr<const Vector>
unscaled_curr_d
();
197
SmartPtr<const Vector>
trial_d
();
199
SmartPtr<const Vector>
curr_d_minus_s
();
201
SmartPtr<const Vector>
trial_d_minus_s
();
203
SmartPtr<const Matrix>
curr_jac_c
();
205
SmartPtr<const Matrix>
trial_jac_c
();
207
SmartPtr<const Matrix>
curr_jac_d
();
209
SmartPtr<const Matrix>
trial_jac_d
();
212
SmartPtr<const Vector>
curr_jac_cT_times_vec
(
const
Vector
& vec);
215
SmartPtr<const Vector>
trial_jac_cT_times_vec
(
const
Vector
& vec);
218
SmartPtr<const Vector>
curr_jac_dT_times_vec
(
const
Vector
& vec);
221
SmartPtr<const Vector>
trial_jac_dT_times_vec
(
const
Vector
& vec);
224
SmartPtr<const Vector>
curr_jac_cT_times_curr_y_c
();
227
SmartPtr<const Vector>
trial_jac_cT_times_trial_y_c
();
230
SmartPtr<const Vector>
curr_jac_dT_times_curr_y_d
();
233
SmartPtr<const Vector>
trial_jac_dT_times_trial_y_d
();
236
SmartPtr<const Vector>
curr_jac_c_times_vec
(
const
Vector
& vec);
239
SmartPtr<const Vector>
curr_jac_d_times_vec
(
const
Vector
& vec);
243
virtual
Number
curr_constraint_violation
();
247
virtual
Number
trial_constraint_violation
();
251
virtual
Number
curr_nlp_constraint_violation
(
ENormType
NormType);
255
virtual
Number
unscaled_curr_nlp_constraint_violation
(
ENormType
NormType);
259
virtual
Number
unscaled_trial_nlp_constraint_violation
(
ENormType
NormType);
261
265
SmartPtr<const SymMatrix>
curr_exact_hessian
();
267
271
SmartPtr<const Vector>
curr_grad_lag_x
();
273
SmartPtr<const Vector>
trial_grad_lag_x
();
275
SmartPtr<const Vector>
curr_grad_lag_s
();
277
SmartPtr<const Vector>
trial_grad_lag_s
();
280
SmartPtr<const Vector>
curr_grad_lag_with_damping_x
();
283
SmartPtr<const Vector>
curr_grad_lag_with_damping_s
();
285
SmartPtr<const Vector>
curr_compl_x_L
();
287
SmartPtr<const Vector>
curr_compl_x_U
();
289
SmartPtr<const Vector>
curr_compl_s_L
();
291
SmartPtr<const Vector>
curr_compl_s_U
();
293
SmartPtr<const Vector>
trial_compl_x_L
();
295
SmartPtr<const Vector>
trial_compl_x_U
();
297
SmartPtr<const Vector>
trial_compl_s_L
();
299
SmartPtr<const Vector>
trial_compl_s_U
();
301
SmartPtr<const Vector>
curr_relaxed_compl_x_L
();
303
SmartPtr<const Vector>
curr_relaxed_compl_x_U
();
305
SmartPtr<const Vector>
curr_relaxed_compl_s_L
();
307
SmartPtr<const Vector>
curr_relaxed_compl_s_U
();
308
310
virtual
Number
curr_primal_infeasibility
(
ENormType
NormType);
312
virtual
Number
trial_primal_infeasibility
(
ENormType
NormType);
313
315
virtual
Number
curr_dual_infeasibility
(
ENormType
NormType);
317
virtual
Number
trial_dual_infeasibility
(
ENormType
NormType);
319
virtual
Number
unscaled_curr_dual_infeasibility
(
ENormType
NormType);
320
323
virtual
Number
curr_complementarity
(
Number
mu,
ENormType
NormType);
326
virtual
Number
trial_complementarity
(
Number
mu,
ENormType
NormType);
329
virtual
Number
unscaled_curr_complementarity
(
Number
mu,
ENormType
NormType);
330
332
Number
CalcCentralityMeasure
(
const
Vector
& compl_x_L,
333
const
Vector
& compl_x_U,
334
const
Vector
& compl_s_L,
335
const
Vector
& compl_s_U);
337
virtual
Number
curr_centrality_measure
();
338
343
virtual
Number
curr_nlp_error
();
348
virtual
Number
unscaled_curr_nlp_error
();
349
352
virtual
Number
curr_barrier_error
();
353
360
virtual
Number
curr_primal_dual_system_error
(
Number
mu);
367
virtual
Number
trial_primal_dual_system_error
(
Number
mu);
369
374
Number
primal_frac_to_the_bound
(
Number
tau,
375
const
Vector
& delta_x,
376
const
Vector
& delta_s);
379
Number
curr_primal_frac_to_the_bound
(
Number
tau);
382
Number
dual_frac_to_the_bound
(
Number
tau,
383
const
Vector
& delta_z_L,
384
const
Vector
& delta_z_U,
385
const
Vector
& delta_v_L,
386
const
Vector
& delta_v_U);
389
Number
uncached_dual_frac_to_the_bound
(
Number
tau,
390
const
Vector
& delta_z_L,
391
const
Vector
& delta_z_U,
392
const
Vector
& delta_v_L,
393
const
Vector
& delta_v_U);
396
Number
curr_dual_frac_to_the_bound
(
Number
tau);
404
Number
uncached_slack_frac_to_the_bound
(
Number
tau,
405
const
Vector
& delta_x_L,
406
const
Vector
& delta_x_U,
407
const
Vector
& delta_s_L,
408
const
Vector
& delta_s_U);
410
413
SmartPtr<const Vector>
curr_sigma_x
();
414
SmartPtr<const Vector>
curr_sigma_s
();
416
418
Number
curr_avrg_compl
();
420
Number
trial_avrg_compl
();
421
424
Number
curr_gradBarrTDelta
();
425
427
Number
428
CalcNormOfType
(
ENormType
NormType,
429
std::vector<
SmartPtr<const Vector>
> vecs);
430
432
Number
433
CalcNormOfType
(
ENormType
NormType,
434
const
Vector
& vec1,
const
Vector
& vec2);
435
437
ENormType
constr_viol_normtype
()
const
438
{
439
return
constr_viol_normtype_
;
440
}
441
443
bool
IsSquareProblem
()
const
;
444
447
SmartPtr<IpoptNLP>
&
GetIpoptNLP
()
448
{
449
return
ip_nlp_
;
450
}
451
452
IpoptAdditionalCq
&
AdditionalCq
()
453
{
454
DBG_ASSERT
(
IsValid
(
add_cq_
));
455
return
*
add_cq_
;
456
}
457
461
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
463
464
private
:
474
IpoptCalculatedQuantities
();
475
477
IpoptCalculatedQuantities
(
const
IpoptCalculatedQuantities
&);
478
480
void
operator=
(
const
IpoptCalculatedQuantities
&);
482
486
SmartPtr<IpoptNLP>
ip_nlp_
;
488
SmartPtr<IpoptData>
ip_data_
;
490
SmartPtr<IpoptAdditionalCq>
add_cq_
;
492
499
Number
s_max_
;
502
Number
kappa_d_
;
504
Number
slack_move_
;
506
ENormType
constr_viol_normtype_
;
509
bool
warm_start_same_structure_
;
511
Number
mu_target_
;
513
516
CachedResults< SmartPtr<Vector>
>
curr_slack_x_L_cache_
;
517
CachedResults< SmartPtr<Vector>
>
curr_slack_x_U_cache_
;
518
CachedResults< SmartPtr<Vector>
>
curr_slack_s_L_cache_
;
519
CachedResults< SmartPtr<Vector>
>
curr_slack_s_U_cache_
;
520
CachedResults< SmartPtr<Vector>
>
trial_slack_x_L_cache_
;
521
CachedResults< SmartPtr<Vector>
>
trial_slack_x_U_cache_
;
522
CachedResults< SmartPtr<Vector>
>
trial_slack_s_L_cache_
;
523
CachedResults< SmartPtr<Vector>
>
trial_slack_s_U_cache_
;
524
Index
num_adjusted_slack_x_L_
;
525
Index
num_adjusted_slack_x_U_
;
526
Index
num_adjusted_slack_s_L_
;
527
Index
num_adjusted_slack_s_U_
;
529
532
CachedResults<Number>
curr_f_cache_
;
533
CachedResults<Number>
trial_f_cache_
;
534
CachedResults< SmartPtr<const Vector>
>
curr_grad_f_cache_
;
535
CachedResults< SmartPtr<const Vector>
>
trial_grad_f_cache_
;
537
540
CachedResults<Number>
curr_barrier_obj_cache_
;
541
CachedResults<Number>
trial_barrier_obj_cache_
;
542
CachedResults< SmartPtr<const Vector>
>
curr_grad_barrier_obj_x_cache_
;
543
CachedResults< SmartPtr<const Vector>
>
curr_grad_barrier_obj_s_cache_
;
544
CachedResults< SmartPtr<const Vector>
>
grad_kappa_times_damping_x_cache_
;
545
CachedResults< SmartPtr<const Vector>
>
grad_kappa_times_damping_s_cache_
;
547
550
CachedResults< SmartPtr<const Vector>
>
curr_c_cache_
;
551
CachedResults< SmartPtr<const Vector>
>
trial_c_cache_
;
552
CachedResults< SmartPtr<const Vector>
>
curr_d_cache_
;
553
CachedResults< SmartPtr<const Vector>
>
trial_d_cache_
;
554
CachedResults< SmartPtr<const Vector>
>
curr_d_minus_s_cache_
;
555
CachedResults< SmartPtr<const Vector>
>
trial_d_minus_s_cache_
;
556
CachedResults< SmartPtr<const Matrix>
>
curr_jac_c_cache_
;
557
CachedResults< SmartPtr<const Matrix>
>
trial_jac_c_cache_
;
558
CachedResults< SmartPtr<const Matrix>
>
curr_jac_d_cache_
;
559
CachedResults< SmartPtr<const Matrix>
>
trial_jac_d_cache_
;
560
CachedResults< SmartPtr<const Vector>
>
curr_jac_cT_times_vec_cache_
;
561
CachedResults< SmartPtr<const Vector>
>
trial_jac_cT_times_vec_cache_
;
562
CachedResults< SmartPtr<const Vector>
>
curr_jac_dT_times_vec_cache_
;
563
CachedResults< SmartPtr<const Vector>
>
trial_jac_dT_times_vec_cache_
;
564
CachedResults< SmartPtr<const Vector>
>
curr_jac_c_times_vec_cache_
;
565
CachedResults< SmartPtr<const Vector>
>
curr_jac_d_times_vec_cache_
;
566
CachedResults<Number>
curr_constraint_violation_cache_
;
567
CachedResults<Number>
trial_constraint_violation_cache_
;
568
CachedResults<Number>
curr_nlp_constraint_violation_cache_
;
569
CachedResults<Number>
unscaled_curr_nlp_constraint_violation_cache_
;
570
CachedResults<Number>
unscaled_trial_nlp_constraint_violation_cache_
;
572
574
CachedResults< SmartPtr<const SymMatrix>
>
curr_exact_hessian_cache_
;
575
578
CachedResults< SmartPtr<const Vector>
>
curr_grad_lag_x_cache_
;
579
CachedResults< SmartPtr<const Vector>
>
trial_grad_lag_x_cache_
;
580
CachedResults< SmartPtr<const Vector>
>
curr_grad_lag_s_cache_
;
581
CachedResults< SmartPtr<const Vector>
>
trial_grad_lag_s_cache_
;
582
CachedResults< SmartPtr<const Vector>
>
curr_grad_lag_with_damping_x_cache_
;
583
CachedResults< SmartPtr<const Vector>
>
curr_grad_lag_with_damping_s_cache_
;
584
CachedResults< SmartPtr<const Vector>
>
curr_compl_x_L_cache_
;
585
CachedResults< SmartPtr<const Vector>
>
curr_compl_x_U_cache_
;
586
CachedResults< SmartPtr<const Vector>
>
curr_compl_s_L_cache_
;
587
CachedResults< SmartPtr<const Vector>
>
curr_compl_s_U_cache_
;
588
CachedResults< SmartPtr<const Vector>
>
trial_compl_x_L_cache_
;
589
CachedResults< SmartPtr<const Vector>
>
trial_compl_x_U_cache_
;
590
CachedResults< SmartPtr<const Vector>
>
trial_compl_s_L_cache_
;
591
CachedResults< SmartPtr<const Vector>
>
trial_compl_s_U_cache_
;
592
CachedResults< SmartPtr<const Vector>
>
curr_relaxed_compl_x_L_cache_
;
593
CachedResults< SmartPtr<const Vector>
>
curr_relaxed_compl_x_U_cache_
;
594
CachedResults< SmartPtr<const Vector>
>
curr_relaxed_compl_s_L_cache_
;
595
CachedResults< SmartPtr<const Vector>
>
curr_relaxed_compl_s_U_cache_
;
596
CachedResults<Number>
curr_primal_infeasibility_cache_
;
597
CachedResults<Number>
trial_primal_infeasibility_cache_
;
598
CachedResults<Number>
curr_dual_infeasibility_cache_
;
599
CachedResults<Number>
trial_dual_infeasibility_cache_
;
600
CachedResults<Number>
unscaled_curr_dual_infeasibility_cache_
;
601
CachedResults<Number>
curr_complementarity_cache_
;
602
CachedResults<Number>
trial_complementarity_cache_
;
603
CachedResults<Number>
curr_centrality_measure_cache_
;
604
CachedResults<Number>
curr_nlp_error_cache_
;
605
CachedResults<Number>
unscaled_curr_nlp_error_cache_
;
606
CachedResults<Number>
curr_barrier_error_cache_
;
607
CachedResults<Number>
curr_primal_dual_system_error_cache_
;
608
CachedResults<Number>
trial_primal_dual_system_error_cache_
;
610
613
CachedResults<Number>
primal_frac_to_the_bound_cache_
;
614
CachedResults<Number>
dual_frac_to_the_bound_cache_
;
616
619
CachedResults< SmartPtr<const Vector>
>
curr_sigma_x_cache_
;
620
CachedResults< SmartPtr<const Vector>
>
curr_sigma_s_cache_
;
622
624
CachedResults<Number>
curr_avrg_compl_cache_
;
626
CachedResults<Number>
trial_avrg_compl_cache_
;
627
629
CachedResults<Number>
curr_gradBarrTDelta_cache_
;
630
636
SmartPtr<Vector>
dampind_x_L_
;
639
SmartPtr<Vector>
dampind_x_U_
;
642
SmartPtr<Vector>
dampind_s_L_
;
645
SmartPtr<Vector>
dampind_s_U_
;
647
652
SmartPtr<Vector>
tmp_x_
;
653
SmartPtr<Vector>
tmp_s_
;
654
SmartPtr<Vector>
tmp_c_
;
655
SmartPtr<Vector>
tmp_d_
;
656
SmartPtr<Vector>
tmp_x_L_
;
657
SmartPtr<Vector>
tmp_x_U_
;
658
SmartPtr<Vector>
tmp_s_L_
;
659
SmartPtr<Vector>
tmp_s_U_
;
660
662
Vector
&
Tmp_x
();
663
Vector
&
Tmp_s
();
664
Vector
&
Tmp_c
();
665
Vector
&
Tmp_d
();
666
Vector
&
Tmp_x_L
();
667
Vector
&
Tmp_x_U
();
668
Vector
&
Tmp_s_L
();
669
Vector
&
Tmp_s_U
();
671
674
bool
initialize_called_
;
675
681
SmartPtr<Vector>
CalcSlack_L
(
const
Matrix
& P,
682
const
Vector
&
x
,
683
const
Vector
& x_bound);
687
SmartPtr<Vector>
CalcSlack_U
(
const
Matrix
& P,
688
const
Vector
&
x
,
689
const
Vector
& x_bound);
693
Number
CalcBarrierTerm
(
Number
mu,
694
const
Vector
& slack_x_L,
695
const
Vector
& slack_x_U,
696
const
Vector
& slack_s_L,
697
const
Vector
& slack_s_U);
698
700
SmartPtr<const Vector>
CalcCompl
(
const
Vector
& slack,
701
const
Vector
& mult);
702
704
Number
CalcFracToBound
(
const
Vector
& slack_L,
705
Vector
& tmp_L,
706
const
Matrix
& P_L,
707
const
Vector
& slack_U,
708
Vector
& tmp_U,
709
const
Matrix
& P_U,
710
const
Vector
& delta,
711
Number
tau);
712
714
void
ComputeOptimalityErrorScaling
(
const
Vector
& y_c,
const
Vector
& y_d,
715
const
Vector
& z_L,
const
Vector
& z_U,
716
const
Vector
& v_L,
const
Vector
& v_U,
717
Number
s_max,
718
Number
& s_d,
Number
& s_c);
719
723
Index
CalculateSafeSlack
(
SmartPtr<Vector>
& slack,
724
const
SmartPtr<const Vector>
& bound,
725
const
SmartPtr<const Vector>
& curr_point,
726
const
SmartPtr<const Vector>
& multiplier);
727
733
void
ComputeDampingIndicators
(
SmartPtr<const Vector>
& dampind_x_L,
734
SmartPtr<const Vector>
& dampind_x_U,
735
SmartPtr<const Vector>
& dampind_s_L,
736
SmartPtr<const Vector>
& dampind_s_U);
737
744
bool
in_restoration_phase
();
745
747
};
748
749
}
// namespace Ipopt
750
751
#endif
Generated by
1.8.3.1