Как использовать свой собственный метод решения в GEKKO? - PullRequest
2 голосов
/ 11 апреля 2019

Я хочу использовать свой собственный генетический алгоритм (GA) для решения задачи со смешанными целыми числами:

https://mintoc.de/index.php/Batch_reactor

Могу ли я включить свой метод решения в GEKKO?

что-то вроде ...

m = GEKKO()
.
.
.

m.options.SOLVER = 'my_GA'

1 Ответ

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

GEKKO в настоящее время поддерживает только встроенные решатели на основе градиента. Если вы настроены на использование Генетического алгоритма ( Глава 6 для обзора GA ), вы можете запустить оценку функций с GEKKO, чтобы получить объективное значение при различных условиях испытания. Вам нужно будет помещать команду m.solve() внутри цикла каждое новое поколение GA. В GEKKO вам также нужно будет использовать m.options.TIME_SHIFT=0, чтобы не обновлять начальные условия. Это позволит проводить повторные оценки при изменении проектных переменных (например, T (t) из MintOC), чтобы найти наилучшее значение целевой функции (например, x2 (tf) из MintOC).

m = GEKKO()

# define model
x2 = m.Var()
T = m.Param()
.
.
.
m.options.TIME_SHIFT=0
m.options.IMODE = 4 # or 7
# GA loop
for i in range(generations):
    T.value = [values from GA]
    m.solve()
    obj = x2.value[-1] # objective

    # additional GA steps to decide new T values

Вот некоторая дополнительная информация из документации : SOLVER выбирает решатель, который будет использоваться при попытке найти решение. Существуют бесплатные решатели: 1: APOPT, 2: BPOPT, 3: IPOPT, распространяемые с общедоступной версией программного обеспечения. Существуют дополнительные решатели, которые не включены в публичную версию и требуют коммерческой лицензии. IPOPT, как правило, лучше всего подходит для задач с большим количеством степеней свободы или при запуске без хорошего начального предположения. BPOPT признан лучшим для приложений системной биологии. Обычно APOPT лучше всего подходит для теплого запуска из предыдущего решения или когда число степеней свободы (Число переменных - количество уравнений) меньше 2000. APOPT также является единственным решателем, который решает задачи со смешанными целыми числами. Используйте опцию 0, чтобы сравнить все доступные решатели.

...