Ipopt Documentation  
 
Loading...
Searching...
No Matches
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// Authors: Andreas Waechter IBM 2005-12-27
6
7#ifndef __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
8#define __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
9
10#include "IpAugSystemSolver.hpp"
11#include "IpDenseGenMatrix.hpp"
13#include "IpDiagMatrix.hpp"
14
15namespace Ipopt
16{
17
23{
24public:
27
29 AugSystemSolver& aug_system_solver
30 );
31
35
38 const OptionsList& options,
39 const std::string& prefix
40 );
41
44 const SymMatrix* W,
45 Number W_factor,
46 const Vector* D_x,
47 Number delta_x,
48 const Vector* D_s,
49 Number delta_s,
50 const Matrix* J_c,
51 const Vector* D_c,
52 Number delta_c,
53 const Matrix* J_d,
54 const Vector* D_d,
55 Number 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 );
67
75 virtual Index NumberOfNegEVals() const;
76
81 virtual bool ProvidesInertia() const;
82
90 virtual bool IncreaseQuality();
91
92private:
103
105
109 );
110
113 );
115
121
127
132
135
141
144
149
152
158
164
167
173
179
183
192
196
201
212
215
219 const SymMatrix* W,
220 Number W_factor,
221 const Vector* D_x,
222 Number delta_x,
223 const Vector* D_s,
224 Number delta_s,
225 const Matrix& J_c,
226 const Vector* D_c,
227 Number delta_c,
228 const Matrix& J_d,
229 const Vector* D_d,
230 Number delta_d,
231 const Vector& proto_rhs_x,
232 const Vector& proto_rhs_s,
233 const Vector& proto_rhs_c,
234 const Vector& proto_rhs_d,
235 bool check_NegEVals,
236 Index numberOfNegEVals
237 );
238
247 const Vector* D_x,
248 Number delta_x,
249 const Vector* D_s,
250 Number delta_s,
251 const Matrix& J_c,
252 const Vector* D_c,
253 Number delta_c,
254 const Matrix& J_d,
255 const Vector* D_d,
256 Number delta_d,
257 const Vector& proto_rhs_x,
258 const Vector& proto_rhs_s,
259 const Vector& proto_rhs_c,
260 const Vector& proto_rhs_d,
261 const MultiVectorMatrix& V,
262 const SmartPtr<const Matrix>& P_LM,
266 bool check_NegEVals,
267 Index numberOfNegEVals
268 );
269
276 const SymMatrix* W,
277 Number W_factor,
278 const Vector* D_x,
279 Number delta_x,
280 const Vector* D_s,
281 Number delta_s,
282 const Matrix& J_c,
283 const Vector* D_c,
284 Number delta_c,
285 const Matrix& J_d,
286 const Vector* D_d,
287 Number delta_d
288 );
290};
291
292} // namespace Ipopt
293
294#endif
Base class for Solver for the augmented system.
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
Number delta_d_
Most recent value of delta_d from Set method.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual ~LowRankAugSystemSolver()
Destructor.
Number delta_s_
Most recent value of delta_s from Set method.
Number delta_c_
Most recent value of delta_c from Set method.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
ESymSolverStatus UpdateFactorization(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number 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_,...
Number delta_x_
Most recent value of delta_x from Set method.
LowRankAugSystemSolver(const LowRankAugSystemSolver &)
Copy Constructor.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
void operator=(const LowRankAugSystemSolver &)
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
SmartPtr< MultiVectorMatrix > Vtilde1_
SmartPtr< MultiVectorMatrix > Utilde2_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors .
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
LowRankAugSystemSolver()
Default constructor.
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Number w_factor_
Most recent value of W_factor.
bool AugmentedSystemRequiresChange(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d)
Method that compares the tags of the data for the matrix with those from the previous call.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
LowRankAugSystemSolver(AugSystemSolver &aug_system_solver)
Constructor using only a linear solver object.
virtual ESymSolverStatus Solve(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix *J_c, const Vector *D_c, Number delta_c, const Matrix *J_d, const Vector *D_d, Number 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.
ESymSolverStatus SolveMultiVector(const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number 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...
Matrix Base Class.
Definition: IpMatrix.hpp:28
Class for Matrices with few columns that consists of Vectors.
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:165
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:21
unsigned int Tag
Type for the Tag values.
Vector Base Class.
Definition: IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ESymSolverStatus
Enum to report outcome of a linear solve.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition: IpTypes.hpp:17