- Main Page
- Namespaces
- Classes
- Files

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Ipopt::AmplTNLP Class Reference

Ampl Interface. More...

`#include <AmplTNLP.hpp>`

Inheritance diagram for Ipopt::AmplTNLP:

[legend]
Collaboration diagram for Ipopt::AmplTNLP:

[legend]
List of all members.

## Public Member Functions
| DECLARE_STD_EXCEPTION (NONPOSITIVE_SCALING_FACTOR)
| Exceptions.
Constructors/Destructors
| AmplTNLP (const SmartPtr< const Journalist > &jnlst, const SmartPtr< OptionsList > options, char **&argv, SmartPtr< AmplSuffixHandler > suffix_handler=NULL, bool allow_discrete=false, SmartPtr< AmplOptionsList > ampl_options_list=NULL, const char *ampl_option_string=NULL, const char *ampl_invokation_string=NULL, const char *ampl_banner_string=NULL, std::string *nl_file_content=NULL)
| Constructor.
virtual | ~AmplTNLP ()
| Default destructor.
methods to gather information about the NLP. These
methods are overloaded from TNLP. See TNLP for their more detailed documentation.
virtual bool | get_nlp_info (Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)
| returns dimensions of the nlp.
virtual bool | get_bounds_info (Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)
| returns bounds of the nlp.
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)
| provides a starting point for the nlp variables.
virtual bool | eval_f (Index n, const Number *x, bool new_x, Number &obj_value)
| evaluates the objective value for the nlp.
virtual bool | eval_grad_f (Index n, const Number *x, bool new_x, Number *grad_f)
| evaluates the gradient of the objective for the nlp.
virtual bool | eval_g (Index n, const Number *x, bool new_x, Index m, Number *g)
| evaluates the constraint residuals for the nlp.
virtual bool | eval_jac_g (Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, 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 (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)
| specifies the structure of the hessian of the lagrangian (if values is NULL) and evaluates the values (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)
| retrieve the scaling parameters for the variables, objective function, and constraints.
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)
| This method is called when the algorithm is complete so the TNLP can store/write the solution.
Method for quasi-Newton approximation information.
virtual Index | get_number_of_nonlinear_variables ()
virtual bool | get_list_of_nonlinear_variables (Index num_nonlin_vars, Index *pos_nonlin_vars)
Ampl specific methods
ASL_pfgh * | AmplSolverObject ()
| Return the ampl solver object (ASL*).
void | write_solution_file (const std::string &message) const
| Write the solution file.
void | get_discrete_info (Index &nlvb_, Index &nlvbi_, Index &nlvc_, Index &nlvci_, Index &nlvo_, Index &nlvoi_, Index &nbv_, Index &niv_) const
| ampl orders the variables like (continuous, binary, integer).
## Private Member Functions
bool | internal_objval (Number &obj_val)
| Make the objective call to ampl.
bool | internal_conval (Index m, Number *g=NULL)
| Make the constraint call to ampl.
bool | apply_new_x (bool new_x, Index n, const Number *x)
| Internal function to update the internal and ampl state if the x value changes.
char * | get_options (const SmartPtr< OptionsList > &options, SmartPtr< AmplOptionsList > &ampl_options_list, const char *ampl_option_string, const char *ampl_invokation_string, const char *ampl_banner_string, char **&argv)
| Method for obtaining the name of the NL file and the options set from AMPL.
bool | nerror_ok (void *nerror)
| returns true if the ampl nerror code is ok
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.
| AmplTNLP ()
| Default Constructor.
| AmplTNLP (const AmplTNLP &)
| Copy Constructor.
void | operator= (const AmplTNLP &)
| Overloaded Equals Operator.
## Private Attributes
SmartPtr< const Journalist > | jnlst_
| Journlist.
ASL_pfgh * | asl_
| pointer to the main ASL structure
double | obj_sign_
| Sign of the objective fn (1 for min, -1 for max).
void * | Oinfo_ptr_
| Pointer to the Oinfo structure.
void * | nerror_
| nerror flag passed to ampl calls - set to NULL to halt on error
SmartPtr< AmplSuffixHandler > | suffix_handler_
| Suffix Handler.
Problem Size Data
Index | nz_h_full_
Internal copies of data
Number * | non_const_x_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Number * | x_sol_
| Solution Vectors.
Number * | z_L_sol_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Number * | z_U_sol_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Number * | g_sol_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Number * | lambda_sol_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Number | obj_sol_
| A non-const copy of x - this is kept up-to-date in apply_new_x.
Flags to track internal state
bool | objval_called_with_current_x_
| true when the objective value has been calculated with the current x, set to false in apply_new_x, and set to true in internal_objval
bool | conval_called_with_current_x_
| true when the constraint values have been calculated with the current x, set to false in apply_new_x, and set to true in internal_conval

