@@ -18,8 +18,8 @@ Construct a direct single shooting [`TranscriptionMethod`](@ref).
1818For [`MovingHorizonEstimator`](@ref) objects, the decision variable in the optimization
1919problem is (excluding the slack ``ϵ``):
2020```math
21- \m athbf{Z} =
22- = \b egin{bmatrix}
21+ \m athbf{Z}
22+ = \b egin{bmatrix}
2323 \m athbf{x̂}_k(k-N_k+p) \\
2424 \m athbf{Ŵ} \e nd{bmatrix}
2525 = \b egin{bmatrix}
@@ -51,9 +51,24 @@ struct SingleShooting <: ShootingMethod end
5151
5252Construct a direct multiple shooting [`TranscriptionMethod`](@ref).
5353
54- The decision variable is (excluding ``ϵ``):
54+ For [`MovingHorizonEstimator`](@ref) objects, the decision variable is (excluding ``ϵ``):
55+ ```math
56+ \m athbf{Z} = \b egin{bmatrix}
57+ \m athbf{X̂_0} \\
58+ \m athbf{Ŵ} \\
59+ \m athbf{X̂_0} \e nd{bmatrix}
60+ = \b egin{bmatrix}
61+ \m athbf{x̂}_k(k-N_k+p) \\
62+ \m athbf{Ŵ} \\
63+ \m athbf{x̂}_k(k-N_k+p)
64+ = \b egin{bmatrix}
65+
66+ ```
67+ and, for [`PredictiveController`](@ref) types:
5568```math
56- \m athbf{Z} = \b egin{bmatrix} \m athbf{ΔU} \\ \m athbf{X̂_0} \e nd{bmatrix}
69+ \m athbf{Z} = \b egin{bmatrix}
70+ \m athbf{ΔU} \\
71+ \m athbf{X̂_0} \e nd{bmatrix}
5772```
5873thus it also includes the predicted states, expressed as deviation vectors from the
5974operating point ``\m athbf{x̂_{op}}`` (see [`augment_model`](@ref)):
@@ -68,11 +83,13 @@ where ``\mathbf{x̂}_i(k+j)`` is the state prediction for time ``k+j``, estimate
6883observer at time ``i=k`` or ``i=k-1`` depending on its `direct` flag. Note that
6984``\m athbf{X̂_0 = X̂}`` if the operating point is zero, which is typically the case in practice
7085for [`NonLinModel`](@ref).
86+
87+ # TODO: the subscript notation is presumably wrong for the MHE.
7188
72- This transcription computes the predictions by calling the augmented discrete-time model
89+ This transcription codmputes the predictions by calling the augmented discrete-time model
7390in the equality constraint function recursively over ``H_p``, or by updating the linear
7491equality constraint vector for [`LinModel`](@ref). It is generally more efficient for large
75- control horizon ``H_c`` , unstable or highly nonlinear models/constraints. Multithreading
92+ ``H_c`` or ``H_e`` values , unstable or highly nonlinear models/constraints. Multithreading
7693with `f_threads` or `h_threads` keyword arguments can be advantageous if ``\m athbf{f}`` or
7794``\m athbf{h}`` in the [`NonLinModel`](@ref) is expensive to evaluate, respectively.
7895
0 commit comments