Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpAugRestoSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpAugRestoSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IP_AUGRESTOSYSTEMSOLVER_HPP__
10 #define __IP_AUGRESTOSYSTEMSOLVER_HPP__
11 
12 #include "IpAugSystemSolver.hpp"
13 
14 namespace Ipopt
15 {
16 
24  {
25  public:
34  AugRestoSystemSolver(AugSystemSolver& orig_aug_solver,
35  bool skip_orig_aug_solver_init=true);
36 
38  virtual ~AugRestoSystemSolver();
40 
42  bool InitializeImpl(const OptionsList& options,
43  const std::string& prefix);
44 
49  virtual ESymSolverStatus Solve(
50  const SymMatrix* W,
51  double W_factor,
52  const Vector* D_x,
53  double delta_x,
54  const Vector* D_s,
55  double delta_s,
56  const Matrix* J_c,
57  const Vector* D_c,
58  double delta_c,
59  const Matrix* J_d,
60  const Vector* D_d,
61  double delta_d,
62  const Vector& rhs_x,
63  const Vector& rhs_s,
64  const Vector& rhs_c,
65  const Vector& rhs_d,
66  Vector& sol_x,
67  Vector& sol_s,
68  Vector& sol_c,
69  Vector& sol_d,
70  bool check_NegEVals,
71  Index numberOfNegEVals);
72 
76  virtual Index NumberOfNegEVals() const
77  {
78  return orig_aug_solver_->NumberOfNegEVals();
79  }
80 
84  virtual bool ProvidesInertia() const
85  {
86  return orig_aug_solver_->ProvidesInertia();
87  }
88 
95  virtual bool IncreaseQuality()
96  {
97  return orig_aug_solver_->IncreaseQuality();
98  }
99 
100  private:
111 
114 
116  void operator=(const AugRestoSystemSolver&);
118 
131 
135  const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
136  const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
137  const Vector* D_c,
138  const Vector& any_vec_in_c);
139 
141  const Matrix& Pd_L,
142  const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
143  const Matrix& neg_Pd_U,
144  const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
145  const Vector* D_d,
146  const Vector& any_vec_in_d);
147 
150  const SmartPtr<const Vector>& sigma_tilde_n_c,
151  Number delta_x,
152  const Vector& any_vec_in_n_c);
153 
155  const SmartPtr<const Vector>& sigma_tilde_p_c,
156  Number delta_x,
157  const Vector& any_vec_in_p_c);
158 
160  const SmartPtr<const Vector>& sigma_tilde_n_d,
161  Number delta_x,
162  const Vector& any_vec_in_n_d);
163 
165  const SmartPtr<const Vector>& sigma_tilde_p_d,
166  Number delta_x,
167  const Vector& any_vec_in_p_d);
168 
170  const SmartPtr<const Vector>& CD_x0,
171  Number factor,
172  const Vector& wr_d);
173 
175  const Vector& rhs_c,
176  const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
177  const Vector& rhs_n_c,
178  const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
179  const Vector& rhs_p_c);
180 
182  const Vector& rhs_d,
183  const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
184  const Vector& rhs_n_d,
185  const Matrix& pd_L,
186  const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
187  const Vector& rhs_p_d,
188  const Matrix& pd_U);
190 
193  };
194 
195 } // namespace Ipopt
196 
197 #endif
ESymSolverStatus
Enum to report outcome of a linear solve.
CachedResults< SmartPtr< Vector > > rhs_dR_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_n_c_inv_cache_
Class that converts the an augmented system with compound restoration pieces into a smaller &quot;pivoted&quot;...
SmartPtr< const Vector > Sigma_tilde_n_c_inv(const SmartPtr< const Vector > &sigma_tilde_n_c, Number delta_x, const Vector &any_vec_in_n_c)
Sigma tilde is the sum of Sigma and delta_x times the identity.
virtual Index NumberOfNegEVals() const
Returns the number of negative eigenvalues from the original augmented system call.
SmartPtr< const Vector > Sigma_tilde_p_d_inv(const SmartPtr< const Vector > &sigma_tilde_p_d, Number delta_x, const Vector &any_vec_in_p_d)
AugRestoSystemSolver()
Default Constructor.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Vector Base Class.
Definition: IpVector.hpp:47
CachedResults< SmartPtr< Vector > > d_x_plus_wr_d_cache_
SmartPtr< const Vector > Neg_Omega_d_plus_D_d(const Matrix &Pd_L, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Matrix &neg_Pd_U, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector *D_d, const Vector &any_vec_in_d)
CachedResults< SmartPtr< Vector > > neg_omega_c_plus_D_c_cache_
SmartPtr< const Vector > Sigma_tilde_p_c_inv(const SmartPtr< const Vector > &sigma_tilde_p_c, Number delta_x, const Vector &any_vec_in_p_c)
SmartPtr< const Vector > Neg_Omega_c_plus_D_c(const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector *D_c, const Vector &any_vec_in_c)
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
CachedResults< SmartPtr< Vector > > sigma_tilde_p_d_inv_cache_
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
SmartPtr< AugSystemSolver > orig_aug_solver_
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.
SmartPtr< const Vector > D_x_plus_wr_d(const SmartPtr< const Vector > &CD_x0, Number factor, const Vector &wr_d)
Matrix Base Class.
Definition: IpMatrix.hpp:27
Cache Priority Enum.
void operator=(const AugRestoSystemSolver &)
Overloaded Equals Operator.
SmartPtr< const Vector > Sigma_tilde_n_d_inv(const SmartPtr< const Vector > &sigma_tilde_n_d, Number delta_x, const Vector &any_vec_in_n_d)
SmartPtr< const Vector > Rhs_dR(const Vector &rhs_d, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Vector &rhs_n_d, const Matrix &pd_L, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector &rhs_p_d, const Matrix &pd_U)
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
CachedResults< SmartPtr< Vector > > sigma_tilde_n_d_inv_cache_
virtual ~AugRestoSystemSolver()
Default destructor.
virtual ESymSolverStatus Solve(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, 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)
Translate the augmented system (in the full space of the restoration variables) into the smaller spac...
SmartPtr< const Vector > Rhs_cR(const Vector &rhs_c, const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const Vector &rhs_n_c, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector &rhs_p_c)
CachedResults< SmartPtr< Vector > > neg_omega_d_plus_D_d_cache_
CachedResults< SmartPtr< Vector > > rhs_cR_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_p_c_inv_cache_