You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You are of course correct in what you say, but I still wouldn't be so quick in dismissing the direct feedthrough use case. You are not considering the following
Not all systems that are controlled by mpc are purely physical systems. A very common case that isn't is when an mpc controller is used in a slower outer loop, and a much faster inner controller is tracking references provided by mpc. In this case, you cannot form any reasonable model of the inner closed loop without direct feedthrough. The inner loop in this case will interpolate between the samples in the reference trajectory in a non causal way, and the inner loop is in this case best discretized using a Tustin or FOH discretization which introduces nonzero D matrices.
You can of course add a one sample delay, but if you're using a cascade controller because it's too slow to run mpc at the faster rate, an additional sample delay at the slow rate is a very poor solution to an artificial problem introduced by the MPC tool.
This is indeed a very common case. A cascade structure is almost always used, at least for process control.
Now, If I want to incorporate this feature (still not sure TBH), comes the question of how. It's not obvious to me at all in the MPC framework. I think JuliaSimControl support non-strickly proper plant model ? How did you implement that ? Something like this (Maciejowski, p37) ?
edit: it seems that we cannot do the approach above on nonlinear equations. Do you know an approach that would be universal (both linear and nonlinear systems) ?
In JSC, the user can either write a stage cost where the cost at time step k is any function c(x(k), u(k)), or the user can write cost functions and constraints that depend acausally on the entire optimization trajectory, with such an approach, your are not limited even to direct feedthrough, your "output" at one time step can depend arbitrarily on what you think will happen in the future. The controller is of still causal in the relationship between the control output and what actually does happen in reality, it's unfortunately not magic :) For the linear MPC functionality, I do have the same distinction between measured outputs$y$ and performance outputs$z$ as the text above, but I do not perform the transformation in eq. 2.5,
Originally posted by @baggepinnen in #106 (comment)
The text was updated successfully, but these errors were encountered: