IpoptSolver Class Reference

The IpoptSolver class solves problems using Ipopt. More...

#include <IpoptSolver.h>

Inheritance diagram for IpoptSolver:

Inheritance graph
[legend]
Collaboration diagram for IpoptSolver:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 IpoptSolver ()
 the IpoptSolver class constructor
 ~IpoptSolver ()
 the IpoptSolver class destructor
virtual void solve () throw (ErrorClass)
 solve results in an instance being read into the Ipopt data structrues and optimized
void dataEchoCheck ()
 use this for debugging, print out the instance that the solver thinks it has and compare this with the OSiL file
virtual bool get_nlp_info (Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)
 IPOpt specific methods for defining the nlp problem.
virtual bool get_bounds_info (Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)
 Method to return the bounds for my problem.
virtual bool get_starting_point (Index n, bool init_x, Number *x, bool init_z, Number *z_L, Number *z_U, Index m, bool init_lambda, Number *lambda)
 Method to return the starting point for the algorithm.
virtual bool eval_f (Index n, const Number *x, bool new_x, Number &obj_value)
 Method to return the objective value.
virtual bool eval_grad_f (Index n, const Number *x, bool new_x, Number *grad_f)
 Method to return the gradient of the objective.
virtual bool eval_g (Index n, const Number *x, bool new_x, Index m, Number *g)
 Method to return the constraint residuals.
virtual bool eval_jac_g (Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, Number *values)
 Method to return: 1) The structure of the jacobian (if "values" is NULL) 2) The values of the jacobian (if "values" is not NULL).
virtual bool eval_h (Index n, const Number *x, bool new_x, Number obj_factor, Index m, const Number *lambda, bool new_lambda, Index nele_hess, Index *iRow, Index *jCol, Number *values)
 Method to return: 1) The structure of the hessian of the lagrangian (if "values" is NULL) 2) The values of the hessian of the lagrangian (if "values" is not NULL).
