Ipopt  3.12.8
IpGenAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpGenAugSystemSolver.hpp 2269 2013-05-05 11:32:40Z stefan $
6 //
7 // Authors: Andreas Waechter IBM 2007-03-01
8 
9 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10 #define __IP_STDAUGSYSTEMSOLVER_HPP__
11 
12 #include "IpAugSystemSolver.hpp"
14 
15 namespace Ipopt
16 {
23  {
24  public:
28  GenAugSystemSolver(GenKKTSolverInterface& SolverInterface);
29 
31  virtual ~GenAugSystemSolver();
33 
35  bool InitializeImpl(const OptionsList& options,
36  const std::string& prefix);
37 
43  const SymMatrix* W,
44  double W_factor,
45  const Vector* D_x,
46  double delta_x,
47  const Vector* D_s,
48  double delta_s,
49  const Matrix* J_c,
50  const Vector* D_c,
51  double delta_c,
52  const Matrix* J_d,
53  const Vector* D_d,
54  double delta_d,
55  std::vector<SmartPtr<const Vector> >& rhs_xV,
56  std::vector<SmartPtr<const Vector> >& rhs_sV,
57  std::vector<SmartPtr<const Vector> >& rhs_cV,
58  std::vector<SmartPtr<const Vector> >& rhs_dV,
59  std::vector<SmartPtr<Vector> >& sol_xV,
60  std::vector<SmartPtr<Vector> >& sol_sV,
61  std::vector<SmartPtr<Vector> >& sol_cV,
62  std::vector<SmartPtr<Vector> >& sol_dV,
63  bool check_NegEVals,
64  Index numberOfNegEVals);
65 
72  virtual Index NumberOfNegEVals() const;
73 
77  virtual bool ProvidesInertia() const;
78 
85  virtual bool IncreaseQuality();
86 
87  private:
100 
102  void operator=(const GenAugSystemSolver&);
104 
107  bool AugmentedSystemChanged(const SymMatrix* W,
108  double W_factor,
109  const Vector* D_x,
110  double delta_x,
111  const Vector* D_s,
112  double delta_s,
113  const Matrix& J_c,
114  const Vector* D_c,
115  double delta_c,
116  const Matrix& J_d,
117  const Vector* D_d,
118  double delta_d);
119 
120  void UpdateTags(const SymMatrix* W,
121  double W_factor,
122  const Vector* D_x,
123  double delta_x,
124  const Vector* D_s,
125  double delta_s,
126  const Matrix& J_c,
127  const Vector* D_c,
128  double delta_c,
129  const Matrix& J_d,
130  const Vector* D_d,
131  double delta_d);
132 
137 
148  double w_factor_;
154  double delta_x_;
160  double delta_s_;
170  double delta_c_;
180  double delta_d_;
182 
191 
198  };
199 
200 } // namespace Ipopt
201 
202 #endif
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...
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
ESymSolverStatus
Enum to report outcome of a linear solve.
double delta_x_
Most recent value of delta_x from Set method.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Solver for the augmented system using GenKKTSolverInterfaces.
SmartPtr< GenKKTSolverInterface > solver_interface_
The linear solver object that is to be used to solve the linear systems.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
double delta_c_
Most recent value of delta_c from Set method.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Vector Base Class.
Definition: IpVector.hpp:47
Base class for interfaces to symmetric indefinite linear solvers for generic matrices.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
GenAugSystemSolver()
Default constructor.
This class stores a list of user set options.
double w_factor_
Most recent value of W_factor.
Base class for Solver for the augmented system.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Matrix Base Class.
Definition: IpMatrix.hpp:27
void UpdateTags(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)
TaggedObject::Tag w_tag_
Tag for W matrix.
void operator=(const GenAugSystemSolver &)
Overloaded Equals Operator.
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
bool AugmentedSystemChanged(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...
double delta_d_
Most recent value of delta_d from Set method.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
double delta_s_
Most recent value of delta_s from Set method.
unsigned int Tag
Type for the Tag values.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
virtual ~GenAugSystemSolver()
Default destructor.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before...
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.