Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support direct transmission from manipulated inputs ? #108

Open
franckgaga opened this issue Sep 29, 2024 · 2 comments
Open

Support direct transmission from manipulated inputs ? #108

franckgaga opened this issue Sep 29, 2024 · 2 comments

Comments

@franckgaga
Copy link
Member

franckgaga commented Sep 29, 2024

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.

Originally posted by @baggepinnen in #106 (comment)

@franckgaga
Copy link
Member Author

franckgaga commented Sep 29, 2024

@baggepinnen

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) ?

image

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) ?

@baggepinnen
Copy link
Member

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,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants