Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpPDPerturbationHandler.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpPDPerturbationHandler.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2005-08-04
8 
9 #ifndef __IPPDPERTURBATIONHANDLER_HPP__
10 #define __IPPDPERTURBATIONHANDLER_HPP__
11 
12 #include "IpAlgStrategy.hpp"
13 
14 namespace Ipopt
15 {
16 
25  {
26  public:
33  {}
35 
36  /* overloaded from AlgorithmStrategyObject */
37  virtual bool InitializeImpl(const OptionsList& options,
38  const std::string& prefix);
39 
46  virtual bool ConsiderNewSystem(Number& delta_x, Number& delta_s,
47  Number& delta_c, Number& delta_d);
48 
53  virtual bool PerturbForSingularity(Number& delta_x, Number& delta_s,
54  Number& delta_c, Number& delta_d);
55 
60  virtual bool PerturbForWrongInertia(Number& delta_x, Number& delta_s,
61  Number& delta_c, Number& delta_d);
62 
65  virtual void CurrentPerturbation(Number& delta_x, Number& delta_s,
66  Number& delta_c, Number& delta_d);
67 
70  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
72 
73  protected:
84 
86  void operator=(const PDPerturbationHandler&);
88 
100 
113 
117 
122  {
126  };
127 
131 
135 
140 
143  {
149  };
150 
154 
183 
189  bool get_deltas_for_wrong_inertia(Number& delta_x, Number& delta_s,
190  Number& delta_c, Number& delta_d);
191 
195  void finalize_test();
197  Number delta_cd();
199 
200  };
201 
202 } // namespace Ipopt
203 
204 #endif
virtual void CurrentPerturbation(Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
Just return the perturbation values that have been determined most recently.
Number delta_x_last_
The last nonzero value for delta_x.
This is the base class for all algorithm strategy objects.
Number delta_xs_inc_fact_
Increase factor for delta_xs for later perturbations.
DegenType
Type for degeneracy flags.
Number delta_d_curr_
The current value for delta_d.
Number delta_xs_first_inc_fact_
Increase factor for delta_xs for first required perturbation.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Number delta_d_last_
The last nonzero value for delta_d.
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
bool get_deltas_for_wrong_inertia_called_
Flag indicating if for the given matrix the perturb for wrong inertia method has already been called...
DegenType jac_degenerate_
Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient...
Number delta_xs_min_
Smallest possible perturbation for x and s.
virtual bool ConsiderNewSystem(Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
This method must be called for each new matrix, and before any other method for generating perturbati...
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
bool get_deltas_for_wrong_inertia(Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
Internal version of PerturbForWrongInertia with the difference, that finalize_test is not called...
This class stores a list of user set options.
Number delta_xs_init_
Very first trial value for delta_xs perturbation.
Number delta_x_curr_
The current value for delta_x.
Number delta_cd_val_
Size of perturbation for c and d blocks.
Number delta_xs_dec_fact_
Decrease factor for delta_xs for later perturbations.
virtual bool PerturbForSingularity(Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
This method returns pertubation factors for the case when the most recent factorization resulted in a...
Number delta_s_last_
The last nonzero value for delta_s.
Number delta_cd()
Compute perturbation value for constraints.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
void finalize_test()
This method is call whenever a matrix had been factorization and is not singular. ...
PDPerturbationHandler()
Default Constructor.
Number delta_s_curr_
The current value for delta_s.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
Number delta_c_curr_
The current value for delta_c.
Index degen_iters_max_
Required number of iterations for degeneracy conclusions.
TrialStatus test_status_
Current status.
virtual ~PDPerturbationHandler()
Default destructor.
virtual bool PerturbForWrongInertia(Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
This method returns pertubation factors for the case when the most recent factorization resulted in a...
DegenType hess_degenerate_
Flag indicating whether the reduced Hessian matrix is thought to be structurally singular.
Number delta_cd_exp_
Exponent on mu in formula for of perturbation for c and d blocks.
void operator=(const PDPerturbationHandler &)
Overloaded Equals Operator.
bool reset_last_
Flag indicating whether the new values are based on the perturbations in the last iteration or in the...
Number delta_xs_max_
Maximal perturbation for x and s.
Index degen_iters_
Flag counting matrices in which degeneracy was observed in the first successive iterations.
TrialStatus
Status of current trial configuration.
bool perturb_always_cd_
Flag indicating that the delta_c, delta_d perturbation should always be used.
Number delta_c_last_
The last nonzero value for delta_c.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.