virtual bool get_scaling_parameters (Number &obj_scaling, bool &use_x_scaling, Index n, Number *x_scaling, bool &use_g_scaling, Index m, Number *g_scaling)
Solution Methods
virtual void finalize_solution (SolverReturn status, Index n, const Number *x, const Number *z_L, const Number *z_U, Index m, const Number *g, const Number *lambda, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
 This method is called when the algorithm is complete so the TNLP can store/write the solution.

Private Member Functions

Methods to block default compiler methods.
The compiler automatically generates the following three methods. Since the default compiler implementation is generally not what you want (for all but the most simple classes), we usually put the declarations of these methods in the private section and never implement them. This prevents the compiler from implementing an incorrect "default" behavior without us knowing. (See Scott Meyers book, "Effective C++")

 IpoptSolver (const IpoptSolver &)
IpoptSolveroperator= (const IpoptSolver &)

Private Attributes

OSrLWriterosrlwriter
std::string ipoptErrorMsg

Detailed Description

The IpoptSolver class solves problems using Ipopt.

Author:
Robert Fourer, Jun Ma, Kipp Martin
Version:
1.0, 03/14/2004
Since:
OS 1.0
Remarks:
this class takes an OSiL instance and optimizes it using the COIN-OR Ipopt solver

Definition at line 88 of file IpoptSolver.h.


Constructor & Destructor Documentation

IpoptSolver::IpoptSolver (  ) 

the IpoptSolver class constructor

Definition at line 30 of file IpoptSolver.cpp.

References ipoptErrorMsg, and osrlwriter.

IpoptSolver::~IpoptSolver (  ) 

the IpoptSolver class destructor

Definition at line 35 of file IpoptSolver.cpp.

References osrlwriter.

IpoptSolver::IpoptSolver ( const IpoptSolver  )  [private]


Member Function Documentation

void IpoptSolver::solve (  )  throw (ErrorClass) [virtual]

solve results in an instance being read into the Ipopt data structrues and optimized

Implements DefaultSolver.

Definition at line 453 of file IpoptSolver.cpp.

References ErrorClass::errormsg, OSInstance::getNumberOfNonlinearExpressions(), OSInstance::getNumberOfQuadraticTerms(), OSInstance::getObjectiveNumber(), OSInstance::getVariableNumber(), OSInstance::instanceData, ipoptErrorMsg, Objective::maxOrMin, Objectives::obj, InstanceData::objectives, DefaultSolver::osil, DefaultSolver::osinstance, DefaultSolver::osresult, DefaultSolver::osrl, osrlwriter, OSiLReader::readOSiL(), OSResult::setGeneralMessage(), OSResult::setGeneralStatusType(), and OSrLWriter::writeOSrL().

void IpoptSolver::dataEchoCheck (  ) 

use this for debugging, print out the instance that the solver thinks it has and compare this with the OSiL file

Definition at line 520 of file IpoptSolver.cpp.

References QuadraticTerms::coefficients, OSInstance::getConstraintLowerBounds(), OSInstance::getConstraintNames(), OSInstance::getConstraintNumber(), OSInstance::getConstraintUpperBounds(), OSInstance::getDenseObjectiveCoefficients(), OSInstance::getInstanceDescription(), OSInstance::getInstanceName(), OSInstance::getInstanceSource(), OSInstance::getLinearConstraintCoefficientNumber(), OSInstance::getLinearConstraintCoefficientsInColumnMajor(), OSInstance::getNumberOfQuadraticTerms(), OSInstance::getObjectiveMaxOrMins(), OSInstance::getQuadraticTerms(), OSInstance::getVariableLowerBounds(), OSInstance::getVariableNames(), OSInstance::getVariableNumber(), OSInstance::getVariableTypes(), OSInstance::getVariableUpperBounds(), SparseMatrix::indexes, OSInstance::instanceData, Objectives::numberOfObjectives, Objectives::obj, InstanceData::objectives, DefaultSolver::osinstance, QuadraticTerms::rowIndexes, SparseMatrix::starts, SparseMatrix::values, QuadraticTerms::varOneIndexes, and QuadraticTerms::varTwoIndexes.

bool IpoptSolver::get_nlp_info ( Index &  n,
Index &  m,
Index &  nnz_jac_g,
Index &  nnz_h_lag,
IndexStyleEnum &  index_style 
) [virtual]

IPOpt specific methods for defining the nlp problem.

Definition at line 47 of file IpoptSolver.cpp.

References OSInstance::bUseExpTreeForFunEval, ErrorClass::errormsg, OSInstance::getConstraintNumber(), OSInstance::getJacobianSparsityPattern(), OSInstance::getLagrangianHessianSparsityPattern(), OSInstance::getNumberOfNonlinearExpressions(), OSInstance::getNumberOfQuadraticTerms(), OSInstance::getObjectiveNumber(), OSInstance::getVariableNumber(), SparseHessianMatrix::hessDimension, OSInstance::initForAlgDiff(), ipoptErrorMsg, DefaultSolver::osinstance, and SparseJacobianMatrix::valueSize.

bool IpoptSolver::get_bounds_info ( Index  n,
Number *  x_l,
Number *  x_u,
Index  m,
Number *  g_l,
Number *  g_u 
) [virtual]

Method to return the bounds for my problem.

Definition at line 100 of file IpoptSolver.cpp.

References OSInstance::getConstraintLowerBounds(), OSInstance::getConstraintUpperBounds(), OSInstance::getVariableLowerBounds(), OSInstance::getVariableUpperBounds(), and DefaultSolver::osinstance.

bool IpoptSolver::get_starting_point ( Index  n,
bool  init_x,
Number *  x,
bool  init_z,
Number *  z_L,
Number *  z_U,
Index  m,
bool  init_lambda,
Number *  lambda 
) [virtual]

Method to return the starting point for the algorithm.

Definition at line 135 of file IpoptSolver.cpp.

References OSInstance::getVariableInitialValues(), and DefaultSolver::osinstance.

bool IpoptSolver::eval_f ( Index  n,
const Number *  x,
bool  new_x,
Number &  obj_value 
) [virtual]

Method to return the objective value.

Definition at line 163 of file IpoptSolver.cpp.

References OSInstance::calculateAllObjectiveFunctionValues(), ErrorClass::errormsg, ipoptErrorMsg, CommonUtil::ISOSNAN(), and DefaultSolver::osinstance.

bool IpoptSolver::eval_grad_f ( Index  n,
const Number *  x,
bool  new_x,
Number *  grad_f 
) [virtual]

Method to return the gradient of the objective.

Definition at line 175 of file IpoptSolver.cpp.

References OSInstance::calculateAllObjectiveFunctionGradients(), ErrorClass::errormsg, ipoptErrorMsg, and DefaultSolver::osinstance.

bool IpoptSolver::eval_g ( Index  n,
const Number *  x,
bool  new_x,
Index  m,
Number *  g 
) [virtual]

Method to return the constraint residuals.

Definition at line 192 of file IpoptSolver.cpp.

References OSInstance::calculateAllConstraintFunctionValues(), ErrorClass::errormsg, ipoptErrorMsg, CommonUtil::ISOSNAN(), and DefaultSolver::osinstance.

bool IpoptSolver::eval_jac_g ( Index  n,
const Number *  x,
bool  new_x,
Index  m,
Index  nele_jac,
Index *  iRow,
Index *  jCol,
Number *  values 
) [virtual]

Method to return: 1) The structure of the jacobian (if "values" is NULL) 2) The values of the jacobian (if "values" is not NULL).