## Detailed Description

Ampl Interface.

Ampl Interface, implemented as a TNLP.

Definition at line 204 of file AmplTNLP.hpp.

## Constructor & Destructor Documentation

Ipopt::AmplTNLP::AmplTNLP | ( | const SmartPtr< const Journalist > & | jnlst,
|  | const SmartPtr< OptionsList > | options,
|  | char **& | argv,
|  | SmartPtr< AmplSuffixHandler > | suffix_handler = `NULL`,
|  | bool | allow_discrete = `false`,
|  | SmartPtr< AmplOptionsList > | ampl_options_list = `NULL`,
|  | const char * | ampl_option_string = `NULL`,
|  | const char * | ampl_invokation_string = `NULL`,
|  | const char * | ampl_banner_string = `NULL`,
|  | std::string * | nl_file_content = `NULL` |
| ) |  |  |

Constructor.

virtual Ipopt::AmplTNLP::~AmplTNLP | ( |  | ) | `[virtual]`

Default destructor.

Ipopt::AmplTNLP::AmplTNLP | ( |  | ) | `[private]`

Default Constructor.

Ipopt::AmplTNLP::AmplTNLP | ( | const AmplTNLP & |  | ) | `[private]`

Copy Constructor.

## Member Function Documentation

Ipopt::AmplTNLP::DECLARE_STD_EXCEPTION | ( | NONPOSITIVE_SCALING_FACTOR |  | ) |

Exceptions.

virtual bool Ipopt::AmplTNLP::get_nlp_info | ( | Index & | n,
|  | Index & | m,
|  | Index & | nnz_jac_g,
|  | Index & | nnz_h_lag,
|  | IndexStyleEnum & | index_style |
| ) |  |  | `[virtual]`

returns dimensions of the nlp.

Overloaded from TNLP

virtual bool Ipopt::AmplTNLP::get_bounds_info | ( | Index | n,
|  | Number * | x_l,
|  | Number * | x_u,
|  | Index | m,
|  | Number * | g_l,
|  | Number * | g_u |
| ) |  |  | `[virtual]`

returns bounds of the nlp.

Overloaded from TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::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]`

provides a starting point for the nlp variables.

Overloaded from TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::eval_f | ( | Index | n,
|  | const Number * | x,
|  | bool | new_x,
|  | Number & | obj_value |
| ) |  |  | `[virtual]`

evaluates the objective value for the nlp.

Overloaded from TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::eval_grad_f | ( | Index | n,
|  | const Number * | x,
|  | bool | new_x,
|  | Number * | grad_f |
| ) |  |  | `[virtual]`

evaluates the gradient of the objective for the nlp.

Overloaded from TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::eval_g | ( | Index | n,
|  | const Number * | x,
|  | bool | new_x,
|  | Index | m,
|  | Number * | g |
| ) |  |  | `[virtual]`

evaluates the constraint residuals for the nlp.

Overloaded from TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::eval_jac_g | ( | Index | n,
|  | const Number * | x,
|  | bool | new_x,
|  | Index | m,
|  | Index | nele_jac,
|  | Index * | iRow,
|  | Index * | jCol,
|  | 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 TNLP

Implements Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::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]`

specifies the structure of the hessian of the lagrangian (if values is NULL) and evaluates the values (if values is not NULL).

Overloaded from TNLP

