The main ipopt algorithm class. More...
#include <IpIpoptAlg.hpp>
Public Member Functions | |
virtual bool | InitializeImpl (const OptionsList &options, const std::string &prefix) |
overloaded from AlgorithmStrategyObject | |
SolverReturn | Optimize () |
Main solve method. | |
Constructors/Destructors | |
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) | |
Constructor. | |
virtual | ~IpoptAlgorithm () |
Default destructor. | |
Static Public Member Functions | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Methods for IpoptType. | |
Private Member Functions | |
Default Compiler Generated Methods | |
IpoptAlgorithm () | |
Default Constructor. | |
IpoptAlgorithm (const IpoptAlgorithm &) | |
Copy Constructor. | |
void | operator= (const IpoptAlgorithm &) |
Overloaded Equals Operator. | |
Main steps of the algorthim | |
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, Corrects the initial values for x and s (force in bounds). | |
void | PrintProblemStatistics () |
Print the problem size statistics. | |
void | ComputeFeasibilityMultipliers () |
Compute the Lagrangian multipliers for a feasibility problem. | |
auxilliary 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) |
Method for ensuring that the trial multipliers are not too far from the primal estime. | |
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_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< LineSearch > | line_search_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< MuUpdate > | mu_update_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< ConvergenceCheck > | conv_check_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< IterateInitializer > | iterate_initializer_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< IterationOutput > | iter_output_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< HessianUpdater > | hessian_updater_ |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true. | |
SmartPtr< EqMultiplierCalculator > | eq_multiplier_calculator_ |
The multipler 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. |
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 45 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 | |||
) |
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!)
virtual Ipopt::IpoptAlgorithm::~IpoptAlgorithm | ( | ) | [virtual] |
Default destructor.
Ipopt::IpoptAlgorithm::IpoptAlgorithm | ( | ) | [private] |
Default Constructor.
Ipopt::IpoptAlgorithm::IpoptAlgorithm | ( | const IpoptAlgorithm & | ) | [private] |
Copy Constructor.
virtual bool Ipopt::IpoptAlgorithm::InitializeImpl | ( | const OptionsList & | options, | |
const std::string & | prefix | |||
) | [virtual] |
overloaded from AlgorithmStrategyObject
Implements Ipopt::AlgorithmStrategyObject.
SolverReturn Ipopt::IpoptAlgorithm::Optimize | ( | ) |
Main solve method.
static void Ipopt::IpoptAlgorithm::RegisterOptions | ( | SmartPtr< RegisteredOptions > | roptions | ) | [static] |
Methods for IpoptType.
void Ipopt::IpoptAlgorithm::operator= | ( | const IpoptAlgorithm & | ) | [private] |
Overloaded Equals Operator.
Reimplemented from Ipopt::AlgorithmStrategyObject.
void Ipopt::IpoptAlgorithm::UpdateHessian | ( | ) | [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.
bool Ipopt::IpoptAlgorithm::UpdateBarrierParameter | ( | ) | [private] |
Method to update the barrier parameter.
Returns false, if the algorithm can't continue with the regular procedure and needs to revert to a fallback mechanism in the line search (such as restoration phase)
bool Ipopt::IpoptAlgorithm::ComputeSearchDirection | ( | ) | [private] |
Method to setup the call to the PDSystemSolver.
Returns false, if the algorithm can't continue with the regular procedure and needs to revert to a fallback mechanism in the line search (such as restoration phase)
void Ipopt::IpoptAlgorithm::ComputeAcceptableTrialPoint | ( | ) | [private] |
Method computing the new iterate (usually vialine search).
The acceptable point is the one in trial after return.
void Ipopt::IpoptAlgorithm::AcceptTrialPoint | ( | ) | [private] |
Method for accepting the trial point as the new iteration, possibly after adjusting the variable bounds in the NLP.
void Ipopt::IpoptAlgorithm::OutputIteration | ( | ) | [private] |
Do all the output for one iteration.
void Ipopt::IpoptAlgorithm::InitializeIterates | ( | ) | [private] |
Sets up initial values for the iterates, Corrects the initial values for x and s (force in bounds).
void Ipopt::IpoptAlgorithm::PrintProblemStatistics | ( | ) | [private] |
Print the problem size statistics.
void Ipopt::IpoptAlgorithm::ComputeFeasibilityMultipliers | ( | ) | [private] |
Compute the Lagrangian multipliers for a feasibility problem.
void Ipopt::IpoptAlgorithm::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 | |||
) | [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.
Number Ipopt::IpoptAlgorithm::correct_bound_multiplier | ( | const Vector & | trial_z, | |
const Vector & | trial_slack, | |||
const Vector & | trial_compl, | |||
SmartPtr< const Vector > & | new_trial_z | |||
) | [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.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 102 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 103 of file IpIpoptAlg.hpp.
SmartPtr<MuUpdate> Ipopt::IpoptAlgorithm::mu_update_ [private] |
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 104 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 105 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 106 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 107 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 108 of file IpIpoptAlg.hpp.
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition at line 111 of file IpIpoptAlg.hpp.
bool Ipopt::IpoptAlgorithm::skip_print_problem_stats_ [private] |
Flag indicating if the statistic should not be printed.
Definition at line 161 of file IpIpoptAlg.hpp.
Number Ipopt::IpoptAlgorithm::kappa_sigma_ [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 170 of file IpIpoptAlg.hpp.
bool Ipopt::IpoptAlgorithm::recalc_y_ [private] |
Flag indicating whether the y multipliers should be recalculated with the eq_mutliplier_calculator object for each new point.
Definition at line 174 of file IpIpoptAlg.hpp.
Feasibility threshold for recalc_y.
Definition at line 176 of file IpIpoptAlg.hpp.
bool Ipopt::IpoptAlgorithm::mehrotra_algorithm_ [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 180 of file IpIpoptAlg.hpp.