如果 MV 是一个自由度,有没有办法强制优化器至少移动一定量或根本不移动它?

If an MV is a degree of freedom, is there a way to force the optimizer to move it at least a certain amount or not at all?

在 MPC 应用程序中,有时优化器会决定在 0-100% 的可能范围内将阀门移动 0.2%。我希望优化器仅在阀门超过某个阈值(比如 5%)时才移动阀门,而不是移动非常少量的阀门(除了增加阀门的移动之外并没有真正贡献那么多)。因此,只有当优化器移动阀门 >= 5% 时,它才会决定移动阀门。

DMAXDMAXHIDMAXLO可以规定你可以移动多少变量,但不要阻止无关紧要的移动。始终可以选择裁剪优化器的输出,但如果优化器可以将其纳入其预测中,那将更加理想。

因为这是一个实时应用程序,解决方案不能包含会减慢解决方案时间的二进制整数变量。

一种可能的方法是使用分层方法,重复解决问题并修复没有明显移动的 MV 的值:

  1. 解决优化问题并确定哪些 MV 已移动但不足以超出无关紧要的阈值
  2. 关闭这些 MV 的状态并将它们修复为之前的值
  3. 重新解决问题,然后检查是否有任何其他移动的 MV 已移动但不足以显着

您可以根据拥有的 MV 数量和解决优化问题所需的时间,重复此循环任意多次。根据您需要解决它的频率,这种方法可能是一种可行的策略,并且可能比使用 MINLP 求解器更快。