Параллельные вычисления - это метод использования нескольких процессоров по одной задаче. Причина использования параллельных вычислений - ускорение расчетов.
Следующие решатели Optimization Toolbox™ могут автоматически распределить числовую оценку градиентов целевых функций и нелинейных ограничительных функций нескольким процессорам:
fmincon
fminunc
fgoalattain
fminimax
fsolve
lsqcurvefit
lsqnonlin
Эти решатели используют параллельную оценку градиента при следующих условиях:
У вас есть лицензия на программное обеспечение Parallel Computing Toolbox™.
Опция SpecifyObjectiveGradient
установлено в false
или, если существует нелинейная функция ограничения, опция SpecifyConstraintGradient
установлено в false
. Начиная с false
является значением по умолчанию этих опций, вы не должны их устанавливать; просто не устанавливайте им обоим true
.
Параллельные вычисления включены parpool
, функцию Parallel Computing Toolbox.
Опция UseParallel
установлено в true
. Значение по умолчанию этой опции false
.
Когда эти условия удерживаются, решатели вычисляют предполагаемые градиенты параллельно.
Примечание
Даже при параллельном запуске решатель иногда вызывает функции объектива и нелинейных ограничений последовательно на главной машине. Поэтому убедитесь, что ваши функции не имеют никаких предположений о том, оцениваются ли они последовательно или параллельно.
Одна стандартная подпрограмма решателя может вычисляться параллельно автоматически: стандартная подпрограмма, которая оценивает градиент целевой функции и ограничительных функций. Это вычисление включает вычисление значений функций в точках около текущей x местоположения. По существу, вычисление является
где
f представляет целевые или ограничительные функции
ei являются векторами единичного направления
.R. i - размер шага в ei направлении
Чтобы оценить <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) параллельно, решатели Optimization Toolbox распределяют оценку (f (x + Δ <reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3>) - f (<reservedrangesplaceholder1>))/Δ i к дополнительным процессорам.
Можно выбрать, чтобы градиенты оценивались центральными конечными различиями вместо стандартных прямых конечных различий. Основная центральная конечная формула различия является
Это занимает вдвое больше вычислений функции, чем прямых конечных различий, но обычно намного точнее. Центральные конечные различия работают параллельно точно так же, как и прямые конечные различия.
Включите центральные конечные различия при помощи optimoptions
для установки FiniteDifferenceType
опция для 'central'
. Чтобы использовать прямые конечные различия, задайте FiniteDifferenceType
опция для 'forward'
.
Решатели используют функцию Parallel Computing Toolbox parfor
(Parallel Computing Toolbox) для выполнения параллельной оценки градиентов. parfor
не работает параллельно при вызове из другого parfor
цикл. Поэтому вы не можете одновременно использовать параллельную оценку градиента и параллельную функциональность в своих целевых или ограничительных функциях.
Примечание
Документация рекомендует не использовать parfor
или parfeval
при вызове Simulink®; см. Использование функции sim в parfor (Simulink). Поэтому вы можете столкнуться с проблемами при оптимизации параллельной симуляции Simulink с помощью встроенной параллельной функциональности решателя.
Допустим, например, ваша целевая функция userfcn
вызовы parfor
, и вы хотите позвонить fmincon
в цикле. Предположим также, что условия для параллельной градиентной оценки fmincon
, как указано в Parallel Optimization Functivality, удовлетворены. Когда Parfor Run In Parallel показывает три случая:
Самый внешний цикл parfor
. Только этот цикл проходит параллельно.
Наиболее удаленное parfor
цикл находится в fmincon
. Только fmincon
проходит параллельно.
Наиболее удаленное parfor
цикл находится в userfcn
. userfcn
может использовать parfor
параллельно.
Когда parfor запускается параллельно
Повышение эффективности при параллельных вычислениях | Минимизация дорогостоящей задачи оптимизации с помощью Parallel Computing Toolbox™ | Использование параллельных вычислений в Optimization Toolbox