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
Inexact
IpInexactPDSolver.hpp
Go to the documentation of this file.
1
// Copyright (C) 2008 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpInexactPDSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2008-09-09
8
9
#ifndef __IPINEXACTPDSOLVER_HPP__
10
#define __IPINEXACTPDSOLVER_HPP__
11
12
#include "
IpAlgStrategy.hpp
"
13
#include "
IpAugSystemSolver.hpp
"
14
#include "
IpPDPerturbationHandler.hpp
"
15
#include "
IpInexactCq.hpp
"
16
17
namespace
Ipopt
18
{
19
24
class
InexactPDSolver
:
public
AlgorithmStrategyObject
25
{
26
public
:
32
InexactPDSolver
(
AugSystemSolver
& augSysSolver,
33
PDPerturbationHandler
& perturbHandler);
34
36
virtual
~InexactPDSolver
();
38
39
/* overloaded from AlgorithmStrategyObject */
40
bool
InitializeImpl
(
const
OptionsList
& options,
41
const
std::string& prefix);
42
45
virtual
bool
Solve
(
const
IteratesVector
& rhs,
46
IteratesVector
& sol);
47
50
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
52
53
private
:
63
InexactPDSolver
();
65
InexactPDSolver
&
operator=
(
const
InexactPDSolver
&);
67
69
InexactData
&
InexData
()
70
{
71
InexactData
& inexact_data =
72
static_cast<
InexactData
&
>
(
IpData
().
AdditionalData
());
73
DBG_ASSERT
(dynamic_cast<InexactData*>(&
IpData
().AdditionalData()));
74
return
inexact_data;
75
}
76
78
InexactCq
&
InexCq
()
79
{
80
InexactCq
& inexact_cq =
81
static_cast<
InexactCq
&
>
(
IpCq
().
AdditionalCq
());
82
DBG_ASSERT
(dynamic_cast<InexactCq*>(&
IpCq
().AdditionalCq()));
83
return
inexact_cq;
84
}
85
89
SmartPtr<AugSystemSolver>
augSysSolver_
;
91
SmartPtr<PDPerturbationHandler>
perturbHandler_
;
93
97
void
ComputeResiduals
(
const
SymMatrix
& W,
98
const
Matrix
& J_c,
99
const
Matrix
& J_d,
100
const
Matrix
& Pd_L,
101
const
Matrix
& Pd_U,
102
const
Vector
& v_L,
103
const
Vector
& v_U,
104
const
Vector
& slack_s_L,
105
const
Vector
& slack_s_U,
106
const
Vector
& sigma_s,
107
const
IteratesVector
& rhs,
108
const
IteratesVector
& res,
109
IteratesVector
& resid);
110
114
bool
HessianRequiresChange
();
115
119
Number
tcc_psi_
;
121
Number
tcc_theta_
;
124
Number
tcc_theta_mu_exponent_
;
127
bool
modify_hessian_with_slacks_
;
130
Index
inexact_regularization_ls_count_trigger_
;
132
135
bool
is_pardiso_
;
136
137
Index
last_info_ls_count_
;
138
};
139
140
141
}
// namespace Ipopt
142
143
#endif
Generated by
1.8.3.1