Reimplemented from Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::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]`

retrieve the scaling parameters for the variables, objective function, and constraints.

Reimplemented from Ipopt::TNLP.

virtual void Ipopt::AmplTNLP::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 |
| ) |  |  | `[virtual]`

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

Implements Ipopt::TNLP.

virtual Index Ipopt::AmplTNLP::get_number_of_nonlinear_variables | ( |  | ) | `[virtual]`

Reimplemented from Ipopt::TNLP.

virtual bool Ipopt::AmplTNLP::get_list_of_nonlinear_variables | ( | Index | num_nonlin_vars,
|  | Index * | pos_nonlin_vars |
| ) |  |  | `[virtual]`

Reimplemented from Ipopt::TNLP.

ASL_pfgh* Ipopt::AmplTNLP::AmplSolverObject | ( |  | ) | `[inline]`

Return the ampl solver object (ASL*).

Definition at line 301 of file AmplTNLP.hpp.

References asl_.

void Ipopt::AmplTNLP::write_solution_file | ( | const std::string & | message | ) | const

Write the solution file.

This is a wrapper for AMPL's write_sol. TODO Maybe this should be at a different place, or collect the numbers itself?

void Ipopt::AmplTNLP::get_discrete_info | ( | Index & | nlvb_,
|  | Index & | nlvbi_,
|  | Index & | nlvc_,
|  | Index & | nlvci_,
|  | Index & | nlvo_,
|  | Index & | nlvoi_,
|  | Index & | nbv_,
|  | Index & | niv_ |
| ) |  |  | const

ampl orders the variables like (continuous, binary, integer).

This method gives the number of binary and integer variables. For details, see Tables 3 and 4 in "Hooking Your Solver to AMPL"

void Ipopt::AmplTNLP::operator= | ( | const AmplTNLP & |  | ) | `[private]`

Overloaded Equals Operator.

bool Ipopt::AmplTNLP::internal_objval | ( | Number & | obj_val | ) | `[private]`

Make the objective call to ampl.

bool Ipopt::AmplTNLP::internal_conval | ( | Index | m,
|  | Number * | g = `NULL` |
| ) |  |  | `[private]`

Make the constraint call to ampl.

bool Ipopt::AmplTNLP::apply_new_x | ( | bool | new_x,
|  | Index | n,
|  | const Number * | x |
| ) |  |  | `[private]`

Internal function to update the internal and ampl state if the x value changes.

char* Ipopt::AmplTNLP::get_options | ( | const SmartPtr< OptionsList > & | options,
|  | SmartPtr< AmplOptionsList > & | ampl_options_list,
|  | const char * | ampl_option_string,
|  | const char * | ampl_invokation_string,
|  | const char * | ampl_banner_string,
|  | char **& | argv |
| ) |  |  | `[private]`

Method for obtaining the name of the NL file and the options set from AMPL.

Returns a pointer to a char* with the name of the stub

bool Ipopt::AmplTNLP::nerror_ok | ( | void * | nerror | ) | `[private]`

returns true if the ampl nerror code is ok

## Member Data Documentation

SmartPtr<const Journalist> Ipopt::AmplTNLP::jnlst_`[private]`

Journlist.

Definition at line 346 of file AmplTNLP.hpp.

ASL_pfgh* Ipopt::AmplTNLP::asl_`[private]`

pointer to the main ASL structure

Definition at line 349 of file AmplTNLP.hpp.

Referenced by AmplSolverObject().

double Ipopt::AmplTNLP::obj_sign_`[private]`

Sign of the objective fn (1 for min, -1 for max).

Definition at line 352 of file AmplTNLP.hpp.

Index Ipopt::AmplTNLP::nz_h_full_`[private]`

Definition at line 356 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::non_const_x_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 363 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::x_sol_`[private]`

Solution Vectors.

Definition at line 366 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::z_L_sol_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 367 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::z_U_sol_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 368 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::g_sol_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 369 of file AmplTNLP.hpp.

Number* Ipopt::AmplTNLP::lambda_sol_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 370 of file AmplTNLP.hpp.

Number Ipopt::AmplTNLP::obj_sol_`[private]`

A non-const copy of x - this is kept up-to-date in apply_new_x.

Definition at line 371 of file AmplTNLP.hpp.

bool Ipopt::AmplTNLP::objval_called_with_current_x_`[private]`

true when the objective value has been calculated with the current x, set to false in apply_new_x, and set to true in internal_objval

Definition at line 379 of file AmplTNLP.hpp.

bool Ipopt::AmplTNLP::conval_called_with_current_x_`[private]`

true when the constraint values have been calculated with the current x, set to false in apply_new_x, and set to true in internal_conval

Definition at line 383 of file AmplTNLP.hpp.

void* Ipopt::AmplTNLP::Oinfo_ptr_`[private]`

Pointer to the Oinfo structure.

Definition at line 387 of file AmplTNLP.hpp.

void* Ipopt::AmplTNLP::nerror_`[private]`

nerror flag passed to ampl calls - set to NULL to halt on error

Definition at line 390 of file AmplTNLP.hpp.

SmartPtr<AmplSuffixHandler> Ipopt::AmplTNLP::suffix_handler_`[private]`

Suffix Handler.

Definition at line 393 of file AmplTNLP.hpp.

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

- /home/coin/SVN-release/Ipopt-3.2.1/Ipopt/src/Apps/AmplSolver/AmplTNLP.hpp