Ipopt Documentation  
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 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6 
7 #ifndef __IP_AUGRESTOSYSTEMSOLVER_HPP__
8 #define __IP_AUGRESTOSYSTEMSOLVER_HPP__
9 
10 #include "IpAugSystemSolver.hpp"
11 
12 namespace Ipopt
13 {
14 
24 {
25 public:
38  AugSystemSolver& orig_aug_solver,
39  bool skip_orig_aug_solver_init = true
40  );
41 
43  virtual ~AugRestoSystemSolver();
45 
47  bool InitializeImpl(
48  const OptionsList& options,
49  const std::string& prefix
50  );
51 
56  virtual ESymSolverStatus Solve(
57  const SymMatrix* W,
58  double W_factor,
59  const Vector* D_x,
60  double delta_x,
61  const Vector* D_s,
62  double delta_s,
63  const Matrix* J_c,
64  const Vector* D_c,
65  double delta_c,
66  const Matrix* J_d,
67  const Vector* D_d,
68  double delta_d,
69  const Vector& rhs_x,
70  const Vector& rhs_s,
71  const Vector& rhs_c,
72  const Vector& rhs_d,
73  Vector& sol_x,
74  Vector& sol_s,
75  Vector& sol_c,
76  Vector& sol_d,
77  bool check_NegEVals,
78  Index numberOfNegEVals
79  );
80 
84  virtual Index NumberOfNegEVals() const
85  {
86  return orig_aug_solver_->NumberOfNegEVals();
87  }
88 
93  virtual bool ProvidesInertia() const
94  {
95  return orig_aug_solver_->ProvidesInertia();
96  }
97 
105  virtual bool IncreaseQuality()
106  {
107  return orig_aug_solver_->IncreaseQuality();
108  }
109 
110 private:
123 
126  const AugRestoSystemSolver&
127  );
128 
130  void operator=(
131  const AugRestoSystemSolver&
132  );
134 
147 
151  const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
152  const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
153  const Vector* D_c,
154  const Vector& any_vec_in_c
155  );
156 
158  const Matrix& Pd_L,
159  const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
160  const Matrix& neg_Pd_U,
161  const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
162  const Vector* D_d,
163  const Vector& any_vec_in_d
164  );
165 
168  const SmartPtr<const Vector>& sigma_tilde_n_c,
169  Number delta_x,
170  const Vector& any_vec_in_n_c
171  );
172 
174  const SmartPtr<const Vector>& sigma_tilde_p_c,
175  Number delta_x,
176  const Vector& any_vec_in_p_c
177  );
178 
180  const SmartPtr<const Vector>& sigma_tilde_n_d,
181  Number delta_x,
182  const Vector& any_vec_in_n_d
183  );
184 
186  const SmartPtr<const Vector>& sigma_tilde_p_d,
187  Number delta_x,
188  const Vector& any_vec_in_p_d
189  );
190 
192  const SmartPtr<const Vector>& CD_x0,
193  Number factor,
194  const Vector& wr_d
195  );
196 
198  const Vector& rhs_c,
199  const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
200  const Vector& rhs_n_c,
201  const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
202  const Vector& rhs_p_c
203  );
204 
206  const Vector& rhs_d,
207  const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
208  const Vector& rhs_n_d,
209  const Matrix& pd_L,
210  const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
211  const Vector& rhs_p_d,
212  const Matrix& pd_U
213  );
215 
218 };
219 
220 } // namespace Ipopt
221 
222 #endif
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:19
Ipopt::AugRestoSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Definition: IpAugRestoSystemSolver.hpp:93
Ipopt::AugRestoSystemSolver::Sigma_tilde_n_d_inv
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)
Ipopt::AugRestoSystemSolver::neg_omega_c_plus_D_c_cache_
CachedResults< SmartPtr< Vector > > neg_omega_c_plus_D_c_cache_
Definition: IpAugRestoSystemSolver.hpp:137
Ipopt::AugRestoSystemSolver::D_x_plus_wr_d
SmartPtr< const Vector > D_x_plus_wr_d(const SmartPtr< const Vector > &CD_x0, Number factor, const Vector &wr_d)
Ipopt::AugRestoSystemSolver::d_x_plus_wr_d_cache_
CachedResults< SmartPtr< Vector > > d_x_plus_wr_d_cache_
Definition: IpAugRestoSystemSolver.hpp:143
Ipopt::AugRestoSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::AugRestoSystemSolver::sigma_tilde_p_c_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_p_c_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:140
Ipopt::AugRestoSystemSolver::Solve
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...
Ipopt
This file contains a base class for all exceptions and a set of macros to help with exceptions.
Definition: IpInexactAlgBuilder.hpp:13
Ipopt::AugRestoSystemSolver::neg_omega_d_plus_D_d_cache_
CachedResults< SmartPtr< Vector > > neg_omega_d_plus_D_d_cache_
Definition: IpAugRestoSystemSolver.hpp:138
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
Ipopt::AugRestoSystemSolver::rhs_dR_cache_
CachedResults< SmartPtr< Vector > > rhs_dR_cache_
Definition: IpAugRestoSystemSolver.hpp:145
Ipopt::AugRestoSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Definition: IpAugRestoSystemSolver.hpp:105
Ipopt::AugRestoSystemSolver::~AugRestoSystemSolver
virtual ~AugRestoSystemSolver()
Destructor.
Ipopt::AugRestoSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Returns the number of negative eigenvalues from the original augmented system call.
Definition: IpAugRestoSystemSolver.hpp:84
Ipopt::AugRestoSystemSolver::Rhs_cR
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)
Ipopt::AugRestoSystemSolver
Class that converts an augmented system with compound restoration pieces into a smaller "pivoted" sys...
Definition: IpAugRestoSystemSolver.hpp:23
Ipopt::AugRestoSystemSolver::rhs_cR_cache_
CachedResults< SmartPtr< Vector > > rhs_cR_cache_
Definition: IpAugRestoSystemSolver.hpp:144
Ipopt::AugRestoSystemSolver::sigma_tilde_n_c_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_n_c_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:139
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
IpAugSystemSolver.hpp
Ipopt::AugRestoSystemSolver::Sigma_tilde_n_c_inv
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.
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
Ipopt::AugRestoSystemSolver::Sigma_tilde_p_d_inv
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)
Ipopt::CachedResults
Templated class for Cached Results.
Definition: IpCachedResults.hpp:68
Ipopt::AugRestoSystemSolver::Sigma_tilde_p_c_inv
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)
Ipopt::AugRestoSystemSolver::AugRestoSystemSolver
AugRestoSystemSolver()
Default Constructor.
Ipopt::AugSystemSolver
Base class for Solver for the augmented system.
Definition: IpAugSystemSolver.hpp:36
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
Ipopt::AugRestoSystemSolver::orig_aug_solver_
SmartPtr< AugSystemSolver > orig_aug_solver_
Definition: IpAugRestoSystemSolver.hpp:216
Ipopt::AugRestoSystemSolver::Neg_Omega_d_plus_D_d
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)
Ipopt::AugRestoSystemSolver::sigma_tilde_p_d_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_p_d_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:142
Ipopt::AugRestoSystemSolver::skip_orig_aug_solver_init_
bool skip_orig_aug_solver_init_
Definition: IpAugRestoSystemSolver.hpp:217
Ipopt::AugRestoSystemSolver::Neg_Omega_c_plus_D_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)
Ipopt::AugRestoSystemSolver::operator=
void operator=(const AugRestoSystemSolver &)
Default Assignment Operator.
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::AugRestoSystemSolver::Rhs_dR
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)
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::AugRestoSystemSolver::sigma_tilde_n_d_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_n_d_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:141