Ipopt Documentation  
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"
12 #include "IpMultiVectorMatrix.hpp"
13 #include "IpDiagMatrix.hpp"
14 
15 namespace Ipopt
16 {
17 
23 {
24 public:
26 
29  AugSystemSolver& aug_system_solver
30  );
31 
33  virtual ~LowRankAugSystemSolver();
35 
37  bool InitializeImpl(
38  const OptionsList& options,
39  const std::string& prefix
40  );
41 
43  virtual ESymSolverStatus Solve(
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 
92 private:
102 
105 
109  );
110 
111  void operator=(
113  );
115 
121 
126 
132 
135 
141 
144 
149 
152 
158 
164 
167 
173 
179 
183 
186  bool first_call_;
192 
196 
201 
212 
214 
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,
265  SmartPtr<MultiVectorMatrix>& Vtilde1_x,
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
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
ESymSolverStatus
Enum to report outcome of a linear solve.
Number delta_d_
Most recent value of delta_d from Set method.
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
Vector Base Class.
Definition: IpVector.hpp:47
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_, compound_sol_vecspace_.
LowRankAugSystemSolver()
Default constructor.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:20
TaggedObject::Tag w_tag_
Tag for W matrix.
This file contains a base class for all exceptions and a set of macros to help with exceptions...
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:164
This class stores a list of user set options.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Number delta_s_
Most recent value of delta_s from Set method.
Base class for Solver for the augmented system.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
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.
Matrix Base Class.
Definition: IpMatrix.hpp:27
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual ~LowRankAugSystemSolver()
Destructor.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Class for Matrices with few columns that consists of Vectors.
ipnumber Number
Type of all numbers.
Definition: IpTypes.hpp:17
SmartPtr< MultiVectorMatrix > Vtilde1_
Number delta_c_
Most recent value of delta_c from Set method.
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...
unsigned int Tag
Type for the Tag values.
Number w_factor_
Most recent value of W_factor.
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors ...
void operator=(const LowRankAugSystemSolver &)
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...
SmartPtr< MultiVectorMatrix > Utilde2_
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update...
Number delta_x_
Most recent value of delta_x from Set method.