Ipopt  3.12.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
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.
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.