Как вы выбираете для вычисления частичных с помощью присоединенного метода? - PullRequest
0 голосов
/ 23 апреля 2020

Есть ли указанная опция c? Вы можете выбрать прямой или обратный режим? Разве это не имеет значения, поскольку под капотом openMDAO вычисляет производные по унифицированному методу?

1 Ответ

1 голос
/ 23 апреля 2020

Когда вы вызываете Problem.setup, вы можете включить аргумент mode, который является одним из `fwd ',' rev 'или' auto '.

Обратите внимание, что выбор вперед или назад (присоединенный ) производные влияют на то, как всего производных (те, которые нужны оптимизаторам и решателям) вычисляются из частных производных (тех, которые предоставляются компонентами). Это не влияет на то, как частные производные предоставляются в методах compute_partials или linearize.

Выбор правильного режима может существенно повлиять на производительность, и в большинстве случаев «auto» определит правильный режим на основе количества проектных переменных и количества ограничений + цель.

Проблемы с множеством ограничений и небольшим количеством переменных проектирования (много строк, мало столбцов в общем якобиане) обычно будут намного быстрее в прямом режиме.

Те, у кого мало ограничений, но много переменных проектирования (мало строк, много столбцы) будет значительно быстрее в обратном направлении.

Продвинутые двунаправленные производные

OpenMDAO также попытается выяснить самый быстрый способ вычисления итогов путем «раскраски» общего якобиана , Аналогия в том, что в случае конечных разностей иногда вы можете возмущать несколько проектных переменных одновременно, чтобы ускорить вычисление якобиана, предполагая, что эти переменные не вносят вклад в одни и те же ограничения / цель.

Традиционно, если у всего якобиана был плотный столбец, то он не может быть эффективно окрашен в обратном режиме (множественные ограничения «воздействуют» на одну и ту же переменную дизайна).

Аналогично, плотный ряд убил бы эффективность окрашивания Якобиан в прямом режиме.

Однако OpenMDAO может выяснить, какие производные могут эффективно окрашиваться в прямом режиме, а какие можно окрашивать в обратном, используя оба подхода для заполнения общего якобиана.

Вы можете прочитать подробнее об этой возможности здесь: http://openmdao.org/twodocs/versions/3.0.0/features/core_features/working_with_derivatives/simul_derivs.html

...