exponenta event banner

Что такое параллельные вычисления в инструменте оптимизации?

Функции параллельной оптимизации

Параллельные вычисления - это метод использования нескольких процессоров для одной задачи. Причиной использования параллельных вычислений является ускорение вычислений.

Следующие решатели Optimization Toolbox™ могут автоматически распределять численную оценку градиентов целевых функций и нелинейных функций ограничения по нескольким процессорам:

  • fmincon

  • fminunc

  • fgoalattain

  • fminimax

  • fsolve

  • lsqcurvefit

  • lsqnonlin

Эти решатели используют оценку параллельного градиента при следующих условиях:

  • У вас есть лицензия на программное обеспечение Parallel Computing Toolbox™.

  • Выбор SpecifyObjectiveGradient имеет значение falseили, если существует нелинейная функция ограничения, опция SpecifyConstraintGradient имеет значение false. С тех пор false является значением по умолчанию для этих опций, их не нужно задавать; только не устанавливайте для них обоих значение true.

  • Параллельные вычисления включены с помощью parpool, функция панели инструментов параллельных вычислений.

  • Выбор UseParallel имеет значение true. Значение по умолчанию для этого параметра: false.

Когда эти условия сохраняются, решатели вычисляют расчетные градиенты параллельно.

Примечание

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

Параллельная оценка градиентов

Одна подпрограмма решателя может вычисляться параллельно автоматически: подпрограмма, которая оценивает градиент целевой функции и функций ограничения. Этот расчет включает в себя вычисление значений функций в точках вблизи текущего местоположения x. По существу, расчет

∇f (x) ≈[f (x + Δ1e1) f (x) Δ1,f (x + Δ2e2) f (x) Δ2,...,f (x + Δnen) − f (x) Δn],

где

  • f представляет функции объектива или ограничения

  • ei - векторы единичного направления

  • Δi - размер шага в направлении ei;

Для параллельной оценки ∇f (x) решатели Optimization Toolbox распределяют оценку (f  (x + Δiei) - f (x) )/Δi на дополнительные процессоры.

Параллельные центральные различия

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

∇f (x) ≈[f (x + Δ1e1) f (x Δ1e1) 2Δ1,...,f (x + Δnen) − f (x − Δnen) 2Δn].

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

Включить центральные конечные различия с помощью optimoptions для установки FiniteDifferenceType опция для 'central'. Чтобы использовать прямые конечные различия, установите FiniteDifferenceType опция для 'forward'.

Вложенные параллельные функции

Решатели используют функцию Parallel Computing Toolbox parfor (Панель параллельных вычислений) для выполнения параллельной оценки градиентов. parfor не работает параллельно при вызове из другого parfor цикл. Поэтому нельзя одновременно использовать оценку параллельного градиента и параллельную функциональность в рамках целевой функции или функции ограничения.

Примечание

В документации рекомендуется не использовать parfor или parfeval при вызове Simulink ®; см. Использование sim-функции в parfor (Simulink). Поэтому при параллельной оптимизации моделирования Simulink с помощью встроенных функций параллельного решения могут возникнуть проблемы.

Предположим, например, ваша целевая функция userfcn требования parfor, и вы хотите позвонить fmincon в цикле. Предположим также, что условия для параллельной градиентной оценки fmincon, как указано в разделе Функции параллельной оптимизации, удовлетворяются. Если параметр Parfor Runs In Parallel показывает три случая:

  1. Самый внешний контур - parfor. Только этот цикл проходит параллельно.

  2. Наиболее удаленное parfor цикл находится в fmincon. Только fmincon выполняется параллельно.

  3. Наиболее удаленное parfor цикл находится в userfcn. userfcn может использовать parfor параллельно.

При параллельном выполнении Parfor

См. также

| |