Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpStdAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpStdAugSystemSolver.hpp 2269 2013-05-05 11:32:40Z stefan $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10 #define __IP_STDAUGSYSTEMSOLVER_HPP__
11
12 #include "IpAugSystemSolver.hpp"
13 #include "IpCompoundMatrix.hpp"
14 #include "IpCompoundSymMatrix.hpp"
15 #include "IpCompoundVector.hpp"
16 #include "IpSumSymMatrix.hpp"
17 #include "IpDiagMatrix.hpp"
18 #include "IpIdentityMatrix.hpp"
19
20 namespace Ipopt
21 {
27 class StdAugSystemSolver : public AugSystemSolver
28 {
29 public:
33 StdAugSystemSolver(SymLinearSolver& LinSolver);
34
36 virtual ~StdAugSystemSolver();
38
40 bool InitializeImpl(const OptionsList& options,
41 const std::string& prefix);
42
47 virtual ESymSolverStatus MultiSolve(
48 const SymMatrix* W,
49 double W_factor,
50 const Vector* D_x,
51 double delta_x,
52 const Vector* D_s,
53 double delta_s,
54 const Matrix* J_c,
55 const Vector* D_c,
56 double delta_c,
57 const Matrix* J_d,
58 const Vector* D_d,
59 double delta_d,
60 std::vector<SmartPtr<const Vector> >& rhs_xV,
61 std::vector<SmartPtr<const Vector> >& rhs_sV,
62 std::vector<SmartPtr<const Vector> >& rhs_cV,
63 std::vector<SmartPtr<const Vector> >& rhs_dV,
64 std::vector<SmartPtr<Vector> >& sol_xV,
65 std::vector<SmartPtr<Vector> >& sol_sV,
66 std::vector<SmartPtr<Vector> >& sol_cV,
67 std::vector<SmartPtr<Vector> >& sol_dV,
68 bool check_NegEVals,
69 Index numberOfNegEVals);
70
77 virtual Index NumberOfNegEVals() const;
78
82 virtual bool ProvidesInertia() const;
83
90 virtual bool IncreaseQuality();
91
92 private:
102 StdAugSystemSolver();
104 StdAugSystemSolver(const StdAugSystemSolver&);
105
107 void operator=(const StdAugSystemSolver&);
109
110
114 void CreateAugmentedSpace(const SymMatrix& W,
115 const Matrix& J_c,
116 const Matrix& J_d,
117 const Vector& proto_x,
118 const Vector& proto_s,
119 const Vector& proto_c,
120 const Vector& proto_d);
121
122
126 void CreateAugmentedSystem(const SymMatrix* W,
127 double W_factor,
128 const Vector* D_x,
129 double delta_x,
130 const Vector* D_s,
131 double delta_s,
132 const Matrix& J_c,
133 const Vector* D_c,
134 double delta_c,
135 const Matrix& J_d,
136 const Vector* D_d,
137 double delta_d,
138 const Vector& proto_x,
139 const Vector& proto_s,
140 const Vector& proto_c,
141 const Vector& proto_d);
142
145 bool AugmentedSystemRequiresChange(const SymMatrix* W,
146 double W_factor,
147 const Vector* D_x,
148 double delta_x,
149 const Vector* D_s,
150 double delta_s,
151 const Matrix& J_c,
152 const Vector* D_c,
153 double delta_c,
154 const Matrix& J_d,
155 const Vector* D_d,
156 double delta_d);
157
161 SmartPtr<SymLinearSolver> linsolver_;
162
164 SmartPtr<CompoundSymMatrixSpace> augmented_system_space_;
165 SmartPtr<SumSymMatrixSpace> sumsym_space_x_;
166 SmartPtr<DiagMatrixSpace> diag_space_x_;
167 SmartPtr<DiagMatrixSpace> diag_space_s_;
168 SmartPtr<DiagMatrixSpace> diag_space_c_;
169 SmartPtr<IdentityMatrixSpace> ident_space_ds_;
170 SmartPtr<DiagMatrixSpace> diag_space_d_;
171
172 SmartPtr<CompoundVectorSpace> augmented_vector_space_;
173
182 TaggedObject::Tag w_tag_;
184 double w_factor_;
188 TaggedObject::Tag d_x_tag_;
190 double delta_x_;
194 TaggedObject::Tag d_s_tag_;
196 double delta_s_;
200 TaggedObject::Tag j_c_tag_;
204 TaggedObject::Tag d_c_tag_;
206 double delta_c_;
210 TaggedObject::Tag j_d_tag_;
214 TaggedObject::Tag d_d_tag_;
216 double delta_d_;
217
224 TaggedObject::Tag augsys_tag_;
226
233 SmartPtr<CompoundSymMatrix> augmented_system_;
234
238 SmartPtr<const SymMatrix> old_w_;
239
244 bool warm_start_same_structure_;
246 };
247
248 } // namespace Ipopt
249
250 #endif
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::StdAugSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::StdAugSystemSolver::w_factor_
double w_factor_
Most recent value of W_factor.
Definition: IpStdAugSystemSolver.hpp:184
Ipopt::StdAugSystemSolver::d_x_tag_
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
Definition: IpStdAugSystemSolver.hpp:188
Ipopt::StdAugSystemSolver::CreateAugmentedSpace
void CreateAugmentedSpace(const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Vector &proto_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the matrix space for the Compound Sym Matrix that represents the augmented system...
Ipopt::StdAugSystemSolver::warm_start_same_structure_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before...
Definition: IpStdAugSystemSolver.hpp:244
Ipopt::StdAugSystemSolver::StdAugSystemSolver
StdAugSystemSolver()
Default constructor.
Ipopt::StdAugSystemSolver::diag_space_x_
SmartPtr< DiagMatrixSpace > diag_space_x_
Definition: IpStdAugSystemSolver.hpp:166
Ipopt::StdAugSystemSolver::ident_space_ds_
SmartPtr< IdentityMatrixSpace > ident_space_ds_
Definition: IpStdAugSystemSolver.hpp:169
Ipopt::StdAugSystemSolver::sumsym_space_x_
SmartPtr< SumSymMatrixSpace > sumsym_space_x_
Definition: IpStdAugSystemSolver.hpp:165
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::StdAugSystemSolver::diag_space_d_
SmartPtr< DiagMatrixSpace > diag_space_d_
Definition: IpStdAugSystemSolver.hpp:170
Ipopt::StdAugSystemSolver::augmented_vector_space_
SmartPtr< CompoundVectorSpace > augmented_vector_space_
Definition: IpStdAugSystemSolver.hpp:172
Ipopt::StdAugSystemSolver::delta_c_
double delta_c_
Most recent value of delta_c from Set method.
Definition: IpStdAugSystemSolver.hpp:206
IpCompoundSymMatrix.hpp
Ipopt::StdAugSystemSolver::delta_x_
double delta_x_
Most recent value of delta_x from Set method.
Definition: IpStdAugSystemSolver.hpp:190
Ipopt::StdAugSystemSolver::j_c_tag_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
Definition: IpStdAugSystemSolver.hpp:200
Ipopt::StdAugSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Ipopt::StdAugSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::StdAugSystemSolver::CreateAugmentedSystem
void CreateAugmentedSystem(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d, const Vector &proto_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the new compound sym matrix that represents the augmented system.
Ipopt::StdAugSystemSolver::operator=
void operator=(const StdAugSystemSolver &)
Overloaded Equals Operator.
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::AugSystemSolver
Base class for Solver for the augmented system.
Definition: IpAugSystemSolver.hpp:37
Ipopt::StdAugSystemSolver::AugmentedSystemRequiresChange
bool AugmentedSystemRequiresChange(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d)
Check the internal tags and decide if the passed variables are different from what is in the augmente...
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
IpCompoundVector.hpp
IpAugSystemSolver.hpp
Ipopt::StdAugSystemSolver::augsys_tag_
TaggedObject::Tag augsys_tag_
This is the tag of the matrix storing the augmented system.
Definition: IpStdAugSystemSolver.hpp:224
Ipopt::StdAugSystemSolver::d_d_tag_
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Definition: IpStdAugSystemSolver.hpp:214
Ipopt::StdAugSystemSolver::augmented_system_space_
SmartPtr< CompoundSymMatrixSpace > augmented_system_space_
Spaces for piecing together the augmented system.
Definition: IpStdAugSystemSolver.hpp:164
Ipopt::StdAugSystemSolver::diag_space_s_
SmartPtr< DiagMatrixSpace > diag_space_s_
Definition: IpStdAugSystemSolver.hpp:167
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::StdAugSystemSolver::d_c_tag_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
Definition: IpStdAugSystemSolver.hpp:204
Ipopt::StdAugSystemSolver::j_d_tag_
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Definition: IpStdAugSystemSolver.hpp:210
IpSumSymMatrix.hpp
Ipopt::StdAugSystemSolver::w_tag_
TaggedObject::Tag w_tag_
Tag for W matrix.
Definition: IpStdAugSystemSolver.hpp:182
Ipopt::StdAugSystemSolver::diag_space_c_
SmartPtr< DiagMatrixSpace > diag_space_c_
Definition: IpStdAugSystemSolver.hpp:168
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:80
IpCompoundMatrix.hpp
Ipopt::StdAugSystemSolver::delta_s_
double delta_s_
Most recent value of delta_s from Set method.
Definition: IpStdAugSystemSolver.hpp:196
Ipopt::StdAugSystemSolver::delta_d_
double delta_d_
Most recent value of delta_d from Set method.
Definition: IpStdAugSystemSolver.hpp:216
Ipopt::StdAugSystemSolver
Solver for the augmented system for triple type matrices.
Definition: IpStdAugSystemSolver.hpp:27
Ipopt::SymLinearSolver
Base class for all derived symmetric linear solvers.
Definition: IpSymLinearSolver.hpp:50
Ipopt::StdAugSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Ipopt::StdAugSystemSolver::augmented_system_
SmartPtr< CompoundSymMatrix > augmented_system_
The resulting augmented matrix.
Definition: IpStdAugSystemSolver.hpp:233
Ipopt::StdAugSystemSolver::~StdAugSystemSolver
virtual ~StdAugSystemSolver()
Default destructor.
IpDiagMatrix.hpp
IpIdentityMatrix.hpp
Ipopt::StdAugSystemSolver::d_s_tag_
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Definition: IpStdAugSystemSolver.hpp:194
Ipopt::StdAugSystemSolver::MultiSolve
virtual ESymSolverStatus MultiSolve(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix *J_c, const Vector *D_c, double delta_c, const Matrix *J_d, const Vector *D_d, double delta_d, std::vector< SmartPtr< const Vector > > &rhs_xV, std::vector< SmartPtr< const Vector > > &rhs_sV, std::vector< SmartPtr< const Vector > > &rhs_cV, std::vector< SmartPtr< const Vector > > &rhs_dV, std::vector< SmartPtr< Vector > > &sol_xV, std::vector< SmartPtr< Vector > > &sol_sV, std::vector< SmartPtr< Vector > > &sol_cV, std::vector< SmartPtr< Vector > > &sol_dV, bool check_NegEVals, Index numberOfNegEVals)
Set up the augmented system and solve it for a set of given right hand side - implementation for GenT...
Ipopt::StdAugSystemSolver::linsolver_
SmartPtr< SymLinearSolver > linsolver_
The linear solver object that is to be used to solve the linear systems.
Definition: IpStdAugSystemSolver.hpp:161
Ipopt::StdAugSystemSolver::old_w_
SmartPtr< const SymMatrix > old_w_
A copy of a previous W used in the augmented_system_.
Definition: IpStdAugSystemSolver.hpp:238