Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual system. More...
#include <IpCGPerturbationHandler.hpp>
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 perturbation factors for the case when the most recent factorization resulted in a singular matrix. | |
Constructors/Destructors | |
CGPerturbationHandler () | |
Default Constructor. | |
virtual | ~CGPerturbationHandler () |
Destructor. | |
Public Member Functions inherited from Ipopt::PDPerturbationHandler | |
virtual bool | PerturbForWrongInertia (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d) |
This method returns perturbation factors for the case when the most recent factorization resulted in a matrix with an incorrect number of negative eigenvalues. | |
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. | |
PDPerturbationHandler () | |
Default Constructor. | |
virtual | ~PDPerturbationHandler () |
Destructor. | |
Public Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
bool | Initialize (const Journalist &jnlst, IpoptNLP &ip_nlp, IpoptData &ip_data, IpoptCalculatedQuantities &ip_cq, const OptionsList &options, const std::string &prefix) |
This method is called every time the algorithm starts again - it is used to reset any internal state. | |
bool | ReducedInitialize (const Journalist &jnlst, const OptionsList &options, const std::string &prefix) |
Reduced version of the Initialize method, which does not require special Ipopt information. | |
AlgorithmStrategyObject () | |
Default Constructor. | |
virtual | ~AlgorithmStrategyObject () |
Destructor. | |
Public Member Functions inherited from Ipopt::ReferencedObject | |
ReferencedObject () | |
virtual | ~ReferencedObject () |
Index | ReferenceCount () const |
void | AddRef (const Referencer *referencer) const |
void | ReleaseRef (const Referencer *referencer) const |
Static Public Member Functions | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Static Public Member Functions inherited from Ipopt::PDPerturbationHandler | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Private Member Functions | |
CGPenaltyData & | CGPenData () |
Method to easily access CGPenalty data. | |
CGPenaltyCq & | CGPenCq () |
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 &) |
Default Assignment Operator. | |
Private Attributes | |
Number | penalty_max_ |
The max reference value for scaling the penalty parameter. | |
Number | mult_diverg_feasibility_tol_ |
Feasibility for perturbation in pure Newton method. | |
Additional Inherited Members | |
Protected Types inherited from Ipopt::PDPerturbationHandler | |
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... | |
Protected Member Functions inherited from Ipopt::PDPerturbationHandler | |
PDPerturbationHandler (const PDPerturbationHandler &) | |
Copy Constructor. | |
void | operator= (const PDPerturbationHandler &) |
Default Assignment Operator. | |
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. | |
Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
const Journalist & | Jnlst () const |
IpoptNLP & | IpNLP () const |
IpoptData & | IpData () const |
IpoptCalculatedQuantities & | IpCq () const |
bool | HaveIpData () const |
Protected Attributes inherited from Ipopt::PDPerturbationHandler | |
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 | 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. | |
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. | |
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. | |
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. | |
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.
Ipopt::CGPerturbationHandler::CGPerturbationHandler | ( | ) |
Default Constructor.
|
inlinevirtual |
Destructor.
Definition at line 34 of file IpCGPerturbationHandler.hpp.
|
private |
Copy Constructor.
|
virtual |
Implementation of the initialization method that has to be overloaded by for each derived class.
Reimplemented from Ipopt::PDPerturbationHandler.
|
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.
|
virtual |
This method returns perturbation factors for the case when the most recent factorization resulted in a singular matrix.
Reimplemented from Ipopt::PDPerturbationHandler.
|
static |
|
private |
Default Assignment Operator.
|
inlineprivate |
Method to easily access CGPenalty data.
Definition at line 99 of file IpCGPerturbationHandler.hpp.
|
inlineprivate |
Method to easily access CGPenalty calculated quantities.
Definition at line 107 of file IpCGPerturbationHandler.hpp.
|
private |
The max reference value for scaling the penalty parameter.
Definition at line 115 of file IpCGPerturbationHandler.hpp.
|
private |
Feasibility for perturbation in pure Newton method.
Definition at line 117 of file IpCGPerturbationHandler.hpp.