Openmdao 1.x: эффективный способ реализации ожидаемого улучшения

В настоящее время я использую Openmdao 1.7.1. Я пытаюсь, чтобы МетаМодель с Кригингом тренировалась в наилучшей точке ожидаемого улучшения. Цель состоит в том, чтобы найти глобальный оптимум в компактном пространстве дизайна с помощью метода, подобного EGO.

Однако я столкнулся со следующей загадкой:

Чтобы найти лучшую точку, единственный способ, который я вижу, - это запустить оптимизацию функции ожидаемого улучшения с помощью оптимизатора градиентной базы во вложенной проблеме, с внешней проблемой, запускающей FixedPointIterator, проверяя значение ожидаемого улучшения. .

Мои вопросы следующие:

  • Есть ли другой, более эффективный способ сделать это? Я не смог найти ничего об EGO в Openmdao 1.x, если есть, то где искать?
  • If this is the only way:
    • Will this find the global optimum in my design space ?

Заранее благодарим вас за ответы.


person Meuoua    schedule 30.07.2016    source источник


Ответы (1)


Я думаю, что вы могли бы развивать ЭГО как самостоятельный драйвер. Драйвер будет отвечать за запуск базовой модели, сбор случаев, построение суррогата и выполнение собственной субоптимизации.

Для этого вы можете использовать суррогатные модели, встроенные в OpenMDAO. Вы просто не будете использовать компонент метамодели. Вы бы просто использовали суррогатную модель саму по себе. Пример того, как это сделать, см. в этом тесте. который запускает кригинг сам по себе.

Таким образом, 90% процесса ЭГО будет заключено в драйвере. Это позволяет избежать подзадачи и, я думаю, значительно упрощает код. Алгоритм EGO довольно прост, и его нетрудно запрограммировать в драйвере. Вы не выиграете много, используя вложенные задачи для его реализации. Но сделав его драйвером, вы все равно можете построить более сложную модель, которая будет управляться EGO.

person Justin Gray    schedule 30.07.2016