并行计算是在一个问题上使用多个处理器的技术。使用并行计算的原因是为了加快计算速度。
以下优化工具箱™索盘可以自动将客观函数的梯度和非线性约束函数的数值估计分发给多个处理器:
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
当调用仿真软件金宝app®;看在parfor中使用sim功能(金宝app模型)。因此,在使用求解器的内置并行功能并行优化Simulink仿真时,可能会遇到问题。金宝app
例如,假设你的目标函数userfcn
调用parfor
,你想打电话fmincon
在循环中。还假设并行梯度评估的条件fmincon
,如并行优化功能,感到满意。当parfor并行运行时显示三种情况:
最外层的循环是parfor
。只有该循环并行运行。
最外层的parfor
循环在fmincon
。只有fmincon
并行运行。
最外层的parfor
循环在userfcn
。userfcn
可以使用parfor
并行执行。
当parfor并行运行时