Ipopt Documentation  
IpPDFullSpaceSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2007 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 __IPPDFULLSPACESOLVER_HPP__
8 #define __IPPDFULLSPACESOLVER_HPP__
9 
10 #include "IpPDSystemSolver.hpp"
11 #include "IpAugSystemSolver.hpp"
13 
14 namespace Ipopt
15 {
16 
31 {
32 public:
39  AugSystemSolver& augSysSolver,
40  PDPerturbationHandler& perturbHandler
41  );
42 
44  virtual ~PDFullSpaceSolver();
46 
47  /* overloaded from AlgorithmStrategyObject */
48  bool InitializeImpl(
49  const OptionsList& options,
50  const std::string& prefix
51  );
52 
55  virtual bool Solve(
56  Number alpha,
57  Number beta,
58  const IteratesVector& rhs,
59  IteratesVector& res,
60  bool allow_inexact = false,
61  bool improve_solution = false
62  );
63 
66  static void RegisterOptions(
68  );
70 
71 private:
84 
87  const PDFullSpaceSolver&
88  );
90 
95 
99 
104 
110 
115 
118 
123 
129 
134 
137 
141 
149  bool SolveOnce(
150  bool resolve_unmodified,
151  bool pretend_singular,
152  const SymMatrix& W,
153  const Matrix& J_c,
154  const Matrix& J_d,
155  const Matrix& Px_L,
156  const Matrix& Px_U,
157  const Matrix& Pd_L,
158  const Matrix& Pd_U,
159  const Vector& z_L,
160  const Vector& z_U,
161  const Vector& v_L,
162  const Vector& v_U,
163  const Vector& slack_x_L,
164  const Vector& slack_x_U,
165  const Vector& slack_s_L,
166  const Vector& slack_s_U,
167  const Vector& sigma_x,
168  const Vector& sigma_s,
169  Number alpha,
170  Number beta,
171  const IteratesVector& rhs,
172  IteratesVector& res
173  );
174 
178  void ComputeResiduals(
179  const SymMatrix& W,
180  const Matrix& J_c,
181  const Matrix& J_d,
182  const Matrix& Px_L,
183  const Matrix& Px_U,
184  const Matrix& Pd_L,
185  const Matrix& Pd_U,
186  const Vector& z_L,
187  const Vector& z_U,
188  const Vector& v_L,
189  const Vector& v_U,
190  const Vector& slack_x_L,
191  const Vector& slack_x_U,
192  const Vector& slack_s_L,
193  const Vector& slack_s_U,
194  const Vector& sigma_x,
195  const Vector& sigma_s,
196  Number alpha,
197  Number beta,
198  const IteratesVector& rhs,
199  const IteratesVector& res,
200  IteratesVector& resid
201  );
202 
209  const IteratesVector& rhs,
210  const IteratesVector& res,
211  const IteratesVector& resid
212  );
213 
217  void SinvBlrmZPTdBr(
218  Number alpha,
219  const Vector& S,
220  const Vector& R,
221  const Vector& Z,
222  const Matrix& P,
223  const Vector& g,
224  Vector& X
225  );
227 };
228 
229 } // namespace Ipopt
230 
231 #endif
IpPDPerturbationHandler.hpp
Ipopt::PDFullSpaceSolver::operator=
PDFullSpaceSolver & operator=(const PDFullSpaceSolver &)
Default Assignment Operator.
Ipopt::PDPerturbationHandler
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
Definition: IpPDPerturbationHandler.hpp:23
Ipopt::PDFullSpaceSolver::neg_curv_test_tol_
Number neg_curv_test_tol_
Tolerance for heuristic to ignore wrong inertia.
Definition: IpPDFullSpaceSolver.hpp:136
Ipopt
This file contains a base class for all exceptions and a set of macros to help with exceptions.
Definition: IpInexactAlgBuilder.hpp:13
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Ipopt::PDFullSpaceSolver::augsys_improved_
bool augsys_improved_
Flag indicating if for the current matrix the solution quality of the augmented system solver has alr...
Definition: IpPDFullSpaceSolver.hpp:108
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
Ipopt::PDFullSpaceSolver
This is the implementation of the Primal-Dual System, using the full space approach with a direct lin...
Definition: IpPDFullSpaceSolver.hpp:30
Ipopt::PDFullSpaceSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::PDFullSpaceSolver::dummy_cache_
CachedResults< void * > dummy_cache_
A dummy cache to figure out if the deltas are still up to date.
Definition: IpPDFullSpaceSolver.hpp:103
Ipopt::PDFullSpaceSolver::PDFullSpaceSolver
PDFullSpaceSolver()
Default Constructor.
Ipopt::PDFullSpaceSolver::ComputeResidualRatio
Number ComputeResidualRatio(const IteratesVector &rhs, const IteratesVector &res, const IteratesVector &resid)
Internal function for computing the ratio of the residual compared to the right hand side and solutio...
Ipopt::PDFullSpaceSolver::Solve
virtual bool Solve(Number alpha, Number beta, const IteratesVector &rhs, IteratesVector &res, bool allow_inexact=false, bool improve_solution=false)
Solve the primal dual system, given one right hand side.
Ipopt::PDFullSpaceSolver::min_refinement_steps_
Index min_refinement_steps_
Minimal number of iterative refinement performed per backsolve.
Definition: IpPDFullSpaceSolver.hpp:114
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Ipopt::PDFullSpaceSolver::perturbHandler_
SmartPtr< PDPerturbationHandler > perturbHandler_
Pointer to the Perturbation Handler.
Definition: IpPDFullSpaceSolver.hpp:97
IpAugSystemSolver.hpp
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
Ipopt::PDFullSpaceSolver::augSysSolver_
SmartPtr< AugSystemSolver > augSysSolver_
Pointer to the Solver for the augmented system.
Definition: IpPDFullSpaceSolver.hpp:94
IpPDSystemSolver.hpp
Ipopt::PDFullSpaceSolver::residual_improvement_factor_
Number residual_improvement_factor_
Factor defining require improvement to consider iterative refinement successful.
Definition: IpPDFullSpaceSolver.hpp:133
Ipopt::PDFullSpaceSolver::residual_ratio_singular_
Number residual_ratio_singular_
If the residual_ratio is larger than this value after trying to improve the solution,...
Definition: IpPDFullSpaceSolver.hpp:128
Ipopt::CachedResults< void * >
Ipopt::PDFullSpaceSolver::SolveOnce
bool SolveOnce(bool resolve_unmodified, bool pretend_singular, const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Matrix &Px_L, const Matrix &Px_U, const Matrix &Pd_L, const Matrix &Pd_U, const Vector &z_L, const Vector &z_U, const Vector &v_L, const Vector &v_U, const Vector &slack_x_L, const Vector &slack_x_U, const Vector &slack_s_L, const Vector &slack_s_U, const Vector &sigma_x, const Vector &sigma_s, Number alpha, Number beta, const IteratesVector &rhs, IteratesVector &res)
Internal function for a single backsolve (which will be used for iterative refinement on the outside)...
Ipopt::PDSystemSolver
Pure Primal Dual System Solver Base Class.
Definition: IpPDSystemSolver.hpp:74
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::PDFullSpaceSolver::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
Ipopt::PDFullSpaceSolver::SinvBlrmZPTdBr
void SinvBlrmZPTdBr(Number alpha, const Vector &S, const Vector &R, const Vector &Z, const Matrix &P, const Vector &g, Vector &X)
Compute .
Ipopt::PDFullSpaceSolver::residual_ratio_max_
Number residual_ratio_max_
Maximal allowed ratio of the norm of the residual over the norm of the right hand side and solution.
Definition: IpPDFullSpaceSolver.hpp:122
Ipopt::PDFullSpaceSolver::max_refinement_steps_
Index max_refinement_steps_
Maximal number of iterative refinement performed per backsolve.
Definition: IpPDFullSpaceSolver.hpp:117
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::PDFullSpaceSolver::neg_curv_test_reg_
bool neg_curv_test_reg_
Do curvature test with primal regularization.
Definition: IpPDFullSpaceSolver.hpp:139
Ipopt::PDFullSpaceSolver::ComputeResiduals
void ComputeResiduals(const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Matrix &Px_L, const Matrix &Px_U, const Matrix &Pd_L, const Matrix &Pd_U, const Vector &z_L, const Vector &z_U, const Vector &v_L, const Vector &v_U, const Vector &slack_x_L, const Vector &slack_x_U, const Vector &slack_s_L, const Vector &slack_s_U, const Vector &sigma_x, const Vector &sigma_s, Number alpha, Number beta, const IteratesVector &rhs, const IteratesVector &res, IteratesVector &resid)
Internal function for computing the residual (resid) given the right hand side (rhs) and the solution...
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::IteratesVector
Specialized CompoundVector class specifically for the algorithm iterates.
Definition: IpIteratesVector.hpp:25
Ipopt::PDFullSpaceSolver::~PDFullSpaceSolver
virtual ~PDFullSpaceSolver()
Default destructor.