@@ -49,35 +49,60 @@ struct IpoptModel
4949 /* Methods */
5050 IpoptModel ();
5151
52- VariableIndex add_variable (double lb = -INFINITY, double ub = INFINITY, double start = 0.0 );
53- void change_variable_lb (const VariableIndex &variable, double lb);
54- void change_variable_ub (const VariableIndex &variable, double ub);
55- void change_variable_bounds (const VariableIndex &variable, double lb, double ub);
52+ VariableIndex add_variable (double lb = -INFINITY, double ub = INFINITY, double start = 0.0 ,
53+ const char *name = nullptr );
54+ double get_variable_lb (const VariableIndex &variable);
55+ double get_variable_ub (const VariableIndex &variable);
56+ void set_variable_lb (const VariableIndex &variable, double lb);
57+ void set_variable_ub (const VariableIndex &variable, double ub);
58+ void set_variable_bounds (const VariableIndex &variable, double lb, double ub);
59+
60+ double get_variable_start (const VariableIndex &variable);
61+ void set_variable_start (const VariableIndex &variable, double start);
62+
63+ std::string get_variable_name (const VariableIndex &variable);
64+ void set_variable_name (const VariableIndex &variable, const std::string &name);
65+
5666 double get_variable_value (const VariableIndex &variable);
67+ double get_expression_value (const ScalarAffineFunction &function);
68+ double get_expression_value (const ScalarQuadraticFunction &function);
69+ double get_expression_value (const ExprBuilder &function);
70+
71+ std::string pprint_variable (const VariableIndex &variable);
72+ std::string pprint_expression (const ScalarAffineFunction &function, int precision = 4 );
73+ std::string pprint_expression (const ScalarQuadraticFunction &function, int precision = 4 );
74+ std::string pprint_expression (const ExprBuilder &function, int precision = 4 );
5775
5876 ParameterIndex add_parameter (double value = 0.0 );
5977 void set_parameter (const ParameterIndex ¶meter, double value);
6078
79+ double get_obj_value ();
80+ double get_constraint_primal (IndexT index);
81+ double get_constraint_dual (IndexT index);
82+
6183 ConstraintIndex add_linear_constraint (const ScalarAffineFunction &f, ConstraintSense sense,
62- double rhs);
84+ double rhs, const char *name = nullptr );
6385 ConstraintIndex add_linear_constraint (const ScalarAffineFunction &f, ConstraintSense sense,
64- double lb, double ub);
65- ConstraintIndex add_linear_constraint (const ExprBuilder &f, ConstraintSense sense, double rhs);
86+ double lb, double ub, const char *name = nullptr );
87+ ConstraintIndex add_linear_constraint (const ExprBuilder &f, ConstraintSense sense, double rhs,
88+ const char *name = nullptr );
6689 ConstraintIndex add_linear_constraint (const ExprBuilder &f, ConstraintSense sense, double lb,
67- double ub);
68- ConstraintIndex add_linear_constraint (const VariableIndex &f, ConstraintSense sense,
69- double rhs );
90+ double ub, const char *name = nullptr );
91+ ConstraintIndex add_linear_constraint (const VariableIndex &f, ConstraintSense sense, double rhs,
92+ const char *name = nullptr );
7093 ConstraintIndex add_linear_constraint (const VariableIndex &f, ConstraintSense sense, double lb,
71- double ub);
94+ double ub, const char *name = nullptr );
7295
7396 ConstraintIndex add_quadratic_constraint (const ScalarQuadraticFunction &f,
74- ConstraintSense sense, double rhs);
97+ ConstraintSense sense, double rhs,
98+ const char *name = nullptr );
7599 ConstraintIndex add_quadratic_constraint (const ScalarQuadraticFunction &f,
76- ConstraintSense sense, double lb, double ub);
100+ ConstraintSense sense, double lb, double ub,
101+ const char *name = nullptr );
77102 ConstraintIndex add_quadratic_constraint (const ExprBuilder &f, ConstraintSense sense,
78- double rhs);
103+ double rhs, const char *name = nullptr );
79104 ConstraintIndex add_quadratic_constraint (const ExprBuilder &f, ConstraintSense sense, double lb,
80- double ub);
105+ double ub, const char *name = nullptr );
81106
82107 template <typename T>
83108 void add_objective (const T &expr)
@@ -99,8 +124,8 @@ struct IpoptModel
99124 ConstraintSense sense, const std::vector<double > &rhss);
100125 NLConstraintIndex add_nl_constraint (const FunctionIndex &k,
101126 const std::vector<VariableIndex> &xs,
102- const std::vector<double > &ps,
103- ConstraintSense sense, const std::vector<double > &rhss);
127+ const std::vector<double > &ps, ConstraintSense sense,
128+ const std::vector<double > &rhss);
104129 NLConstraintIndex add_nl_constraint (const FunctionIndex &k,
105130 const std::vector<VariableIndex> &xs, ConstraintSense sense,
106131 const std::vector<double > &rhss);
@@ -112,8 +137,8 @@ struct IpoptModel
112137 const std::vector<double > &ubs);
113138 NLConstraintIndex add_nl_constraint (const FunctionIndex &k,
114139 const std::vector<VariableIndex> &xs,
115- const std::vector<double > &ps,
116- ConstraintSense sense, const std::vector<double > &lbs,
140+ const std::vector<double > &ps, ConstraintSense sense,
141+ const std::vector<double > &lbs,
117142 const std::vector<double > &ubs);
118143 NLConstraintIndex add_nl_constraint (const FunctionIndex &k,
119144 const std::vector<VariableIndex> &xs, ConstraintSense sense,
@@ -124,20 +149,22 @@ struct IpoptModel
124149 const std::vector<VariableIndex> &xs,
125150 const std::vector<ParameterIndex> &ps);
126151 void add_nl_expression (const NLConstraintIndex &constraint, const FunctionIndex &k,
127- const std::vector<VariableIndex> &xs,
128- const std::vector<double > &ps);
152+ const std::vector<VariableIndex> &xs, const std::vector<double > &ps);
129153 void add_nl_expression (const NLConstraintIndex &constraint, const FunctionIndex &k,
130154 const std::vector<VariableIndex> &xs);
131155
156+ void add_nl_objective (const FunctionIndex &k, const std::vector<VariableIndex> &xs);
132157 void add_nl_objective (const FunctionIndex &k, const std::vector<VariableIndex> &xs,
133158 const std::vector<ParameterIndex> &ps);
159+ void add_nl_objective (const FunctionIndex &k, const std::vector<VariableIndex> &xs,
160+ const std::vector<double > &ps);
134161
135162 void optimize ();
136163
137164 // set options
138- void set_option_int (const std::string &name, int value);
139- void set_option_num (const std::string &name, double value);
140- void set_option_str (const std::string &name, const std::string &value);
165+ void set_raw_option_int (const std::string &name, int value);
166+ void set_raw_option_double (const std::string &name, double value);
167+ void set_raw_option_string (const std::string &name, const std::string &value);
141168
142169 /* Members */
143170
@@ -147,6 +174,8 @@ struct IpoptModel
147174 std::vector<double > m_var_lb, m_var_ub, m_var_init;
148175 std::vector<double > m_con_lb, m_con_ub;
149176
177+ Hashmap<IndexT, std::string> m_var_names, m_con_names;
178+
150179 size_t m_jacobian_nnz = 0 ;
151180 std::vector<size_t > m_jacobian_rows, m_jacobian_cols;
152181
0 commit comments