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);
59 const Index* GetIntegerSuffixValues(
60 std::string suffix_string,
64 const Number* GetNumberSuffixValues(
65 std::string suffix_string,
69 std::vector<Index> GetIntegerSuffixValues(
71 std::string suffix_string,
75 std::vector<Number> GetNumberSuffixValues(
77 std::string suffix_string,
114 void PrepareAmplForSuffixes(
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();
289 void MakeValidLatexString(
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
344 virtual bool get_nlp_info(
352 virtual bool get_var_con_metadata(
364 virtual bool get_bounds_info(
373 virtual bool get_constraints_linearity(
378 virtual bool get_starting_point(
397 virtual bool eval_grad_f(
412 virtual bool eval_jac_g(
437 virtual bool get_scaling_parameters(
450 virtual void finalize_solution(
467 virtual Index get_number_of_nonlinear_variables();
468 virtual bool get_list_of_nonlinear_variables(
469 Index num_nonlin_vars,
470 Index* pos_nonlin_vars
487 void write_solution_file(
488 const std::string& message
496 void get_discrete_info(
516 void set_active_objective(
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_;
651 bool internal_objval(
657 bool internal_conval(
680 const char* ampl_option_string,
681 const char* ampl_invokation_string,
682 const char* ampl_banner_string,
const std::string ipopt_option_name_
std::map< std::string, std::vector< Number > > NumericMetaDataMapType
StringMetaDataMapType con_string_md_
SmartPtr< AmplSuffixHandler > get_suffix_handler()
Method for returning the suffix handler.
PrivatInfo(const std::string ipopt_name, SmartPtr< OptionsList > options, SmartPtr< const Journalist > jnlst, void **nerror=NULL)
Class for all IPOPT specific calculated quantities.
void * nerror_
nerror flag passed to ampl calls - set to NULL to halt on error
this is for AMPL's internal wantsol callback
Index NumberOfAmplOptions()
Number of AMPL Options.
void set_numeric_metadata_for_var(std::string tag, std::vector< Number > meta_data)
void * Oinfo_ptr_
Pointer to the Oinfo structure.
void AddAvailableSuffix(std::string suffix_string, Suffix_Source source, Suffix_Type type)
DECLARE_STD_EXCEPTION(FATAL_ERROR_IN_LINEAR_SOLVER)
const SmartPtr< const Journalist > & Jnlst() const
const std::string ipopt_name_
double Number
Type of all numbers.
bool set_active_objective_called_
whether set_active_objective has been called
void set_integer_metadata_for_con(std::string tag, std::vector< Index > meta_data)
ASL_pfgh * asl_
pointer to the main ASL structure
bool hesset_called_
whether we have called hesset
bool conval_called_with_current_x_
whether the constraint values have been calculated with the current x set to false in apply_new_x...
AmplOptionType Type() const
double obj_sign_
Sign of the objective fn (1 for min, -1 for max)
void set_integer_metadata_for_var(std::string tag, std::vector< Index > meta_data)
IntegerMetaDataMapType con_integer_md_
LinearityType
Linearity-types of variables and constraints.
const std::string & IpoptOptionName() const
bool objval_called_with_current_x_
whether the objective value has been calculated with the current x
const SmartPtr< OptionsList > & Options() const
void set_string_metadata_for_con(std::string tag, std::vector< std::string > meta_data)
Template class for Smart Pointers.
Storing the reference count of all the smart pointers that currently reference it.
Ampl Option class containing name, type and description for an AMPL option.
const SmartPtr< const Journalist > jnlst_
SolverReturn
enum for the return from the optimize algorithm
Index nkeywds_
Number of entries stored in keywds_.
ASL_pfgh * AmplSolverObject()
Return the ampl solver object (ASL*)
IntegerMetaDataMapType var_integer_md_
std::vector< std::string > suffix_ids_
std::vector< Suffix_Type > suffix_types_
Index nz_h_full_
number of nonzeros in the full_x Hessian
Class to organize all the data required by the algorithm.
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.
int Index
Type of all indices of vectors, matrices etc.
SmartPtr< const Journalist > jnlst_
Journalist.
const std::string & IpoptName() const
void set_numeric_metadata_for_con(std::string tag, std::vector< Number > meta_data)
std::map< std::string, std::vector< Index > > IntegerMetaDataMapType
std::map< std::string, std::vector< std::string > > StringMetaDataMapType
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
Ampl Interface, implemented as a TNLP.
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)
char * Description() const
Class for storing a number of AMPL options that should be registered to the AMPL Solver library inter...
AmplOptionsList()
Default Constructor.
NumericMetaDataMapType con_numeric_md_
std::vector< Suffix_Source > suffix_sources_
Base class for all NLP's that use standard triplet matrix form and dense vectors. ...
const AmplOptionType type_
NumericMetaDataMapType var_numeric_md_
const SmartPtr< OptionsList > options_
StringMetaDataMapType var_string_md_
meta data to pass on to TNLP
std::map< std::string, SmartPtr< const AmplOption > > ampl_options_map_
map for storing registered AMPL options