25 #ifndef CASADI_OPTISTACK_HPP
26 #define CASADI_OPTISTACK_HPP
28 #include "function.hpp"
29 #include "callback.hpp"
235 :
public SWIG_IF_ELSE(PrintableCommon, Printable<Opti>),
237 friend class InternalOptiCallback;
308 Opti(
const std::string& problem_type=
"nlp");
389 MX variable(casadi_int n=1, casadi_int m=1,
const std::string& attribute=
"full");
391 MX variable(
const Sparsity& sp,
const std::string& attribute=
"full");
393 MX variable(
const MX& symbol,
const std::string& attribute=
"full");
458 MX parameter(casadi_int n=1, casadi_int m=1,
const std::string& attribute=
"full");
460 MX parameter(
const Sparsity& sp,
const std::string& attribute=
"full");
462 MX parameter(
const MX& symbol,
const std::string& attribute=
"full");
519 void minimize(
const MX& f,
double linear_scale=1);
702 void subject_to(
const MX& g,
const Dict& options=
Dict());
703 void subject_to(
const std::vector<MX>& g,
const Dict& options=
Dict());
704 void subject_to(
const MX& g,
const DM& linear_scale,
const Dict& options=
Dict());
705 void subject_to(
const std::vector<MX>& g,
const DM& linear_scale,
const Dict& options=
Dict());
859 void solver(
const std::string& solver,
990 void set_initial(
const MX& x,
const DM& v);
991 void set_initial(
const std::vector<MX>& assignments);
1067 void set_value(
const MX& x,
const DM& v);
1068 void set_value(
const std::vector<MX>& assignments);
1137 void set_domain(
const MX& x,
const std::string& domain);
1198 void set_linear_scale(
const MX& x,
const DM& scale,
const DM& offset=0);
1430 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
1431 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
1432 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
1542 std::string return_status()
const;
1587 std::vector<MX> initial()
const;
1645 std::vector<MX> value_variables()
const;
1646 std::vector<MX> value_parameters()
const;
1791 MX dual(
const MX& m)
const;
1829 casadi_int nx()
const;
1867 casadi_int np()
const;
1905 casadi_int ng()
const;
2129 DM x_linear_scale()
const;
2131 DM x_linear_scale_offset()
const;
2133 DM g_linear_scale()
const;
2135 double f_linear_scale()
const;
2303 Function to_function(
const std::string& name,
2304 const std::vector<MX>& args,
const std::vector<MX>& res,
2307 Function to_function(
const std::string& name,
2308 const std::vector<MX>& args,
const std::vector<MX>& res,
2309 const std::vector<std::string>& name_in,
2310 const std::vector<std::string>& name_out,
2314 Function to_function(
const std::string& name,
2315 const std::map<std::string, MX>& dict,
2316 const std::vector<std::string>& name_in,
2317 const std::vector<std::string>& name_out,
2551 void update_user_dict(
const MX& m,
const Dict& meta);
2552 void update_user_dict(
const std::vector<MX>& m,
const Dict& meta);
2597 Dict user_dict(
const MX& m)
const;
2656 void disp(std::ostream& stream,
bool more=
false)
const;
2659 std::string get_str(
bool more=
false)
const;
2669 void callback_class();
2691 const OptiNode* operator->()
const;
2769 casadi_error(
"Callback objects cannot be copied");
2773 uout() <<
"This is a simple callback at iteration" << i << std::endl;
2787 friend class InternalOptiCallback;
2887 bool is_parametric(
const MX& expr)
const;
2940 std::vector<MX> symvar()
const;
2941 std::vector<MX> symvar(
const MX& expr)
const;
2989 MetaCon canon_expr(
const MX& expr)
const;
2995 MetaCon get_meta_con(
const MX& m)
const;
2998 void set_meta(
const MX& m,
const MetaVar& meta);
3001 void set_meta_con(
const MX& m,
const MetaCon& meta);
3004 void assert_active_symbol(
const MX& m)
const;
3053 std::vector<MX> active_symvar(
VariableType type)
const;
3055 std::vector<DM> active_values(
VariableType type)
const;
3093 MX x_lookup(casadi_index i)
const;
3128 MX g_lookup(casadi_index i)
const;
3131 casadi_index g_index_reduce_g(casadi_index i)
const;
3133 casadi_index g_index_reduce_x(casadi_index i)
const;
3135 casadi_index g_index_unreduce_g(casadi_index i)
const;
3177 std::string x_describe(casadi_index i,
const Dict& opts=
Dict())
const;
3212 std::string g_describe(casadi_index i,
const Dict& opts=
Dict())
const;
3260 std::string describe(
const MX& x, casadi_index indent=0,
const Dict& opts=
Dict())
const;
3337 void show_infeasibilities(
double tol=0,
const Dict& opts=
Dict())
const;
3411 void solve_prepare();
3418 void res(
const DMDict& res);
3456 std::vector<MX> constraints()
const;
3458 MX objective()
const;
3464 void assert_empty()
const;
3478 void mark_problem_dirty(
bool flag=
true);
3480 bool problem_dirty()
const;
3484 void mark_solver_dirty(
bool flag=
true);
3486 bool solver_dirty()
const;
3490 void mark_solved(
bool flag=
true);
3492 bool solved()
const;
3495 void assert_solved()
const;
3497 void assert_baked()
const;
3500 casadi_int instance_number()
const;
3563 class CASADI_EXPORT
OptiSol :
public SWIG_IF_ELSE(PrintableCommon, Printable<OptiAdvanced>) {
3567 void disp(std::ostream& stream,
bool more=
false)
const;
3568 std::string get_str(
bool more=
false)
const;
3649 native_DM value(
const MX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
3650 native_DM value(
const DM& x,
const std::vector<MX>& values=std::vector<MX>())
const;
3651 native_DM value(
const SX& x,
const std::vector<MX>& values=std::vector<MX>())
const;
3711 std::vector<MX> value_variables()
const;
3712 std::vector<MX> value_parameters()
const;
Opti with debugging and low-level access.
~OptiAdvanced()
Destructor.
Base class of iteration callbacks for Opti.
virtual void call(casadi_int i)
Called after every solver iteration with the iteration number.
OptiCallback(const OptiCallback &obj)
A simplified interface for NLP modeling/solving.
Snapshot of an Opti problem and its solution.
std::string type_name() const
Opti opti() const
Get the Opti copy this solution belongs to.
A simplified interface for NLP modeling/solving.
static MX bounded(const MX &lb, const MX &expr, const MX &ub)
Construct a double inequality.
std::string type_name() const
Readable name of the class.
GenericShared implements a reference counting framework similar for efficient and.
VariableType
Kind of an Opti symbol (MetaVar::type)
DomainType
Domain of a decision variable (see Opti::set_domain)
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
void copy(const T1 *x, casadi_int n, T2 *y)
ConstraintType
How subject_to() classified a constraint (MetaCon::type)
@ OPTI_GENERIC_INEQUALITY
std::map< std::string, DM > DMDict
Range [start, stop) of a symbol or constraint in the flattened x or g vector.