Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpLowRankAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpLowRankAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2005-12-27
8
9 #ifndef __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
10 #define __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
11
12 #include "IpAugSystemSolver.hpp"
13 #include "IpDenseGenMatrix.hpp"
14 #include "IpMultiVectorMatrix.hpp"
15 #include "IpDiagMatrix.hpp"
16
17 namespace Ipopt
18 {
19
24 class LowRankAugSystemSolver : public AugSystemSolver
25 {
26 public:
30 LowRankAugSystemSolver(AugSystemSolver& aug_system_solver);
31
33 virtual ~LowRankAugSystemSolver();
35
37 bool InitializeImpl(const OptionsList& options,
38 const std::string& prefix);
39
43 virtual ESymSolverStatus Solve(
44 const SymMatrix* W,
45 double W_factor,
46 const Vector* D_x,
47 double delta_x,
48 const Vector* D_s,
49 double delta_s,
50 const Matrix* J_c,
51 const Vector* D_c,
52 double delta_c,
53 const Matrix* J_d,
54 const Vector* D_d,
55 double delta_d,
56 const Vector& rhs_x,
57 const Vector& rhs_s,
58 const Vector& rhs_c,
59 const Vector& rhs_d,
60 Vector& sol_x,
61 Vector& sol_s,
62 Vector& sol_c,
63 Vector& sol_d,
64 bool check_NegEVals,
65 Index numberOfNegEVals);
66
73 virtual Index NumberOfNegEVals() const;
74
78 virtual bool ProvidesInertia() const;
79
86 virtual bool IncreaseQuality();
87
88 private:
98 LowRankAugSystemSolver();
100 LowRankAugSystemSolver(const LowRankAugSystemSolver&);
101
103 void operator=(const LowRankAugSystemSolver&);
105
110 SmartPtr<AugSystemSolver> aug_system_solver_;
111
120 TaggedObject::Tag w_tag_;
122 double w_factor_;
126 TaggedObject::Tag d_x_tag_;
128 double delta_x_;
132 TaggedObject::Tag d_s_tag_;
134 double delta_s_;
138 TaggedObject::Tag j_c_tag_;
142 TaggedObject::Tag d_c_tag_;
144 double delta_c_;
148 TaggedObject::Tag j_d_tag_;
152 TaggedObject::Tag d_d_tag_;
154 double delta_d_;
156
160 bool first_call_;
161 SmartPtr<DenseGenMatrix> J1_;
162 SmartPtr<DenseGenMatrix> J2_;
163 SmartPtr<MultiVectorMatrix> Vtilde1_;
164 SmartPtr<MultiVectorMatrix> Utilde2_;
167 SmartPtr<DiagMatrix> Wdiag_;
170 SmartPtr<const CompoundVectorSpace> compound_sol_vecspace_;
172
180 Index num_neg_evals_;
181
186 ESymSolverStatus UpdateFactorization(
187 const SymMatrix* W,
188 double W_factor,
189 const Vector* D_x,
190 double delta_x,
191 const Vector* D_s,
192 double delta_s,
193 const Matrix& J_c,
194 const Vector* D_c,
195 double delta_c,
196 const Matrix& J_d,
197 const Vector* D_d,
198 double delta_d,
199 const Vector& proto_rhs_x,
200 const Vector& proto_rhs_s,
201 const Vector& proto_rhs_c,
202 const Vector& proto_rhs_d,
203 bool check_NegEVals,
204 Index numberOfNegEVals);
205
211 ESymSolverStatus SolveMultiVector(
212 const Vector* D_x,
213 double delta_x,
214 const Vector* D_s,
215 double delta_s,
216 const Matrix& J_c,
217 const Vector* D_c,
218 double delta_c,
219 const Matrix& J_d,
220 const Vector* D_d,
221 double delta_d,
222 const Vector& proto_rhs_x,
223 const Vector& proto_rhs_s,
224 const Vector& proto_rhs_c,
225 const Vector& proto_rhs_d,
226 const MultiVectorMatrix& V,
227 const SmartPtr<const Matrix>& P_LM,
228 SmartPtr<MultiVectorMatrix>& V_x,
229 SmartPtr<MultiVectorMatrix>& Vtilde1,
230 SmartPtr<MultiVectorMatrix>& Vtilde1_x,
231 bool check_NegEVals,
232 Index numberOfNegEVals);
233
237 bool AugmentedSystemRequiresChange(
238 const SymMatrix* W,
239 double W_factor,
240 const Vector* D_x,
241 double delta_x,
242 const Vector* D_s,
243 double delta_s,
244 const Matrix& J_c,
245 const Vector* D_c,
246 double delta_c,
247 const Matrix& J_d,
248 const Vector* D_d,
249 double delta_d);
251
252 };
253
254 } // namespace Ipopt
255
256 #endif
Ipopt::LowRankAugSystemSolver::delta_c_
double delta_c_
Most recent value of delta_c from Set method.
Definition: IpLowRankAugSystemSolver.hpp:144
Ipopt::LowRankAugSystemSolver::j_c_tag_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
Definition: IpLowRankAugSystemSolver.hpp:138
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::LowRankAugSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Ipopt::LowRankAugSystemSolver::J2_
SmartPtr< DenseGenMatrix > J2_
Definition: IpLowRankAugSystemSolver.hpp:162
Ipopt::LowRankAugSystemSolver::d_x_tag_
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
Definition: IpLowRankAugSystemSolver.hpp:126
Ipopt::LowRankAugSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::LowRankAugSystemSolver::J1_
SmartPtr< DenseGenMatrix > J1_
Definition: IpLowRankAugSystemSolver.hpp:161
Ipopt::LowRankAugSystemSolver::d_s_tag_
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Definition: IpLowRankAugSystemSolver.hpp:132
Ipopt::LowRankAugSystemSolver::aug_system_solver_
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
Definition: IpLowRankAugSystemSolver.hpp:110
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::LowRankAugSystemSolver::LowRankAugSystemSolver
LowRankAugSystemSolver()
Default constructor.
IpMultiVectorMatrix.hpp
Ipopt::LowRankAugSystemSolver::w_tag_
TaggedObject::Tag w_tag_
Tag for W matrix.
Definition: IpLowRankAugSystemSolver.hpp:120
Ipopt::LowRankAugSystemSolver::w_factor_
double w_factor_
Most recent value of W_factor.
Definition: IpLowRankAugSystemSolver.hpp:122
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::LowRankAugSystemSolver::d_d_tag_
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Definition: IpLowRankAugSystemSolver.hpp:152
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
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::LowRankAugSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Ipopt::LowRankAugSystemSolver::SolveMultiVector
ESymSolverStatus SolveMultiVector(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_rhs_x, const Vector &proto_rhs_s, const Vector &proto_rhs_c, const Vector &proto_rhs_d, const MultiVectorMatrix &V, const SmartPtr< const Matrix > &P_LM, SmartPtr< MultiVectorMatrix > &V_x, SmartPtr< MultiVectorMatrix > &Vtilde1, SmartPtr< MultiVectorMatrix > &Vtilde1_x, bool check_NegEVals, Index numberOfNegEVals)
Method for solving the augmented system without low-rank update for multiple right hand sides that ar...
Ipopt::LowRankAugSystemSolver
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
Definition: IpLowRankAugSystemSolver.hpp:24
Ipopt::LowRankAugSystemSolver::d_c_tag_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
Definition: IpLowRankAugSystemSolver.hpp:142
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
Ipopt::LowRankAugSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Ipopt::LowRankAugSystemSolver::num_neg_evals_
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
Definition: IpLowRankAugSystemSolver.hpp:180
IpAugSystemSolver.hpp
Ipopt::LowRankAugSystemSolver::~LowRankAugSystemSolver
virtual ~LowRankAugSystemSolver()
Default destructor.
Ipopt::LowRankAugSystemSolver::j_d_tag_
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Definition: IpLowRankAugSystemSolver.hpp:148
Ipopt::MultiVectorMatrix
Class for Matrices with few columns that consists of Vectors.
Definition: IpMultiVectorMatrix.hpp:25
Ipopt::LowRankAugSystemSolver::Vtilde1_
SmartPtr< MultiVectorMatrix > Vtilde1_
Definition: IpLowRankAugSystemSolver.hpp:163
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::LowRankAugSystemSolver::first_call_
bool first_call_
Definition: IpLowRankAugSystemSolver.hpp:160
Ipopt::LowRankAugSystemSolver::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)
Method that compares the tags of the data for the matrix with those from the previous call...
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:80
Ipopt::LowRankAugSystemSolver::compound_sol_vecspace_
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors ...
Definition: IpLowRankAugSystemSolver.hpp:170
Ipopt::LowRankAugSystemSolver::operator=
void operator=(const LowRankAugSystemSolver &)
Overloaded Equals Operator.
Ipopt::LowRankAugSystemSolver::Utilde2_
SmartPtr< MultiVectorMatrix > Utilde2_
Definition: IpLowRankAugSystemSolver.hpp:164
Ipopt::LowRankAugSystemSolver::UpdateFactorization
ESymSolverStatus UpdateFactorization(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_rhs_x, const Vector &proto_rhs_s, const Vector &proto_rhs_c, const Vector &proto_rhs_d, bool check_NegEVals, Index numberOfNegEVals)
Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.
Ipopt::LowRankAugSystemSolver::Solve
virtual ESymSolverStatus Solve(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 &rhs_x, const Vector &rhs_s, const Vector &rhs_c, const Vector &rhs_d, Vector &sol_x, Vector &sol_s, Vector &sol_c, Vector &sol_d, bool check_NegEVals, Index numberOfNegEVals)
Set up the augmented system and solve it for a given right hand side.
Ipopt::LowRankAugSystemSolver::delta_s_
double delta_s_
Most recent value of delta_s from Set method.
Definition: IpLowRankAugSystemSolver.hpp:134
IpDiagMatrix.hpp
IpDenseGenMatrix.hpp
Ipopt::LowRankAugSystemSolver::delta_x_
double delta_x_
Most recent value of delta_x from Set method.
Definition: IpLowRankAugSystemSolver.hpp:128
Ipopt::LowRankAugSystemSolver::Wdiag_
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update...
Definition: IpLowRankAugSystemSolver.hpp:167
Ipopt::LowRankAugSystemSolver::delta_d_
double delta_d_
Most recent value of delta_d from Set method.
Definition: IpLowRankAugSystemSolver.hpp:154