Adjusting Model Predictive Controller Response

Knowledge sharing need not be limited to one week conferences like the recent Emerson Exchange conference. I mention this to highlight an excellent discussion thread in Emerson Experts Forum in the Emerson Exchange 365 community. The thread, MPC [Model Predictive Control Penalties opens with this question:

What should I understand for “Penalty on Move” and “Penalty on Error”? Is there a way to calculate these?

Emerson’s Lou Heavner, whom you may recall from numerous advanced control-related posts responded:

Emerson's Lou Heavner

The Penalty on Move is calculated based on the dynamics of the problem and is usually a good first guess. The Penalty on Error is initially set to a default value of 1. They both work to improve the performance of the controller, especially in the face of imperfect models.

Increasing the POM of an MV will make the action of that MV less aggressive. If an MV seems to be cycling or moving to aggressively, then increase the POM. I find that it is best to make changes larger or smaller by a factor of 2. Occasionally the POM will be too large and the MV seems almost dead. In that case reduce the POM, always observe after making a change.

I have rarely seen the need to adjust the POE of a Process Output. My colleague and fellow contributor to this forum James Beall has seen some benefits with changing POE. It works on a single Process Output rather than an MV. Increasing the POE will make it try harder to reach its constraint target. Decreasing POE will allow it to give up more easily. Think in terms of relative importance and increase the POE on variables that are not achieving the control objective and reduce it on those that are not as important such as level in a surge tank. For Process Outputs that are not being optimized, it doesn’t make much sense to me to worry about it.

Before MPC Plus, POM and POE required a download to change. In MPC Plus they can be modified on-line.

Let me know if this is not what you were seeking.

Seeing the thread, Emerson’s James Beall, also highlighted here on the blog numerous times, added [hyperlinks inserted by Jim]:

James Beall Principal Process Control Consultant

James Beall
Principal Process Control Consultant

Books On Line (BOL) [Foundation Support account required] has some good information on the topics of Penalty on Move (POM) and Penalty on Error (POE). See the topic “Tailoring MPC Control Performance”. Note that you can install BOL on your non-DeltaV computer for easy access. The actual calculation that is used in Predict or PredictPro to calculate the “default” POM is PMi = 3(1+DTi/20+ Gi*DTi/40)


DTi is the deadtime/module execution period (in MPC scans) for Mvi -> Cvi relation

Gi – gain (no units) for Mvi ->Cvi relation

However, this is a slider bar in the Predict or PredictPro “controller generation” step that you can move from Performance (lowest POM’s) to Robust (highest POM’s). I usually check the extremes of the POM’s from this setting to get a feel for my own changes to POM’s. Note that you have to be in the “Expert” mode to change the POM’s or POE’s.

As Lou says, I use POE in a range of 0.8 – 1.2 to put more emphasis on getting a control or constraint variable to its target setpoint. I have found that a maximum POE of about 0.5 seems to work well on integrating variables. There are a few cases where I want to a SLOWLY optimize an MV but I want it to be able to move the MV fast for to obtain other CV and LV targets. In this case, I create a “shadow” CV for the MV, and put a small (e.g. 0.1) POE but a leave the POM low.

Hope this helps!

I’m betting it not only helps the person asking the question, but many others wondering how to make adjustments to the response of their model predictive controller. If you’d like to join in the knowledge sharing with your peers, make sure to stop by the Emerson Exchange 365 community, login or create an account, and join the groups of interest to you.

Update: In a subsequent post, James added:

Let me add a bit more about my statement “I use POE in a range of 0.8 – 1.2 to put more emphasis on getting a control or constraint variable to its target setpoint. ” Think of POE as a multiplier on the error between the SP and PV of a CV or LV in the MPC. A higher POE (e.g. 1.2) would create more aggressive MV action by the MPC to get the PV to the SP. Conversely, a lower POE (e.g. 0.8) would create less aggressive MV action by the MPC to get the PV to SP. So, use a POE of 1.2 when you want tighter control to SP and 0.8 when you want less aggressiveness.


Leave a Reply