The main ipopt algorithm class. More...
#include <IpIpoptAlg.hpp>
Static Public Member Functions | |
static void | print_copyright_message (const Journalist &jnlst) |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Methods for IpoptType. | |
Private Member Functions | |
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. | |
IpoptAlgorithm () | |
Default Constructor. | |
IpoptAlgorithm (const IpoptAlgorithm &) | |
Copy Constructor. | |
void | operator= (const IpoptAlgorithm &) |
Default Assignment Operator. | |
Main steps of the algorithm | |
void | UpdateHessian () |
Method for updating the current Hessian. | |
bool | UpdateBarrierParameter () |
Method to update the barrier parameter. | |
bool | ComputeSearchDirection () |
Method to setup the call to the PDSystemSolver. | |
void | ComputeAcceptableTrialPoint () |
Method computing the new iterate (usually vialine search). | |
void | AcceptTrialPoint () |
Method for accepting the trial point as the new iteration, possibly after adjusting the variable bounds in the NLP. | |
void | OutputIteration () |
Do all the output for one iteration. | |
void | InitializeIterates () |
Sets up initial values for the iterates. | |
void | PrintProblemStatistics () |
Print the problem size statistics. | |
void | ComputeFeasibilityMultipliers () |
Tries to compute Lagrangian multipliers for a feasibility problem. | |
void | ComputeFeasibilityMultipliersPostprocess () |
Compute the Lagrangian multipliers for a feasibility problem in post processing. | |
auxiliary functions | |
void | calc_number_of_bounds (const Vector &x, const Vector &x_L, const Vector &x_U, const Matrix &Px_L, const Matrix &Px_U, Index &n_tot, Index &n_only_lower, Index &n_both, Index &n_only_upper) |
Number | correct_bound_multiplier (const Vector &trial_z, const Vector &trial_slack, const Vector &trial_compl, SmartPtr< const Vector > &new_trial_z) |
Method for ensuring that the trial multipliers are not too far from the primal estime. | |
Private Attributes | |
Strategy objects | |
SmartPtr< SearchDirectionCalculator > | search_dir_calculator_ |
SmartPtr< LineSearch > | line_search_ |
SmartPtr< MuUpdate > | mu_update_ |
SmartPtr< ConvergenceCheck > | conv_check_ |
SmartPtr< IterateInitializer > | iterate_initializer_ |
SmartPtr< IterationOutput > | iter_output_ |
SmartPtr< HessianUpdater > | hessian_updater_ |
SmartPtr< EqMultiplierCalculator > | eq_multiplier_calculator_ |
The multiplier calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
internal flags | |
bool | skip_print_problem_stats_ |
Flag indicating if the statistic should not be printed. | |
Algorithmic parameters | |
Number | kappa_sigma_ |
safeguard factor for bound multipliers. | |
bool | recalc_y_ |
Flag indicating whether the y multipliers should be recalculated with the eq_mutliplier_calculator object for each new point. | |
Number | recalc_y_feas_tol_ |
Feasibility threshold for recalc_y. | |
bool | mehrotra_algorithm_ |
Flag indicating if we want to do Mehrotras's algorithm. | |
std::string | linear_solver_name_ |
String specifying linear solver. | |
Number | constr_viol_tol_ |
Constraint violation tolerance on unscaled problem. | |
Additional Inherited Members | |
Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
const Journalist & | Jnlst () const |
IpoptNLP & | IpNLP () const |
IpoptData & | IpData () const |
IpoptCalculatedQuantities & | IpCq () const |
bool | HaveIpData () const |
The main ipopt algorithm class.
Main Ipopt algorithm class, contains the main optimize method, handles the execution of the optimization. The constructor initializes the data structures through the nlp, and the Optimize method then assumes that everything is initialized and ready to go. After an optimization is complete, the user can access the solution through the passed in ip_data structure. Multiple calls to the Optimize method are allowed as long as the structure of the problem remains the same (i.e. starting point or nlp parameter changes only).
Definition at line 39 of file IpIpoptAlg.hpp.
Ipopt::IpoptAlgorithm::IpoptAlgorithm | ( | const SmartPtr< SearchDirectionCalculator > & | search_dir_calculator, |
const SmartPtr< LineSearch > & | line_search, | ||
const SmartPtr< MuUpdate > & | mu_update, | ||
const SmartPtr< ConvergenceCheck > & | conv_check, | ||
const SmartPtr< IterateInitializer > & | iterate_initializer, | ||
const SmartPtr< IterationOutput > & | iter_output, | ||
const SmartPtr< HessianUpdater > & | hessian_updater, | ||
const SmartPtr< EqMultiplierCalculator > & | eq_multiplier_calculator = NULL , |
||
const std::string & | linear_solver_name = "" |
||
) |
Constructor.
The IpoptAlgorithm uses smart pointers for these passed-in pieces to make sure that a user of IpoptAlgoroithm cannot pass in an object created on the stack!
The optional linear_solver_name is used for printing.
search_dir_calculator | search direction calculator |
line_search | line search |
mu_update | mu updater |
conv_check | convergence check |
iterate_initializer | iterate initializer |
iter_output | iteration output |
hessian_updater | hessian updater |
eq_multiplier_calculator | calculator for multipliers |
linear_solver_name | name of linear solver |
|
virtual |
Destructor.
|
private |
Default Constructor.
|
private |
Copy Constructor.
|
virtual |
overloaded from AlgorithmStrategyObject
Implements Ipopt::AlgorithmStrategyObject.
SolverReturn Ipopt::IpoptAlgorithm::Optimize | ( | bool | isResto = false | ) |
Main solve method.
|
static |
Methods for IpoptType.
|
inline |
Definition at line 89 of file IpIpoptAlg.hpp.
|
static |
|
private |
Default Assignment Operator.
|
private |
Method for updating the current Hessian.
This can either just evaluate the exact Hessian (based on the current iterate), or perform a quasi-Newton update.
|
private |
Method to update the barrier parameter.
|
private |
Method to setup the call to the PDSystemSolver.
|
private |
Method computing the new iterate (usually vialine search).
The acceptable point is the one in trial after return.
|
private |
Method for accepting the trial point as the new iteration, possibly after adjusting the variable bounds in the NLP.
|
private |
Do all the output for one iteration.
|
private |
Sets up initial values for the iterates.
Corrects the initial values for x and s (force in bounds)
|
private |
Print the problem size statistics.
|
private |
Tries to compute Lagrangian multipliers for a feasibility problem.
Only computes multipliers if primal feasible but not converged yet. Restores current iterate if multiplier computation fails or new point does not satisfy convergence criteria, too.
|
private |
Compute the Lagrangian multipliers for a feasibility problem in post processing.
Always tries to compute multipliers and does not restore current iterate if failing.
|
private |
|
private |
Method for ensuring that the trial multipliers are not too far from the primal estime.
If a correction is made, new_trial_z is a pointer to the corrected multiplier, and the return value of this method give the magnitutde of the largest correction that we done. If no correction was made, new_trial_z is just a pointer to trial_z, and the return value is zero.
|
private |
Definition at line 126 of file IpIpoptAlg.hpp.
|
private |
Definition at line 127 of file IpIpoptAlg.hpp.
Definition at line 128 of file IpIpoptAlg.hpp.
|
private |
Definition at line 129 of file IpIpoptAlg.hpp.
|
private |
Definition at line 130 of file IpIpoptAlg.hpp.
|
private |
Definition at line 131 of file IpIpoptAlg.hpp.
|
private |
Definition at line 132 of file IpIpoptAlg.hpp.
|
private |
The multiplier calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
If set, then it is also used to compute the dual multipliers for square problems.
Definition at line 138 of file IpIpoptAlg.hpp.
|
private |
Flag indicating if the statistic should not be printed.
Definition at line 206 of file IpIpoptAlg.hpp.
|
private |
safeguard factor for bound multipliers.
If value >= 1, then the dual variables will never deviate from the primal estimate by more than the factors kappa_sigma and 1./kappa_sigma.
Definition at line 217 of file IpIpoptAlg.hpp.
|
private |
Flag indicating whether the y multipliers should be recalculated with the eq_mutliplier_calculator object for each new point.
Definition at line 222 of file IpIpoptAlg.hpp.
|
private |
Feasibility threshold for recalc_y.
Definition at line 224 of file IpIpoptAlg.hpp.
|
private |
Flag indicating if we want to do Mehrotras's algorithm.
This means that a number of options are ignored, or have to be set (or are automatically set) to certain values.
Definition at line 230 of file IpIpoptAlg.hpp.
|
private |
String specifying linear solver.
Definition at line 232 of file IpIpoptAlg.hpp.
|
private |
Constraint violation tolerance on unscaled problem.
Definition at line 234 of file IpIpoptAlg.hpp.