Public Member Functions | Private Member Functions | Private Attributes
Ipopt::CGPerturbationHandler Class Reference

Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual system. More...

#include <IpCGPerturbationHandler.hpp>

Inheritance diagram for Ipopt::CGPerturbationHandler:
Ipopt::PDPerturbationHandler Ipopt::AlgorithmStrategyObject Ipopt::ReferencedObject

List of all members.

Public Member Functions

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.
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 perturbation factors.
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 singular matrix.
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 matrix with an incorrect number of negative eigenvalues.
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.
Constructors/Destructors
 CGPerturbationHandler ()
 Default Constructor.
virtual ~CGPerturbationHandler ()
 Default destructor.

Static Public Member Functions

static void RegisterOptions (SmartPtr< RegisteredOptions > roptions)
 Methods for IpoptType.

Private Member Functions

CGPenaltyDataCGPenData ()
 Method to easily access CGPenalty data.
CGPenaltyCqCGPenCq ()
 Method to easily access CGPenalty calculated quantities.
Default Compiler Generated Methods

(Hidden to avoid implicit creation/calling).

These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.

 CGPerturbationHandler (const CGPerturbationHandler &)
 Copy Constructor.
void operator= (const CGPerturbationHandler &)
 Overloaded Equals Operator.
Auxilliary methods
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.
void finalize_test ()
 This method is call whenever a matrix had been factorization and is not singular.
Number delta_cd ()
 Compute perturbation value for constraints.

Private Attributes

bool get_deltas_for_wrong_inertia_called_
 Flag indicating if for the given matrix the perturb for wrong inertia method has already been called.
Number penalty_max_
 The max reference value for scaling the penalty parameter.
Number mult_diverg_feasibility_tol_
 Feasibility for perturbation in pure Newton method.
Size of the most recent non-zero perturbation.
Number delta_x_last_
 The last nonzero value for delta_x.
Number delta_s_last_
 The last nonzero value for delta_s.
Number delta_c_last_
 The last nonzero value for delta_c.
Number delta_d_last_
 The last nonzero value for delta_d.
Size of the most recently suggested perturbation for the

current matrix.

Number delta_x_curr_
 The current value for delta_x.
Number delta_s_curr_
 The current value for delta_s.
Number delta_c_curr_
 The current value for delta_c.
Number delta_d_curr_
 The current value for delta_d.
Algorithmic parameters.
Number delta_xs_max_
 Maximal perturbation for x and s.
Number delta_xs_min_
 Smallest possible perturbation for x and s.
Number delta_xs_first_inc_fact_
 Increase factor for delta_xs for first required perturbation.
Number delta_xs_inc_fact_
 Increase factor for delta_xs for later perturbations.
Number delta_xs_dec_fact_
 Decrease factor for delta_xs for later perturbations.
Number delta_xs_init_
 Very first trial value for delta_xs perturbation.
Number delta_cd_val_
 Size of perturbation for c and d blocks.
Number delta_cd_exp_
 Exponent on mu in formula for of perturbation for c and d blocks.
bool reset_last_
 Flag indicating whether the new values are based on the perturbations in the last iteration or in the more recent iteration in which a perturbation was done.
Index degen_iters_max_
 Required number of iterations for degeneracy conclusions.
bool perturb_always_cd_
 Flag indicating that the delta_c, delta_d perturbation should always be used.

Handling structural degeneracy

enum  DegenType { NOT_YET_DETERMINED, NOT_DEGENERATE, DEGENERATE }
 Type for degeneracy flags. More...
enum  TrialStatus {
  NO_TEST, TEST_DELTA_C_EQ_0_DELTA_X_EQ_0, TEST_DELTA_C_GT_0_DELTA_X_EQ_0, TEST_DELTA_C_EQ_0_DELTA_X_GT_0,
  TEST_DELTA_C_GT_0_DELTA_X_GT_0
}
 Status of current trial configuration. More...
DegenType hess_degenerate_
 Flag indicating whether the reduced Hessian matrix is thought to be structurally singular.
DegenType jac_degenerate_
 Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient.
Index degen_iters_
 Flag counting matrices in which degeneracy was observed in the first successive iterations.
TrialStatus test_status_
 Current status.

Detailed Description

Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual system.

This class is used by the PDFullSpaceSolver to handle the cases where the primal-dual system is singular or has the wrong inertia. The perturbation factors are obtained based on simple heuristics, taking into account the size of previous perturbations.

Definition at line 25 of file IpCGPerturbationHandler.hpp.


Member Enumeration Documentation

Type for degeneracy flags.

Enumerator:
NOT_YET_DETERMINED 
NOT_DEGENERATE 
DEGENERATE 

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 140 of file IpCGPerturbationHandler.hpp.

Status of current trial configuration.

Enumerator:
NO_TEST 
TEST_DELTA_C_EQ_0_DELTA_X_EQ_0 
TEST_DELTA_C_GT_0_DELTA_X_EQ_0 
TEST_DELTA_C_EQ_0_DELTA_X_GT_0 
TEST_DELTA_C_GT_0_DELTA_X_GT_0 

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 161 of file IpCGPerturbationHandler.hpp.


Constructor & Destructor Documentation

Ipopt::CGPerturbationHandler::CGPerturbationHandler ( )

Default Constructor.

virtual Ipopt::CGPerturbationHandler::~CGPerturbationHandler ( ) [inline, virtual]

Default destructor.

Definition at line 33 of file IpCGPerturbationHandler.hpp.

Ipopt::CGPerturbationHandler::CGPerturbationHandler ( const CGPerturbationHandler ) [private]

Copy Constructor.


Member Function Documentation

virtual bool Ipopt::CGPerturbationHandler::InitializeImpl ( const OptionsList options,
const std::string &  prefix 
) [virtual]

