Go to the documentation of this file.
7 #ifndef __IPAMPLTNLP_HPP__
8 #define __IPAMPLTNLP_HPP__
48 std::string suffix_string,
53 suffix_ids_.push_back(suffix_string);
54 suffix_types_.push_back(type);
55 suffix_sources_.push_back(source);
60 std::string suffix_string,
65 std::string suffix_string,
71 std::string suffix_string,
77 std::string suffix_string,
143 const std::string ipopt_option_name,
145 const std::string description);
149 delete[] description_;
154 return ipopt_option_name_;
196 const std::string ipopt_name,
201 : ipopt_name_(ipopt_name),
242 const std::string ampl_option_name,
243 const std::string ipopt_option_name,
245 const std::string description
249 ampl_options_map_[ampl_option_name] =
ConstPtr(new_option);
255 return (
Index) ampl_options_map_.size();
327 bool allow_discrete =
false,
329 const char* ampl_option_string = NULL,
330 const char* ampl_invokation_string = NULL,
331 const char* ampl_banner_string = NULL,
332 std::string* nl_file_content = NULL
469 Index num_nonlin_vars,
470 Index* pos_nonlin_vars
488 const std::string& message
527 std::vector<std::string> meta_data)
529 var_string_md_[tag] = meta_data;
534 std::vector<Index> meta_data)
536 var_integer_md_[tag] = meta_data;
541 std::vector<Number> meta_data)
543 var_numeric_md_[tag] = meta_data;
548 std::vector<std::string> meta_data)
550 con_string_md_[tag] = meta_data;
555 std::vector<Index> meta_data)
557 con_integer_md_[tag] = meta_data;
562 std::vector<Number> meta_data)
564 con_numeric_md_[tag] = meta_data;
571 return suffix_handler_;
680 const char* ampl_option_string,
681 const char* ampl_invokation_string,
682 const char* ampl_banner_string,
virtual ~AmplTNLP()
Default destructor.
@ WS_Option
this is for AMPL's internal wantsol callback
ASL_pfgh * asl_
pointer to the main ASL structure
bool hesset_called_
whether we have called hesset
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 has finished (successfully or not) so the TNLP can digest th...
AmplSuffixHandler(const AmplSuffixHandler &)
Default Constructor.
Class to organize all the data required by the algorithm.
void set_active_objective(Index obj_no)
A method for setting the index of the objective function to be considered.
void AddAmplOption(const std::string ampl_option_name, const std::string ipopt_option_name, AmplOptionsList::AmplOptionType type, const std::string description)
Adding a new AMPL Option.
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.
bool internal_conval(const Number *x, Index m, Number *g=NULL)
Make the constraint call to ampl.
const std::string ipopt_name_
void set_integer_metadata_for_con(std::string tag, std::vector< Index > meta_data)
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 request either the sparsity structure or the values of the Hessian of the Lagrangian.
virtual bool eval_grad_f(Index n, const Number *x, bool new_x, Number *grad_f)
Method to request the gradient of the objective function.
char * Description() const
bool conval_called_with_current_x_
whether the constraint values have been calculated with the current x set to false in apply_new_x,...
Ampl Option class containing name, type and description for an AMPL option.
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)
Method to request scaling parameters.
Class for storing a number of AMPL options that should be registered to the AMPL Solver library inter...
Ampl Interface, implemented as a TNLP.
std::vector< Suffix_Source > suffix_sources_
double obj_sign_
Sign of the objective fn (1 for min, -1 for max)
Class for all IPOPT specific calculated quantities.
std::map< std::string, std::vector< Index > > IntegerMetaDataMapType
This file contains a base class for all exceptions and a set of macros to help with exceptions.
double Number
Type of all numbers.
void set_string_metadata_for_con(std::string tag, std::vector< std::string > meta_data)
const SmartPtr< const Journalist > & Jnlst() const
std::vector< std::string > suffix_ids_
const std::string & IpoptName() const
bool internal_objval(const Number *x, Number &obj_val)
Make the objective call to ampl.
ASL_pfgh * AmplSolverObject()
Return the ampl solver object (ASL*)
AmplOptionsList()
Default Constructor.
virtual bool get_constraints_linearity(Index m, LinearityType *const_types)
Method to request the constraints linearity.
const Index * GetIntegerSuffixValues(std::string suffix_string, Suffix_Source source) const
DECLARE_STD_EXCEPTION(NONPOSITIVE_SCALING_FACTOR)
Exceptions.
void set_numeric_metadata_for_con(std::string tag, std::vector< Number > meta_data)
Index nz_h_full_
number of nonzeros in the full_x Hessian
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 request the starting point before iterating.
void set_numeric_metadata_for_var(std::string tag, std::vector< Number > meta_data)
AmplOption(const AmplOption &)
Copy Constructor.
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.
void PrintDoxygen(SmartPtr< const Journalist > jnlst)
int Index
Type of all indices of vectors, matrices etc.
const Number * GetNumberSuffixValues(std::string suffix_string, Suffix_Source source) const
std::vector< Number > GetNumberSuffixValues(Index n, std::string suffix_string, Suffix_Source source) const
const SmartPtr< OptionsList > options_
void operator=(const AmplOptionsList &)
Default Assignment Operator.
Template class for Smart Pointers.
const std::string ipopt_option_name_
bool set_active_objective_called_
whether set_active_objective has been called
void get_discrete_info(Index &nlvb_, Index &nlvbi_, Index &nlvc_, Index &nlvci_, Index &nlvo_, Index &nlvoi_, Index &nbv_, Index &niv_) const
Give the number of binary and integer variables.
IntegerMetaDataMapType con_integer_md_
Index nkeywds_
Number of entries stored in keywds_.
void call_hesset()
calls hesset ASL function
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 request either the sparsity structure or the values of the Jacobian of the constraints.
bool nerror_ok(void *nerror)
whether the ampl nerror code is ok
void AddAvailableSuffix(std::string suffix_string, Suffix_Source source, Suffix_Type type)
bool objval_called_with_current_x_
whether the objective value has been calculated with the current x
AmplTNLP()
Default Constructor.
AmplOptionType Type() const
AmplTNLP(const AmplTNLP &)
Copy Constructor.
std::map< std::string, std::vector< Number > > NumericMetaDataMapType
~AmplOptionsList()
Destructor.
void write_solution_file(const std::string &message) const
Write the solution file.
void * keywds_
pointer to the keywords
SmartPtr< AmplSuffixHandler > suffix_handler_
Suffix Handler.
void set_string_metadata_for_var(std::string tag, std::vector< std::string > meta_data)
AmplOption(const std::string ipopt_option_name, AmplOptionType type, const std::string description)
void set_integer_metadata_for_var(std::string tag, std::vector< Index > meta_data)
char * get_options(const SmartPtr< OptionsList > &options, SmartPtr< AmplOptionsList > &l_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.
void * Keywords(const SmartPtr< OptionsList > &options, SmartPtr< const Journalist > jnlst, void **nerror)
ASL keywords list for the stored options.
LinearityType
Linearity-types of variables and constraints.
virtual bool get_nlp_info(Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)
Method to request the initial information about the problem.
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.
AmplOption()
Default Constructor.
IntegerMetaDataMapType var_integer_md_
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
std::map< std::string, std::vector< std::string > > StringMetaDataMapType
Index NumberOfAmplOptions()
Number of AMPL Options.
const std::string & IpoptOptionName() const
void operator=(const AmplSuffixHandler &)
Default Assignment Operator.
void PrintLatex(SmartPtr< const Journalist > jnlst)
PrivatInfo(const std::string ipopt_name, SmartPtr< OptionsList > options, SmartPtr< const Journalist > jnlst, void **nerror=NULL)
Base class for all NLP's that use standard triplet matrix form and dense vectors.
NumericMetaDataMapType var_numeric_md_
SmartPtr< const Journalist > jnlst_
Journalist.
std::vector< Index > GetIntegerSuffixValues(Index n, std::string suffix_string, Suffix_Source source) const
void operator=(const AmplOption &)
Default Assignment Operator.
virtual Index get_number_of_nonlinear_variables()
Return the number of variables that appear nonlinearly in the objective function or in at least one c...
SmartPtr< AmplSuffixHandler > get_suffix_handler()
Method for returning the suffix handler.
const AmplOptionType type_
std::vector< Suffix_Type > suffix_types_
StringMetaDataMapType var_string_md_
meta data to pass on to TNLP
StringMetaDataMapType con_string_md_
void operator=(const AmplTNLP &)
Default Assignment Operator.
SolverReturn
enum for the return from the optimize algorithm
const SmartPtr< OptionsList > & Options() const
virtual bool get_var_con_metadata(Index n, StringMetaDataMapType &var_string_md, IntegerMetaDataMapType &var_integer_md, NumericMetaDataMapType &var_numeric_md, Index m, StringMetaDataMapType &con_string_md, IntegerMetaDataMapType &con_integer_md, NumericMetaDataMapType &con_numeric_md)
Method to request meta data for the variables and the constraints.
const SmartPtr< const Journalist > jnlst_
void * Oinfo_ptr_
Pointer to the Oinfo structure.
virtual bool eval_g(Index n, const Number *x, bool new_x, Index m, Number *g)
Method to request the constraint values.
virtual bool eval_f(Index n, const Number *x, bool new_x, Number &obj_value)
Method to request the value of the objective function.
Storing the reference count of all the smart pointers that currently reference it.
void PrepareAmplForSuffixes(ASL_pfgh *asl)
Method called by AmplTNLP to prepare the asl for the suffixes.
std::map< std::string, SmartPtr< const AmplOption > > ampl_options_map_
map for storing registered AMPL options
void * nerror_
nerror flag passed to ampl calls - set to NULL to halt on error
AmplOptionsList(const AmplOptionsList &)
Default Constructor.
NumericMetaDataMapType con_numeric_md_
virtual bool get_list_of_nonlinear_variables(Index num_nonlin_vars, Index *pos_nonlin_vars)
Return the indices of all nonlinear variables.
void MakeValidLatexString(std::string source, std::string &dest) const