Использование ExternalCodeComp в качестве единой концепции comp и OpenMDAO

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

Есть ли разница между реализацией с использованием оптимизатора, доступного в SciPy, и вышеупомянутой реализацией openmdao.

Или какая-либо разница между этим и реализацией аналогичного подхода на каком-либо другом языке, таком как набор инструментов оптимизации Matlab и т. Д.?

(Конечно, способ реализации оптимизаторов может отличаться, но я имею в виду концептуально, использую ли я преимущества OpenMDAO при таком подходе?)

Насколько я читал статьи; openMDAO эффективен в тех случаях, когда несколько компонентов «взаимодействуют» друг с другом и получаются «глобальные производные»? Использую ли я преимущества openMDAO, используя один ExternalCodeComp


person Zane    schedule 02.08.2018    source источник


Ответы (1)


Использование только одного ExternalCodeComp не позволит использовать весь потенциал OpenMDAO. Все равно будут некоторые преимущества, потому что ExternalCodeComp обрабатывает для вас множество деталей упаковки файлов. Кроме того, в оптимизации часто есть детали, такие как добавление ограничений, которые обычно требуют дополнительных компонентов. В этом случае вы можете использовать ExecComp. добавить несколько дополнительных вычислений. Наконец, использование OpenMDAO позволит вам в будущем расширить модель, включив в нее другие дисциплины.

Если вы уверены, что никогда не будете делать ничего, кроме оптимизации одного внешнего кода, тогда OpenMDAO действительно сокращается до функциональности, аналогичной использованию голых оптимизаторов pyoptsparse, scipy или matlab. В этом крайнем случае OpenMDAO не дает многого, кроме простоты использования ExternalCodeComp.

person Justin Gray    schedule 02.08.2018
comment
Спасибо. Я пытаюсь понять, какая формулировка полезна. Что, если я упаковал все внутрь Externalcodecomp? › 1 выход (предыдущее ограничение) Итак, вторая формулировка использует глобальный производный подход openmdao, но я не уверен, поможет ли он лучше сходиться? - person Zane; 02.08.2018
comment
Это может помочь ему немного лучше сходиться, потому что исполнительные вычисления используют сложный шаг для вычисления более точных производных. Ваш внешний код, скорее всего, будет конечно-разностным. Но, вероятно, это не будет иметь большого значения. Единственное исключение будет, если ваш внешний код на самом деле является неявным анализом с собственным решателем. Затем вы можете использовать ImplicitExternalCodeComp, и в этом случае FD будет немного более точным. - person Justin Gray; 04.08.2018