Python Gekko использует стратегию одновременного решения, так что все блоки решаются вместе, а не последовательно. Следовательно, переменные разрыва не нужны, но большие проблемы технологической схемы с рециркуляцией могут быть трудными для сведения к реальному решению. Ниже приведены три метода, которые есть в Python Gekko, чтобы помочь в эффективных решениях и инициализации.
Метод 1. Промежуточные переменные
Промежуточные переменные полезны для уменьшения сложности модели. Во многих моделях временных переменных больше, чем обычных. Такое сокращение модели часто помогает решателю найти решение за счет уменьшения размера проблемы. Промежуточные переменные объявлены с m.Intermediates()
в Python Gekko. Промежуточные переменные могут быть определены в одном разделе или в нескольких объявлениях по всей модели. Промежуточные переменные анализируются последовательно сверху вниз. Чтобы избежать непреднамеренной перезаписи, промежуточную переменную можно определить один раз. В случае промежуточных переменных порядок объявления имеет решающее значение. Если промежуточное значение используется перед определением, ошибка сообщает, что существует неинициализированное значение. Вот дополнительная информация о промежуточных продуктах с примером проблемы.
Метод 2. Треугольное разложение нижнего блока
Для больших проблем, связанных с инициализацией, есть режим, который активируется опцией m.options.COLDSTART=2
. В этом режиме выполняется треугольная декомпозиция нижнего блока для автоматического определения независимых блоков, которые затем решаются независимо и последовательно.
Этот метод декомпозиции для инициализации обсуждается в докторской диссертации (глава 2) в Mostafa Safdarnejad или также в Safdarnejad, SM, Hedengren, JD, Lewis, NR, Haseltine, E., Стратегии инициализации для оптимизации динамических систем, компьютеров и химической инженерии, 2015, Vol. 78, стр. 39-50, DOI: 10.1016 / j.compchemeng.2015.04.016.
Метод 3. Автоматическое сокращение модели
Уменьшение модели требует больше времени на предварительную обработку, но может помочь значительно сократить время решателя. На m.options.REDUCE
имеется дополнительная документация.
Общая стратегия инициализации
Общая стратегия, которую мы используем для инициализации сложных проблем, таких как технологические схемы с повторным использованием, показана на этой блок-схеме.
Иногда это означает разрушение рециклов для получения инициализированного решения. В других случаях описанные выше стратегии инициализации работают хорошо, и перегруппировка модели не требуется. Преимущество работы со стратегией одновременного решения состоит в том, что степень свободы может быть изменена, например, переменные, расположенные ниже по потоку, могут быть фиксированными, а переменные выше по потоку могут быть рассчитаны для соответствия этому значению.
person
John Hedengren
schedule
30.10.2019