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

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

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

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

1 Ответ

1 голос
/ 12 апреля 2019

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

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

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

...