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