Ipopt  3.12.11
IpLowRankAugSystemSolver.hpp
Go to the documentation of this file.
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
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:
101
103  void operator=(const LowRankAugSystemSolver&);
105
111
122  double w_factor_;
128  double delta_x_;
134  double delta_s_;
144  double delta_c_;
154  double delta_d_;
156
172
181
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
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,
230  SmartPtr<MultiVectorMatrix>& Vtilde1_x,
231  bool check_NegEVals,
232  Index numberOfNegEVals);
233
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
double delta_c_
Most recent value of delta_c from Set method.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
ESymSolverStatus
Enum to report outcome of a linear solve.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
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)
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
LowRankAugSystemSolver()
Default constructor.
TaggedObject::Tag w_tag_
Tag for W matrix.
double w_factor_
Most recent value of W_factor.
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
This class stores a list of user set options.
Base class for Solver for the augmented system.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
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...
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.
Matrix Base Class.
Definition: IpMatrix.hpp:27
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual ~LowRankAugSystemSolver()
Default destructor.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Class for Matrices with few columns that consists of Vectors.
SmartPtr< MultiVectorMatrix > Vtilde1_
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
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...
unsigned int Tag
Type for the Tag values.
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 &)