什么是并行计算优化工具箱?
并行优化功能
并行计算是在一个问题上使用多个处理器的技术。使用并行计算的原因是为了加快计算速度。
以下优化工具箱™求解器可以自动将目标函数和非线性约束函数的梯度的数值估计分布到多个处理器:
fmincon
fminunc
fgoalattain
fminimax
fsolve
lsqcurvefit
lsqnonlin
这些解算器在以下条件下使用并行梯度估计:
您拥有并行计算工具箱™软件的许可证。
的选项
SpecifyObjectiveGradient
设置为假
,如果存在非线性约束函数,则为选项SpecifyConstraintGradient
设置为假
.自假
是这些选项的默认值,您不必设置它们;只是不要把它们都设置为真正的
.启用并行计算
parpool
,一个并行计算工具箱功能。的选项
UseParallel
设置为真正的
.该选项的默认值为假
.
当这些条件成立时,求解器并行计算估计的梯度。
请注意
即使并行运行,解算器偶尔也会在主机上连续调用目标函数和非线性约束函数。因此,确保您的函数没有关于它们是串行求值还是并行求值的假设。
梯度的并行估计
一个求解子程序可以自动并行计算:估计目标函数和约束函数的梯度的子程序。这个计算涉及到计算当前位置附近点的函数值x.本质上,计算是
在哪里
f表示目标函数或约束函数
e我是单位方向向量吗
Δ我大小是一阶的吗e我方向
估计∇f(x)并行地,优化工具箱求解器分布的计算(f(x+Δ我e我) - - -f(x)) /Δ我到额外的处理器。
平行中心差异
你可以选择用中心有限差分来估计梯度,而不是默认的正向有限差分。基本的中心有限差分公式为
这需要两倍于正向有限差分的函数计算,但通常更准确。中心有限差分和正向有限差分是平行工作的。
启用中心有限差分optimoptions
设置FiniteDifferenceType
选项“中央”
.若要使用正向有限差分,请设置FiniteDifferenceType
选项“前进”
.
嵌套并行函数
求解器使用并行计算工具箱功能parfor
(并行计算工具箱)执行梯度的并行估计。parfor
当从另一个内部调用时,不并行工作parfor
循环。因此,不能在目标函数或约束函数中同时使用并行梯度估计和并行函数。
请注意
文档建议不要使用parfor
或parfeval
当调用Simulink时金宝app®;看到在parfor中使用sim函数(金宝app模型).因此,在使用求解器的内置并行功能并行优化Simulink仿真时,可能会遇到问题。金宝app
举个例子,假设你的目标函数userfcn
调用parfor
,你想打电话来fmincon
在一个循环中。也假定了并行梯度求值的条件fmincon
,载于并行优化功能,都很满意。当parfor并行运行时展示了三种情况:
最外层的环是
parfor
.只有那个循环是并行运行的。最外层的
parfor
循环在fmincon
.只有fmincon
并行运行。最外层的
parfor
循环在userfcn
.userfcn
可以使用parfor
并行执行。
当parfor并行运行时