openmdao Простой драйвер Генетического Алгоритма не работает - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть физический модуль, который принимает 14 входов и производит 6 выходов - 1 в целевой функции (пригодность), а остальные - ограничения (штраф).Физический модуль немного сложен, но я нашел решения, которые удовлетворяют моим требованиям с помощью независимого случайного блуждания.Но когда я запускаю то же самое с Simple GA на Openmdao, я не получаю оптимального и не кажется, что штрафные функции (ограничения) работают.В результате даже не получается набор данных, близкий к тому, что было произведено случайным блужданием.Я пытался варьировать численность населения от 140 до 2000, параметр штрафа от 1 до 20, показатель штрафа от 1-2,5, Pm от 0,02 до 0,08.ПК был сохранен 0,5.Я позволил коду работать более 2000 поколений, но оптимизация, похоже, не работает.Я также создал простую модель с 6 входами, одним ограничением и одной целевой функцией, тогда ограничения также не были выполнены.Пожалуйста, предложите решение.Не удается оптимизировать ту же физическую модель с драйвером COBYLA.

РЕДАКТИРОВАТЬ - 1:

Я подключил следующую реализацию OpenMDAO с запущенным физическим модулем.

ТакжеКогда я говорю, что драйверу COBYLA не удается «оптимизировать», это означает, что каждый раз, когда я запускаю оптимизацию с разными исходными проектными переменными, я получаю немного другой результат.Оптимальное должно быть одинаковым каждый раз.Это из-за математической формулировки COBYLA?

С GA я обнаружил, что средняя приспособленность населения действительно эффективно (хотя и незначительно) увеличивается в течение эффективного периода времени.Но это не останавливает.Я имею в виду, что оптимизатор работает более 80 часов.

С SLSQP оптимизатор завершает работу после первой итерации.Я уменьшил значение допуска до 1e-40, тогда оно также не выходит за рамки первой итерации.Тем не менее, COBYLA смогла предоставить мне выполнимые планы, такие же, как эксперименты со случайным блужданием.

...