Definition at line 210 of file IpoptSolver.cpp.

References ErrorClass::errormsg, OSInstance::getJacobianSparsityPattern(), SparseJacobianMatrix::indexes, ipoptErrorMsg, DefaultSolver::osinstance, and SparseJacobianMatrix::starts.

bool IpoptSolver::eval_h ( Index  n,
const Number *  x,
bool  new_x,
Number  obj_factor,
Index  m,
const Number *  lambda,
bool  new_lambda,
Index  nele_hess,
Index *  iRow,
Index *  jCol,
Number *  values 
) [virtual]

Method to return: 1) The structure of the hessian of the lagrangian (if "values" is NULL) 2) The values of the hessian of the lagrangian (if "values" is not NULL).

Definition at line 260 of file IpoptSolver.cpp.

References OSInstance::calculateLagrangianHessian(), ErrorClass::errormsg, OSInstance::getLagrangianHessianSparsityPattern(), SparseHessianMatrix::hessColIdx, SparseHessianMatrix::hessRowIdx, SparseHessianMatrix::hessValues, ipoptErrorMsg, and DefaultSolver::osinstance.

bool IpoptSolver::get_scaling_parameters ( Number &  obj_scaling,
bool &  use_x_scaling,
Index  n,
Number *  x_scaling,
bool &  use_g_scaling,
Index  m,
Number *  g_scaling 
) [virtual]

Definition at line 307 of file IpoptSolver.cpp.

References OSInstance::instanceData, Objective::maxOrMin, Objectives::obj, InstanceData::objectives, and DefaultSolver::osinstance.

void IpoptSolver::finalize_solution ( SolverReturn  status,
Index  n,
const Number *  x,
const Number *  z_L,
const Number *  z_U,
Index  m,
const Number *  g,
const Number *  lambda,
Number  obj_value,
const IpoptData *  ip_data,
IpoptCalculatedQuantities *  ip_cq 
) [virtual]

This method is called when the algorithm is complete so the TNLP can store/write the solution.

Definition at line 321 of file IpoptSolver.cpp.

References ErrorClass::errormsg, OSInstance::getConstraintNumber(), OSInstance::getInstanceName(), OSInstance::getVariableNumber(), DefaultSolver::osinstance, DefaultSolver::osresult, DefaultSolver::osrl, osrlwriter, OSResult::setConstraintNumber(), OSResult::setGeneralMessage(), OSResult::setGeneralStatusType(), OSResult::setInstanceName(), OSResult::setObjectiveNumber(), OSResult::setObjectiveValues(), OSResult::setPrimalVariableValues(), OSResult::setServiceName(), OSResult::setSolutionNumber(), OSResult::setSolutionStatus(), OSResult::setVariableNumber(), and OSrLWriter::writeOSrL().

IpoptSolver& IpoptSolver::operator= ( const IpoptSolver  )  [private]


Member Data Documentation

OSrLWriter* IpoptSolver::osrlwriter [private]

Definition at line 170 of file IpoptSolver.h.

Referenced by finalize_solution(), IpoptSolver(), solve(), and ~IpoptSolver().

std::string IpoptSolver::ipoptErrorMsg [private]

Definition at line 187 of file IpoptSolver.h.

Referenced by eval_f(), eval_g(), eval_grad_f(), eval_h(), eval_jac_g(), get_nlp_info(), IpoptSolver(), and solve().


The documentation for this class was generated from the following files:
Generated on Thu May 15 22:15:34 2008 by  doxygen 1.4.7