Bonmin
1.7
|
Ampl MINLP Interface. More...
#include <BonAmplTMINLP.hpp>
Public Member Functions | |
const ASL_pfgh * | AmplSolverObject () const |
Return the ampl solver object (ASL*) | |
virtual const BranchingInfo * | branchingInfo () const |
virtual const SosInfo * | sosConstraints () const |
virtual const PerturbInfo * | perturbInfo () const |
virtual void | getLinearPartOfObjective (double *obj) |
This methods gives the linear part of the objective function. | |
virtual bool | hasUpperBoundingObjective () |
Do we have an alternate objective for upper bounding? | |
virtual bool | eval_upper_bound_f (Ipopt::Index n, const Ipopt::Number *x, Ipopt::Number &obj_value) |
This method to returns the value of an alternative objective function for upper bounding (if one has been declared by using the prefix UBObj). | |
virtual bool | get_constraint_convexities (int m, TMINLP::Convexity *constraints_convexities) const |
Get accest to constraint convexities. | |
virtual bool | get_number_nonconvex (int &number_non_conv, int &number_concave) const |
Get dimension information on nonconvex constraints. | |
virtual bool | get_constraint_convexities (int number_non_conv, MarkedNonConvex *non_convexes) const |
Get array describing the constraints marked nonconvex in the model. | |
virtual bool | get_simple_concave_constraints (int number_concave, SimpleConcaveConstraint *simple_concave) const |
Fill array containing indices of simple concave constraints. | |
virtual bool | hasLinearObjective () |
Say if problem has a linear objective (for OA) | |
virtual const int * | get_const_xtra_id () const |
Access array describing onoff constraint. | |
Constructors/Destructors | |
AmplTMINLP (const Ipopt::SmartPtr< const Ipopt::Journalist > &jnlst, const Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions, const Ipopt::SmartPtr< Ipopt::OptionsList > options, char **&argv, Ipopt::AmplSuffixHandler *suffix_handler=NULL, const std::string &appName="bonmin", std::string *nl_file_content=NULL) | |
Constructor. | |
virtual void | Initialize (const Ipopt::SmartPtr< const Ipopt::Journalist > &jnlst, const Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions, const Ipopt::SmartPtr< Ipopt::OptionsList > options, char **&argv, Ipopt::AmplSuffixHandler *suffix_handler=NULL, const std::string &appName="bonmin", std::string *nl_file_content=NULL) |
Constructor. | |
void | read_priorities () |
read the branching priorities from ampl suffixes. | |
void | read_sos () |
read the sos constraints from ampl suffixes | |
void | read_convexities () |
Read suffixes which indicate which constraints are convex. | |
void | read_onoff () |
Read suffixes used to apply perspective in OA to some of the constraints. | |
void | read_obj_suffixes () |
Read suffixes on objective functions for upper bounding. | |
AmplTMINLP () | |
Default constructor. | |
virtual AmplTMINLP * | createEmpty () |
Constructor. | |
virtual | ~AmplTMINLP () |
destructor | |
methods to gather information about the NLP. These | |
virtual bool | get_nlp_info (Ipopt::Index &n, Ipopt::Index &m, Ipopt::Index &nnz_jac_g, Ipopt::Index &nnz_h_lag, Ipopt::TNLP::IndexStyleEnum &index_style) |
returns dimensions of the nlp. | |
virtual bool | get_variables_types (Ipopt::Index n, VariableType *var_types) |
returns the vector of variable types | |
virtual bool | get_variables_linearity (Ipopt::Index n, Ipopt::TNLP::LinearityType *var_types) |
return the variables linearity (linear or not) | |
virtual bool | get_constraints_linearity (Ipopt::Index m, Ipopt::TNLP::LinearityType *const_types) |
Returns the constraint linearity. | |
virtual bool | get_bounds_info (Ipopt::Index n, Ipopt::Number *x_l, Ipopt::Number *x_u, Ipopt::Index m, Ipopt::Number *g_l, Ipopt::Number *g_u) |
returns bounds of the nlp. | |
virtual bool | get_starting_point (Ipopt::Index n, bool init_x, Ipopt::Number *x, bool init_z, Ipopt::Number *z_L, Ipopt::Number *z_U, Ipopt::Index m, bool init_lambda, Ipopt::Number *lambda) |
provides a starting point for the nlp variables. | |
virtual bool | eval_f (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number &obj_value) |
evaluates the objective value for the nlp. | |
virtual bool | eval_grad_f (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number *grad_f) |
evaluates the gradient of the objective for the nlp. | |
virtual bool | eval_g (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index m, Ipopt::Number *g) |
evaluates the constraint residuals for the nlp. | |
virtual bool | eval_jac_g (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index m, Ipopt::Index nele_jac, Ipopt::Index *iRow, Ipopt::Index *jCol, Ipopt::Number *values) |
specifies the jacobian structure (if values is NULL) and evaluates the jacobian values (if values is not NULL) for the nlp. | |
virtual bool | eval_h (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number obj_factor, Ipopt::Index m, const Ipopt::Number *lambda, bool new_lambda, Ipopt::Index nele_hess, Ipopt::Index *iRow, Ipopt::Index *jCol, Ipopt::Number *values) |
specifies the structure of the hessian of the lagrangian (if values is NULL) and evaluates the values (if values is not NULL). | |
virtual bool | eval_gi (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index i, Ipopt::Number &gi) |
compute the value of a single constraint | |
virtual bool | eval_grad_gi (Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index i, Ipopt::Index &nele_grad_gi, Ipopt::Index *jCol, Ipopt::Number *values) |
compute the structure or values of the gradient for one constraint | |
Solution Methods | |
virtual void | finalize_solution (TMINLP::SolverReturn status, Ipopt::Index n, const Ipopt::Number *x, Ipopt::Number obj_value) |
Called after optimizing to return results to ampl. | |
void | write_solution (const std::string &message, const Ipopt::Number *x_sol) |
Write the solution using ampl's write_sol (called by finalize_solution). | |
User callbacks | |
virtual void | fillApplicationOptions (Ipopt::AmplOptionsList *amplOptList) |
Additional application specific options. | |
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. | |
AmplTMINLP (const AmplTMINLP &) | |
Copy Constructor. | |
void | operator= (const AmplTMINLP &) |
Overloaded Equals Operator. | |
Private Attributes | |
std::string | appName_ |
Name of application. | |
int | upperBoundingObj_ |
Index of the objective to use for upper bounding. | |
Ipopt::AmplTNLP * | ampl_tnlp_ |
pointer to the internal AmplTNLP | |
Ipopt::SmartPtr< const Ipopt::Journalist > | jnlst_ |
Journalist. | |
BranchingInfo | branch_ |
Storage of branching priorities information. | |
SosInfo | sos_ |
Storage of sos constraints. | |
PerturbInfo | perturb_info_ |
Storage for perturbation radii. | |
Ipopt::SmartPtr < Ipopt::AmplSuffixHandler > | suffix_handler_ |
Store a suffix handler. | |
TMINLP::Convexity * | constraintsConvexities_ |
Store constraints types. | |
vector< int > | c_extra_id_ |
Store onoff information. | |
int | numberNonConvex_ |
Ipopt::Number of nonConvex constraints. | |
MarkedNonConvex * | nonConvexConstraintsAndRelaxations_ |
Store marked non-convex constraints and their relaxations. | |
int | numberSimpleConcave_ |
Ipopt::Number of simpleConcave constraints. | |
SimpleConcaveConstraint * | simpleConcaves_ |
Store simple concave constraints descriptions. | |
bool | hasLinearObjective_ |
Flag to indicate if objective function is linear. | |
int | writeAmplSolFile_ |
Flag to say if AMPL solution file should be written. |
Ampl MINLP Interface.
Ampl MINLP Interface, implemented as a TMINLP. This interface creates a AmplTNLP and also retrieves the information about the binary and integer variables
Definition at line 46 of file BonAmplTMINLP.hpp.
Bonmin::AmplTMINLP::AmplTMINLP | ( | const Ipopt::SmartPtr< const Ipopt::Journalist > & | jnlst, |
const Ipopt::SmartPtr< Bonmin::RegisteredOptions > | roptions, | ||
const Ipopt::SmartPtr< Ipopt::OptionsList > | options, | ||
char **& | argv, | ||
Ipopt::AmplSuffixHandler * | suffix_handler = NULL , |
||
const std::string & | appName = "bonmin" , |
||
std::string * | nl_file_content = NULL |
||
) |
Constructor.
Bonmin::AmplTMINLP::AmplTMINLP | ( | ) |
Default constructor.
Referenced by createEmpty().
virtual Bonmin::AmplTMINLP::~AmplTMINLP | ( | ) | [virtual] |
destructor
Bonmin::AmplTMINLP::AmplTMINLP | ( | const AmplTMINLP & | ) | [private] |
Copy Constructor.
virtual void Bonmin::AmplTMINLP::Initialize | ( | const Ipopt::SmartPtr< const Ipopt::Journalist > & | jnlst, |
const Ipopt::SmartPtr< Bonmin::RegisteredOptions > | roptions, | ||
const Ipopt::SmartPtr< Ipopt::OptionsList > | options, | ||
char **& | argv, | ||
Ipopt::AmplSuffixHandler * | suffix_handler = NULL , |
||
const std::string & | appName = "bonmin" , |
||
std::string * | nl_file_content = NULL |
||
) | [virtual] |
Constructor.
void Bonmin::AmplTMINLP::read_priorities | ( | ) |
read the branching priorities from ampl suffixes.
void Bonmin::AmplTMINLP::read_sos | ( | ) |
read the sos constraints from ampl suffixes
void Bonmin::AmplTMINLP::read_convexities | ( | ) |
Read suffixes which indicate which constraints are convex.
void Bonmin::AmplTMINLP::read_onoff | ( | ) |
Read suffixes used to apply perspective in OA to some of the constraints.
void Bonmin::AmplTMINLP::read_obj_suffixes | ( | ) |
Read suffixes on objective functions for upper bounding.
virtual AmplTMINLP* Bonmin::AmplTMINLP::createEmpty | ( | ) | [inline, virtual] |
const ASL_pfgh* Bonmin::AmplTMINLP::AmplSolverObject | ( | ) | const |
Return the ampl solver object (ASL*)
virtual bool Bonmin::AmplTMINLP::get_nlp_info | ( | Ipopt::Index & | n, |
Ipopt::Index & | m, | ||
Ipopt::Index & | nnz_jac_g, | ||
Ipopt::Index & | nnz_h_lag, | ||
Ipopt::TNLP::IndexStyleEnum & | index_style | ||
) | [virtual] |
virtual bool Bonmin::AmplTMINLP::get_variables_types | ( | Ipopt::Index | n, |
VariableType * | var_types | ||
) | [virtual] |
returns the vector of variable types
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::get_variables_linearity | ( | Ipopt::Index | n, |
Ipopt::TNLP::LinearityType * | var_types | ||
) | [virtual] |
return the variables linearity (linear or not)
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::get_constraints_linearity | ( | Ipopt::Index | m, |
Ipopt::TNLP::LinearityType * | const_types | ||
) | [virtual] |
Returns the constraint linearity.
array should be alocated with length at least n.
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::get_bounds_info | ( | Ipopt::Index | n, |
Ipopt::Number * | x_l, | ||
Ipopt::Number * | x_u, | ||
Ipopt::Index | m, | ||
Ipopt::Number * | g_l, | ||
Ipopt::Number * | g_u | ||
) | [virtual] |
virtual bool Bonmin::AmplTMINLP::get_starting_point | ( | Ipopt::Index | n, |
bool | init_x, | ||
Ipopt::Number * | x, | ||
bool | init_z, | ||
Ipopt::Number * | z_L, | ||
Ipopt::Number * | z_U, | ||
Ipopt::Index | m, | ||
bool | init_lambda, | ||
Ipopt::Number * | lambda | ||
) | [virtual] |
virtual bool Bonmin::AmplTMINLP::eval_f | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Number & | obj_value | ||
) | [virtual] |
virtual bool Bonmin::AmplTMINLP::eval_grad_f | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Number * | grad_f | ||
) | [virtual] |
evaluates the gradient of the objective for the nlp.
Overloaded from TMINLP
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::eval_g | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Index | m, | ||
Ipopt::Number * | g | ||
) | [virtual] |
virtual bool Bonmin::AmplTMINLP::eval_jac_g | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Index | m, | ||
Ipopt::Index | nele_jac, | ||
Ipopt::Index * | iRow, | ||
Ipopt::Index * | jCol, | ||
Ipopt::Number * | values | ||
) | [virtual] |
specifies the jacobian structure (if values is NULL) and evaluates the jacobian values (if values is not NULL) for the nlp.
Overloaded from TMINLP
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::eval_h | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Number | obj_factor, | ||
Ipopt::Index | m, | ||
const Ipopt::Number * | lambda, | ||
bool | new_lambda, | ||
Ipopt::Index | nele_hess, | ||
Ipopt::Index * | iRow, | ||
Ipopt::Index * | jCol, | ||
Ipopt::Number * | values | ||
) | [virtual] |
specifies the structure of the hessian of the lagrangian (if values is NULL) and evaluates the values (if values is not NULL).
Overloaded from TMINLP
Implements Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::eval_gi | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Index | i, | ||
Ipopt::Number & | gi | ||
) | [virtual] |
compute the value of a single constraint
Reimplemented from Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::eval_grad_gi | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
bool | new_x, | ||
Ipopt::Index | i, | ||
Ipopt::Index & | nele_grad_gi, | ||
Ipopt::Index * | jCol, | ||
Ipopt::Number * | values | ||
) | [virtual] |
compute the structure or values of the gradient for one constraint
Reimplemented from Bonmin::TMINLP.
virtual void Bonmin::AmplTMINLP::finalize_solution | ( | TMINLP::SolverReturn | status, |
Ipopt::Index | n, | ||
const Ipopt::Number * | x, | ||
Ipopt::Number | obj_value | ||
) | [virtual] |
Called after optimizing to return results to ampl.
Status code is put into solve_result_num according to the table below.
| |
3 | Integer optimal |
220 | problem is proven infeasible. |
421 | limit reached or user interrupt with integer feasible solution found. |
410 | limit reached or user interrupt without any integer feasible solution. |
500 | error. Status codes for optimization. |
Implements Bonmin::TMINLP.
void Bonmin::AmplTMINLP::write_solution | ( | const std::string & | message, |
const Ipopt::Number * | x_sol | ||
) |
Write the solution using ampl's write_sol (called by finalize_solution).
virtual const BranchingInfo* Bonmin::AmplTMINLP::branchingInfo | ( | ) | const [inline, virtual] |
virtual const SosInfo* Bonmin::AmplTMINLP::sosConstraints | ( | ) | const [inline, virtual] |
virtual const PerturbInfo* Bonmin::AmplTMINLP::perturbInfo | ( | ) | const [inline, virtual] |
Reimplemented from Bonmin::TMINLP.
Definition at line 202 of file BonAmplTMINLP.hpp.
References perturb_info_.
virtual void Bonmin::AmplTMINLP::fillApplicationOptions | ( | Ipopt::AmplOptionsList * | amplOptList | ) | [inline, virtual] |
Additional application specific options.
Definition at line 210 of file BonAmplTMINLP.hpp.
virtual void Bonmin::AmplTMINLP::getLinearPartOfObjective | ( | double * | obj | ) | [virtual] |
This methods gives the linear part of the objective function.
virtual bool Bonmin::AmplTMINLP::hasUpperBoundingObjective | ( | ) | [inline, virtual] |
Do we have an alternate objective for upper bounding?
Reimplemented from Bonmin::TMINLP.
Definition at line 220 of file BonAmplTMINLP.hpp.
References upperBoundingObj_.
virtual bool Bonmin::AmplTMINLP::eval_upper_bound_f | ( | Ipopt::Index | n, |
const Ipopt::Number * | x, | ||
Ipopt::Number & | obj_value | ||
) | [virtual] |
This method to returns the value of an alternative objective function for upper bounding (if one has been declared by using the prefix UBObj).
Reimplemented from Bonmin::TMINLP.
virtual bool Bonmin::AmplTMINLP::get_constraint_convexities | ( | int | m, |
TMINLP::Convexity * | constraints_convexities | ||
) | const [inline, virtual] |
Get accest to constraint convexities.
Reimplemented from Bonmin::TMINLP.
Definition at line 231 of file BonAmplTMINLP.hpp.
References constraintsConvexities_, and Bonmin::TMINLP::Convex.
virtual bool Bonmin::AmplTMINLP::get_number_nonconvex | ( | int & | number_non_conv, |
int & | number_concave | ||
) | const [inline, virtual] |
Get dimension information on nonconvex constraints.
Reimplemented from Bonmin::TMINLP.
Definition at line 242 of file BonAmplTMINLP.hpp.
References numberNonConvex_, and numberSimpleConcave_.
virtual bool Bonmin::AmplTMINLP::get_constraint_convexities | ( | int | number_non_conv, |
MarkedNonConvex * | non_convexes | ||
) | const [inline, virtual] |
Get array describing the constraints marked nonconvex in the model.
Definition at line 249 of file BonAmplTMINLP.hpp.
References nonConvexConstraintsAndRelaxations_, and numberNonConvex_.
virtual bool Bonmin::AmplTMINLP::get_simple_concave_constraints | ( | int | number_concave, |
SimpleConcaveConstraint * | simple_concave | ||
) | const [inline, virtual] |
Fill array containing indices of simple concave constraints.
Definition at line 256 of file BonAmplTMINLP.hpp.
References numberSimpleConcave_, and simpleConcaves_.
virtual bool Bonmin::AmplTMINLP::hasLinearObjective | ( | ) | [inline, virtual] |
Say if problem has a linear objective (for OA)
Reimplemented from Bonmin::TMINLP.
Definition at line 264 of file BonAmplTMINLP.hpp.
References hasLinearObjective_.
virtual const int* Bonmin::AmplTMINLP::get_const_xtra_id | ( | ) | const [inline, virtual] |
Access array describing onoff constraint.
Reimplemented from Bonmin::TMINLP.
Definition at line 270 of file BonAmplTMINLP.hpp.
References c_extra_id_.
void Bonmin::AmplTMINLP::operator= | ( | const AmplTMINLP & | ) | [private] |
Overloaded Equals Operator.
std::string Bonmin::AmplTMINLP::appName_ [private] |
Name of application.
Definition at line 290 of file BonAmplTMINLP.hpp.
int Bonmin::AmplTMINLP::upperBoundingObj_ [private] |
Index of the objective to use for upper bounding.
Definition at line 293 of file BonAmplTMINLP.hpp.
Referenced by hasUpperBoundingObjective().
Ipopt::AmplTNLP* Bonmin::AmplTMINLP::ampl_tnlp_ [private] |
pointer to the internal AmplTNLP
Definition at line 295 of file BonAmplTMINLP.hpp.
Ipopt::SmartPtr<const Ipopt::Journalist> Bonmin::AmplTMINLP::jnlst_ [private] |
Journalist.
Definition at line 297 of file BonAmplTMINLP.hpp.
BranchingInfo Bonmin::AmplTMINLP::branch_ [private] |
Storage of branching priorities information.
Definition at line 300 of file BonAmplTMINLP.hpp.
Referenced by branchingInfo().
SosInfo Bonmin::AmplTMINLP::sos_ [private] |
Storage of sos constraints.
Definition at line 302 of file BonAmplTMINLP.hpp.
Referenced by sosConstraints().
PerturbInfo Bonmin::AmplTMINLP::perturb_info_ [private] |
Storage for perturbation radii.
Definition at line 304 of file BonAmplTMINLP.hpp.
Referenced by perturbInfo().
Ipopt::SmartPtr<Ipopt::AmplSuffixHandler> Bonmin::AmplTMINLP::suffix_handler_ [private] |
Store a suffix handler.
Definition at line 306 of file BonAmplTMINLP.hpp.
Store constraints types.
Definition at line 309 of file BonAmplTMINLP.hpp.
Referenced by get_constraint_convexities().
vector<int> Bonmin::AmplTMINLP::c_extra_id_ [private] |
Store onoff information.
Definition at line 312 of file BonAmplTMINLP.hpp.
Referenced by get_const_xtra_id().
int Bonmin::AmplTMINLP::numberNonConvex_ [private] |
Ipopt::Number of nonConvex constraints.
Definition at line 315 of file BonAmplTMINLP.hpp.
Referenced by get_constraint_convexities(), and get_number_nonconvex().
MarkedNonConvex* Bonmin::AmplTMINLP::nonConvexConstraintsAndRelaxations_ [private] |
Store marked non-convex constraints and their relaxations.
Definition at line 317 of file BonAmplTMINLP.hpp.
Referenced by get_constraint_convexities().
int Bonmin::AmplTMINLP::numberSimpleConcave_ [private] |
Ipopt::Number of simpleConcave constraints.
Definition at line 319 of file BonAmplTMINLP.hpp.
Referenced by get_number_nonconvex(), and get_simple_concave_constraints().
SimpleConcaveConstraint* Bonmin::AmplTMINLP::simpleConcaves_ [private] |
Store simple concave constraints descriptions.
Definition at line 321 of file BonAmplTMINLP.hpp.
Referenced by get_simple_concave_constraints().
bool Bonmin::AmplTMINLP::hasLinearObjective_ [private] |
Flag to indicate if objective function is linear.
Definition at line 324 of file BonAmplTMINLP.hpp.
Referenced by hasLinearObjective().
int Bonmin::AmplTMINLP::writeAmplSolFile_ [private] |
Flag to say if AMPL solution file should be written.
Definition at line 327 of file BonAmplTMINLP.hpp.