Change MPC scalefactor at runtime

Hi,
I am doing a control system with an AMPC controller with LPV. My system is strongly non-linear and its configuration changes all the time, affecting the bounds of the manupulated variables (MV) Umin and Umax. I can change the MV bounds at runtime through the MPC block inputs, however I cannot change the scalefactors, which are only set once when I compile the MPC m file. The scale factors affect the stability of my system and I am looking for a way to access the MPC object at runtime.
Thank you
Best regards
Vincent

3 Comments

Hey Vincent,
Have you found a solution to your problem? I've got the same issue.
Thanks in advance and kind regards,
Danus
Hi @Danus,
In Model Predictive Control (MPC), "ScaleFactors" are primarily used to normalize signals of different magnitudes to improve numerical conditioning and solver performance. However, once the controller is compiled, these ScaleFactors are fixed and cannot be modified at runtime.
If your system is experiencing stability issues, you might consider tuning of weights, constraints, or the prediction model. Could you clarify why you need to change ScaleFactors at runtime?
Hi Muli,
First of all, thanks for the answer.
Regarding your question: I've got a system where some of the states grow over time. Depending on the simulation duration, I assume the scale difference might affect the control quality. Therefore my first idea was to change the scale factors during run time. My second thought was to change the system dynamics so that the errors of the original states become the new states but with this change other problems occur.
Kind regards,
Danus

Sign in to comment.

Answers (0)

Asked:

on 6 Nov 2020

Commented:

on 17 Feb 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!