Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpInexactPDSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpInexactPDSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2008-09-09
8 
9 #ifndef __IPINEXACTPDSOLVER_HPP__
10 #define __IPINEXACTPDSOLVER_HPP__
11 
12 #include "IpAlgStrategy.hpp"
13 #include "IpAugSystemSolver.hpp"
15 #include "IpInexactCq.hpp"
16 
17 namespace Ipopt
18 {
19 
25  {
26  public:
32  InexactPDSolver(AugSystemSolver& augSysSolver,
33  PDPerturbationHandler& perturbHandler);
34 
36  virtual ~InexactPDSolver();
38 
39  /* overloaded from AlgorithmStrategyObject */
40  bool InitializeImpl(const OptionsList& options,
41  const std::string& prefix);
42 
45  virtual bool Solve(const IteratesVector& rhs,
46  IteratesVector& sol);
47 
50  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
52 
53  private:
67 
70  {
71  InexactData& inexact_data =
72  static_cast<InexactData&>(IpData().AdditionalData());
73  DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
74  return inexact_data;
75  }
76 
79  {
80  InexactCq& inexact_cq =
81  static_cast<InexactCq&>(IpCq().AdditionalCq());
82  DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
83  return inexact_cq;
84  }
85 
93 
97  void ComputeResiduals(const SymMatrix& W,
98  const Matrix& J_c,
99  const Matrix& J_d,
100  const Matrix& Pd_L,
101  const Matrix& Pd_U,
102  const Vector& v_L,
103  const Vector& v_U,
104  const Vector& slack_s_L,
105  const Vector& slack_s_U,
106  const Vector& sigma_s,
107  const IteratesVector& rhs,
108  const IteratesVector& res,
109  IteratesVector& resid);
110 
114  bool HessianRequiresChange();
115 
132 
136 
138  };
139 
140 
141 } // namespace Ipopt
142 
143 #endif