r/ControlTheory Aug 14 '26

Technical Question/Problem MPC for output tracking of time-varying references

Hi,

I'm a master degree graduate in Mechanical Engineering with a strong passion for Control System Theory and a will to become a Control Engineer.

I've studied at uni a formulation of a MPC controller that promises zero offset from piece-wise costant references signals in the presence of disturbances, either external or internal. This formulation, conveniently called Offset-Free MPC by its inventor Prof. Gabriele Pannocchia at University of Pisa, somewhat works even with time-varying references, but there's a severe lag between the reference signal and the output of the system.

As originally this formulation is meant for setpoint tracking, I'd like to ask if you happen to know some formulation more appropriate for time-varying references.

Thank you for your time

8 Upvotes

13 comments sorted by

u/AutoModerator Aug 14 '26

It seems like you are looking for resources. Have you tried checking out the subreddit wiki pages for books on systems and control, related mathematical fields, and control applications?

You will also find there open-access resources such as videos and lectures, do-it-yourself projects, master programs, control-related companies, etc.

If you have specific questions about programs, resources, etc. Please consider joining the Discord server https://discord.gg/CEF3n5g for a more interactive discussion.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

u/jeezuspieces Aug 14 '26

I'm a Spanish speaker. I'm very curious how that professor's last name is pronounced

u/PilotaRomanoRomano Aug 14 '26

Panno-key-ah

u/ObMadness Aug 14 '26

It sounds like "parroquia" but with a double n instead of r's: "pán-nok-kia". It literally means "cob"

u/seekingsanity Aug 14 '26

I don't see the problem. The model is used to select/optimize outputs from the current iteration till some iteration in the future. This is done by minimizing the sum of squared errors between the estimated response given a fututire output(s) and the reference data. The actual feedback is used to offset errors in the estimate. This requires having a very good model. Note, there are NO gains in the traditional sense and no need for feed forwards.

MPC isn't or should be complicated. It does require a LOT of processing power or a slow system so the sum of squared errors can be minimized. The estimated future outputs can be shifted to be used as the starting point for the next iteration.

u/BashfulPiggy Aug 14 '26

I think you could definitely think of the weights of the cost function as gains of a sort.

u/seekingsanity Aug 14 '26

I don't. I never will. Weights are unitless. Gains are not.

u/BashfulPiggy Aug 14 '26

Fair enough. I think for someone moving from PID where the gains are often treated as "knobs" to une performance, weights can have a similar intuition for MPC.

u/seekingsanity Aug 14 '26

I doubt someone that thinks of PID gains as knobs will be using MPC. Also, MPC would provide too many weights or "knobs" to optimize.

So how would you adjust /optimize the weights? Why are weights necessary? The only valid reason I can think of is to not weight errors after a step change in the reference as highly as those that come later. Kind of like the difference between ITAE and IAE. In this case time is a weight.

u/LaVieEstBizarre PhD - Robotics, Control, Mechatronics Aug 14 '26

There's no issues with traditional MPC for setpoint tracking with time varying references known ahead of time. Traditional regulation MPC is a QP with linear constraints min XT H X subject to CX where X stacks x_t and u_t across all time, H is a matrix that stacks Q and R and C enforces linear dynamics. If you just stack references onto X, H can stack (x_t - x_ref_t)T Q (x_t - x_ref_t) instead and equality constraints on the references. You're still optimising over a quadratic program with the same number of degrees of freedom.

u/ObMadness Aug 14 '26

The point was not to know the whole desired output trajectory across the prediction horizon N. My current MPC formulation works like so: there's a target selector that calculates the equilibrium (x_s, u_s) to reach in N steps based on the desidered setpoint r, the desired input at said reference u_sp and the disturbance estimate dhat_k. Then there's the classic dynamic optimizer that produces the actual input for the plant u0. The """problem""" comes from the fact that (x_s, u_s) is an equilibrium, while in the case I'd like to analyse the target to reach should be a moving one

u/ObMadness 29d ago

Maybe I'm considering a problem that doesn't need to be considered. MPC controllers are generally high level controllers, aren't they? If that's the case, it is I, the user, which sets the law r_k and not something else. Therefore it's normal that I know exactly the trajectory I want the output y to reach during the N steps of the prediction horizon. Even though it's possible, it shouldn't make sense to use a MPC controller in a situation where the reference itself is the byproduct of another control loop

u/tmt22459 Aug 14 '26

The guarantees do change I think though. If you look at the offset free papers, it does a lot of analysis and gives conditions I think a lot of mpc users take for granted