set_nl_cons

Class method.

do_mpc.controller.MPC.set_nl_cons(self, expr_name, expr, ub=inf, soft_constraint=False, penalty_term_cons=1, maximum_violation=inf)

Introduce new constraint to the class. Further constraints are optional. Expressions must be formulated with respect to _x, _u, _z, _tvp, _p. They are implemented as:

\[m(x,u,z,p_{\text{tv}}, p) \leq m_{\text{ub}}\]

Setting the flag soft_constraint=True will introduce slack variables \(\epsilon\), such that:

\[\begin{split}m(x,u,z,p_{\text{tv}}, p)-\epsilon &\leq m_{\text{ub}},\\ 0 &\leq \epsilon \leq \epsilon_{\text{max}},\end{split}\]

Slack variables are added to the cost function and multiplied with the supplied penalty term. This formulation makes constraints soft, meaning that a certain violation is tolerated and does not lead to infeasibility. Typically, high values for the penalty are suggested to avoid significant violation of the constraints.

Parameters:
  • expr_name (string) – Arbitrary name for the given expression. Names are used for key word indexing.
  • expr (CasADi SX or MX) – CasADi SX or MX function depending on _x, _u, _z, _tvp, _p.
Raises:
  • assertion – expr_name must be str
  • assertion – expr must be a casadi SX or MX type
Returns:

Returns the newly created expression. Expression can be used e.g. for the RHS.

Return type:

casadi.SX

This page is auto-generated. Page source is not available on Github.