Когда вы вызываете 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