Implementation of the initialization method that has to be overloaded by for each derived class.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::ConsiderNewSystem ( Number delta_x,
Number delta_s,
Number delta_c,
Number delta_d 
) [virtual]

This method must be called for each new matrix, and before any other method for generating perturbation factors.

Usually, the returned perturbation factors are zero, but if the system is thought to be structurally singular, they might be positive. If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::PerturbForSingularity ( Number delta_x,
Number delta_s,
Number delta_c,
Number delta_d 
) [virtual]

This method returns pertubation factors for the case when the most recent factorization resulted in a singular matrix.

If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::PerturbForWrongInertia ( Number delta_x,
Number delta_s,
Number delta_c,
Number delta_d 
) [virtual]

This method returns pertubation factors for the case when the most recent factorization resulted in a matrix with an incorrect number of negative eigenvalues.

If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

void Ipopt::CGPerturbationHandler::CurrentPerturbation ( Number delta_x,
Number delta_s,
Number delta_c,
Number delta_d 
) [virtual]

Just return the perturbation values that have been determined most recently.

Reimplemented from Ipopt::PDPerturbationHandler.

static void Ipopt::CGPerturbationHandler::RegisterOptions ( SmartPtr< RegisteredOptions roptions) [static]

Methods for IpoptType.

Reimplemented from Ipopt::PDPerturbationHandler.

void Ipopt::CGPerturbationHandler::operator= ( const CGPerturbationHandler ) [private]

Overloaded Equals Operator.

CGPenaltyData& Ipopt::CGPerturbationHandler::CGPenData ( ) [inline, private]

Method to easily access CGPenalty data.

Definition at line 91 of file IpCGPerturbationHandler.hpp.

CGPenaltyCq& Ipopt::CGPerturbationHandler::CGPenCq ( ) [inline, private]

Method to easily access CGPenalty calculated quantities.

Definition at line 100 of file IpCGPerturbationHandler.hpp.

bool Ipopt::CGPerturbationHandler::get_deltas_for_wrong_inertia ( Number delta_x,
Number delta_s,
Number delta_c,
Number delta_d 
) [private]

Internal version of PerturbForWrongInertia with the difference, that finalize_test is not called.

Returns false if the delta_x and delta_s parameters become too large.

Reimplemented from Ipopt::PDPerturbationHandler.

void Ipopt::CGPerturbationHandler::finalize_test ( ) [private]

This method is call whenever a matrix had been factorization and is not singular.

In here, we can evaluate the outcome of the deneracy test heuristics.

Reimplemented from Ipopt::PDPerturbationHandler.

Number Ipopt::CGPerturbationHandler::delta_cd ( ) [private]

Compute perturbation value for constraints.

Reimplemented from Ipopt::PDPerturbationHandler.


Member Data Documentation

The last nonzero value for delta_x.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 111 of file IpCGPerturbationHandler.hpp.

The last nonzero value for delta_s.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 113 of file IpCGPerturbationHandler.hpp.

The last nonzero value for delta_c.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 115 of file IpCGPerturbationHandler.hpp.

The last nonzero value for delta_d.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 117 of file IpCGPerturbationHandler.hpp.

The current value for delta_x.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 124 of file IpCGPerturbationHandler.hpp.

The current value for delta_s.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 126 of file IpCGPerturbationHandler.hpp.

The current value for delta_c.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 128 of file IpCGPerturbationHandler.hpp.

The current value for delta_d.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 130 of file IpCGPerturbationHandler.hpp.

Flag indicating if for the given matrix the perturb for wrong inertia method has already been called.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 135 of file IpCGPerturbationHandler.hpp.

Flag indicating whether the reduced Hessian matrix is thought to be structurally singular.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 149 of file IpCGPerturbationHandler.hpp.

Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 153 of file IpCGPerturbationHandler.hpp.

Flag counting matrices in which degeneracy was observed in the first successive iterations.

-1 means that there was a non-degenerate (unperturbed) matrix at some point.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 158 of file IpCGPerturbationHandler.hpp.

Current status.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 171 of file IpCGPerturbationHandler.hpp.

Maximal perturbation for x and s.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 177 of file IpCGPerturbationHandler.hpp.

Smallest possible perturbation for x and s.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 179 of file IpCGPerturbationHandler.hpp.

Increase factor for delta_xs for first required perturbation.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 181 of file IpCGPerturbationHandler.hpp.

Increase factor for delta_xs for later perturbations.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 183 of file IpCGPerturbationHandler.hpp.

Decrease factor for delta_xs for later perturbations.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 185 of file IpCGPerturbationHandler.hpp.

Very first trial value for delta_xs perturbation.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 187 of file IpCGPerturbationHandler.hpp.

Size of perturbation for c and d blocks.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 189 of file IpCGPerturbationHandler.hpp.

Exponent on mu in formula for of perturbation for c and d blocks.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 191 of file IpCGPerturbationHandler.hpp.

Flag indicating whether the new values are based on the perturbations in the last iteration or in the more recent iteration in which a perturbation was done.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 195 of file IpCGPerturbationHandler.hpp.

Required number of iterations for degeneracy conclusions.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 197 of file IpCGPerturbationHandler.hpp.

Flag indicating that the delta_c, delta_d perturbation should always be used.

Reimplemented from Ipopt::PDPerturbationHandler.

Definition at line 200 of file IpCGPerturbationHandler.hpp.

The max reference value for scaling the penalty parameter.

Definition at line 204 of file IpCGPerturbationHandler.hpp.

Feasibility for perturbation in pure Newton method.

Definition at line 206 of file IpCGPerturbationHandler.hpp.


The documentation for this class was generated from the following file: