What is the idea behind mpcobject.Weight.ECR?

9 visualizzazioni (ultimi 30 giorni)
Say you have an arbitrary mpc object from the MPC Toolbox.
It has the following property: mpcobject.Weight.ECR which is set to 1*10^5 by default. On the MATLAB documentation page (see: https://de.mathworks.com/help/mpc/ug/specifying-constraints.html#buj077i ) it says that it is an "overall constraint softening parameter of the controller (controller object property: Weights.ECR) to penalize a tolerable soft constraint violation relative to the other cost function terms".
However, I dont understand what that means. I've already specified ECR values for their respective OV/MV's.
How can a single ECR value be used to penalize a soft constraint violation relative to multiple cost function terms?
What happens when I just leave it at 1*10^5? Does this effectively change the resulting ECR value of each OV/MV's?
What happens when I set it to 0 or 1?
Thanks in advance :)

Risposta accettata

Sarthak
Sarthak il 29 Mag 2024
Hi Benidikt,
After going through the documentation, I think the ECR value in the MPC object serves as a global softening parameter for all constraints. Using the overall constraint softening parameter of the controller (controller object property: Weights.ECR), you can penalize a tolerable soft constraint violation relative to the other cost function terms.
If you leave `mpcobject.Weight.ECR` at its default value of 1*10^5, it means that you're allowing a certain level of constraint violation, with a relatively high penalty for this violation. This doesn't change the individual ECR values of each OV/MV, but it does affect the overall constraint softening.
If you set `mpcobject.Weight.ECR` to 0, it means that you're not allowing any constraint violation. In this case, the MPC will treat all constraints as hard constraints, and it will not allow any violation.
If you set `mpcobject.Weight.ECR` to 1, it means that you're allowing constraint violation with a relatively low penalty giving average softness. It might also result in a better overall control performance.
I think the tips section in the documentation explains all this very well:
Adjusting this value can help in finding a balance between strictly adhering to constraints and optimizing the performance criterion of the MPC controller. Remember, the choice of ECR values (both individual and overall) depends on your specific control requirements and the trade-off you're willing to make between constraint violation and control performance.
  1 Commento
Benedikt Schmidt
Benedikt Schmidt il 29 Mag 2024
I mostly agree with your answer. By sheer trial and error I have also concluded, that the greater Weight.ECR the greater the 'punishment' for any kind of soft constraint violation.
However, it is not correct that Weight.ECR=0 means that all soft constraints become hard constraints. It's just not possible to set it 0. Matlab throws an error when you try to set it to 0.
So, in short for anybody else wondering: The greater the value of Weight.ECR, the less constraint violation is allowed. I believe that the value one specifies in Weight.ECR is the value that is used for the constraint violation term in the standard cost function, see: https://de.mathworks.com/help/mpc/ug/optimization-problem.html . There it is denoted as rho_epsilon (Constraint violation penalty weight).

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by