Ipopt::IpoptAlgorithm Class Reference

The main ipopt algorithm class. More...

#include <IpIpoptAlg.hpp>

Inheritance diagram for Ipopt::IpoptAlgorithm:
Ipopt::AlgorithmStrategyObject Ipopt::ReferencedObject

List of all members.

Public Member Functions

virtual bool InitializeImpl (const OptionsList &options, const std::string &prefix)
 overloaded from AlgorithmStrategyObject
SolverReturn Optimize (bool isResto=false)
 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.
Access to internal strategy objects

SmartPtr
< SearchDirectionCalculator
SearchDirCalc ()

Static Public Member Functions

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 &)
 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< LineSearchline_search_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< MuUpdatemu_update_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< ConvergenceCheckconv_check_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< IterateInitializeriterate_initializer_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< IterationOutputiter_output_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< HessianUpdaterhessian_updater_
 The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
SmartPtr< EqMultiplierCalculatoreq_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.
std::string linear_solver_
 String speficying linear solver.

Detailed Description

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

virtual bool Ipopt::IpoptAlgorithm::InitializeImpl ( const OptionsList options,
const std::string &  prefix 
) [virtual]
SolverReturn Ipopt::IpoptAlgorithm::Optimize ( bool  isResto = false  ) 

Main solve method.

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

Methods for IpoptType.

SmartPtr<SearchDirectionCalculator> Ipopt::IpoptAlgorithm::SearchDirCalc (  )  [inline]

Definition at line 83 of file IpIpoptAlg.hpp.

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

Overloaded Equals Operator.

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.


Member Data Documentation

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 110 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.

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 112 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 113 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 114 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 115 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 116 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 119 of file IpIpoptAlg.hpp.

Flag indicating if the statistic should not be printed.

Definition at line 169 of file IpIpoptAlg.hpp.

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 178 of file IpIpoptAlg.hpp.

Flag indicating whether the y multipliers should be recalculated with the eq_mutliplier_calculator object for each new point.

Definition at line 182 of file IpIpoptAlg.hpp.

Feasibility threshold for recalc_y.

Definition at line 184 of file IpIpoptAlg.hpp.

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 188 of file IpIpoptAlg.hpp.

String speficying linear solver.

Definition at line 190 of file IpIpoptAlg.hpp.


The documentation for this class was generated from the following file:
Generated on Fri May 14 08:02:43 2010 by  doxygen 1.6.3