set_objective¶
Class method.
-
do_mpc.estimator.MHE.
set_objective
(self, stage_cost, arrival_cost)¶ Set the stage cost \(l(\cdot)\) and arrival cost \(m(\cdot)\) function for the MHE problem:
\[\begin{split}\underset{ \begin{array}{c} \mathbf{x}_{0:N+1}, \mathbf{u}_{0:N}, p,\\ \mathbf{w}_{0:N}, \mathbf{v}_{0:N} \end{array} }{\mathrm{min}} &m(x_0,\tilde{x}_0, p,\tilde{p}) +\sum_{k=0}^{N-1} l(v_k, w_k, p, p_{\text{tv},k}),\\ &\left.\begin{aligned} \mathrm{s.t.}\quad x_{k+1} &= f(x_k,u_k,z_k,p,p_{\text{tv},k})+ w_k,\\ y_k &= h(x_k,u_k,z_k,p,p_{\text{tv},k}) + v_k, \\ &g(x_k,u_k,z_k,p_k,p_{\text{tv},k}) \leq 0 \end{aligned}\right\} k=0,\dots, N\end{split}\]Use the class attributes:
mhe._w
as \(w_k\)mhe._v
as \(v_k\)mhe._x_prev
as \(\tilde{x}_0\)mhe._x
as \(x_0\)mhe._p_est_prev
as \(\tilde{p}_0\)mhe._p_est
as \(p_0\)
To formulate the objective function and pass the stage cost and arrival cost independently.
Note
The retrieved attributes are symbolic structures, which can be queried with the given variable names, e.g.:
x1 = mhe._x['state_1']
For a vector of all states, use the
.cat
method as shown in the example below.Example:
# Get variables: v = mhe._v.cat stage_cost = v.T@np.diag(np.array([1,1,1,20,20]))@v x_0 = mhe._x x_prev = mhe._x_prev p_0 = mhe._p_est p_prev = mhe._p_est_prev dx = x_0.cat - x_prev.cat dp = p_0.cat - p_prev.cat arrival_cost = 1e-4*dx.T@dx + 1e-4*dp.T@dp mhe.set_objective(stage_cost, arrival_cost)
Note
Use
set_default_objective()
as a high-level wrapper for this method, if you want to use the default MHE objective function.Parameters: - stage_cost (CasADi expression) – Stage cost that is added to the MHE objective at each age.
- arrival_cost (CasADi expression) – Arrival cost that is added to the MHE objective at the initial state.
Returns: None
Return type: None
This page is auto-generated. Page source is not available on Github.