#include <IpoptSolver.h>
Inheritance diagram for IpoptSolver:
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 &) | |
IpoptSolver & | operator= (const IpoptSolver &) |
Private Attributes | |
OSrLWriter * | osrlwriter |
std::string | ipoptErrorMsg |
Definition at line 88 of file IpoptSolver.h.
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] |
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] |
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().