Bonmin  1.7
Public Member Functions | Private Attributes
Bonmin::AmplTMINLP Class Reference

Ampl MINLP Interface. More...

#include <BonAmplTMINLP.hpp>

Inheritance diagram for Bonmin::AmplTMINLP:
Bonmin::TMINLP

List of all members.

Public Member Functions

const ASL_pfgh * AmplSolverObject () const
 Return the ampl solver object (ASL*)
virtual const BranchingInfobranchingInfo () const
virtual const SosInfososConstraints () const
virtual const PerturbInfoperturbInfo () 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 AmplTMINLPcreateEmpty ()
 Constructor.
virtual ~AmplTMINLP ()
 destructor
methods to gather information about the NLP. These

methods are overloaded from TMINLP.

See TMINLP for their more detailed documentation.

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::ConvexityconstraintsConvexities_
 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.

Detailed Description

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

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]

Constructor.

Definition at line 86 of file BonAmplTMINLP.hpp.

References AmplTMINLP().

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]

returns dimensions of the nlp.

Overloaded from TMINLP

Implements Bonmin::TMINLP.

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]

returns bounds of the nlp.

Overloaded from TMINLP

Implements Bonmin::TMINLP.

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]

provides a starting point for the nlp variables.

Overloaded from TMINLP

Implements Bonmin::TMINLP.

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

evaluates the objective value for the nlp.

Overloaded from TMINLP

Implements Bonmin::TMINLP.

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]

evaluates the constraint residuals for the nlp.

Overloaded from TMINLP

Implements Bonmin::TMINLP.

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.

Code
Status
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]

Implements Bonmin::TMINLP.

Definition at line 192 of file BonAmplTMINLP.hpp.

References branch_.

virtual const SosInfo* Bonmin::AmplTMINLP::sosConstraints ( ) const [inline, virtual]

Implements Bonmin::TMINLP.

Definition at line 197 of file BonAmplTMINLP.hpp.

References sos_.

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.


Member Data Documentation

std::string Bonmin::AmplTMINLP::appName_ [private]

Name of application.

Definition at line 290 of file BonAmplTMINLP.hpp.

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.

Storage of branching priorities information.

Definition at line 300 of file BonAmplTMINLP.hpp.

Referenced by branchingInfo().

Storage of sos constraints.

Definition at line 302 of file BonAmplTMINLP.hpp.

Referenced by sosConstraints().

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().

Store onoff information.

Definition at line 312 of file BonAmplTMINLP.hpp.

Referenced by get_const_xtra_id().

Ipopt::Number of nonConvex constraints.

Definition at line 315 of file BonAmplTMINLP.hpp.

Referenced by get_constraint_convexities(), and get_number_nonconvex().

Store marked non-convex constraints and their relaxations.

Definition at line 317 of file BonAmplTMINLP.hpp.

Referenced by get_constraint_convexities().

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().

Flag to indicate if objective function is linear.

Definition at line 324 of file BonAmplTMINLP.hpp.

Referenced by hasLinearObjective().

Flag to say if AMPL solution file should be written.

Definition at line 327 of file BonAmplTMINLP.hpp.


The documentation for this class was generated from the following file: