Если MV — это степень свободы, есть ли способ заставить оптимизатор переместить его хотя бы на определенную величину или вообще не перемещать?

#gekko

#gekko

Вопрос:

В приложении MPC иногда оптимизатор принимает решение о перемещении клапана на 0,2% по возможному масштабу 0-100%. Вместо того, чтобы перемещать клапаны на очень малую величину (что на самом деле не так много способствует, кроме добавления движения к клапанам) Я бы хотел, чтобы оптимизатор перемещал клапан только в том случае, если он превысит определенный порог (скажем, 5%). Итак, только если оптимизатор переместит клапан> = 5%, он примет решение переместить клапан.

DMAX , DMAXHI , и DMAXLO может предписать, на сколько вы можете перемещать переменную, но не предотвращать незначительные движения. Всегда есть возможность обрезать выходные данные оптимизатора, но было бы более идеальным, если бы оптимизатор мог учесть это в своем прогнозе.

Поскольку это приложение реального времени, решение не может содержать двоичные целочисленные переменные, которые замедлили бы время решения.

Комментарии:

1. Похоже, что это было бы ценной функцией MPC в случае заедания клапана ( en.wikipedia.org/wiki/Stiction ), где вы можете командовать определенным движением клапана, но он перемещается только после того, как изменение превысит определенный порог. Вы пытаетесь смоделировать залипание клапана или это потому, что оператор хочет больше периодов бездействия? Коэффициенты подавления перемещения находятся в приложениях MPC, таких как DMC и GEKKO, но это неправильное решение, гарантирующее минимальный порог, который вы упомянули.

Ответ №1:

Одним из возможных методов является использование иерархического подхода, при котором вы повторно решаете проблему и фиксируете значение MV, которые не перемещаются заметно:

  1. Решите проблему оптимизации и определите, какие MV переместились, но недостаточно, чтобы оказаться за порогом незначимости
  2. Отключите статус для этих MV и зафиксируйте их на прежних значениях
  3. Повторно решите проблему, а затем проверьте наличие любых дополнительных MV, которые переместились, но недостаточно, чтобы быть значительными

Вы можете повторять этот цикл столько раз, сколько захотите, в зависимости от количества MV, которые у вас есть, и времени, необходимого для решения вашей задачи оптимизации. В зависимости от того, как часто вам нужно его решать, этот подход может быть жизнеспособной стратегией и, вероятно, будет быстрее, чем использование решателя MINLP.