Main Page
Namespaces
Classes
Files
File List
File Members
tmp
buildd
coinor-ipopt-3.10.2
Ipopt
src
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 on Tue Jun 26 2012 17:01:43 by
1.8.1.1