Optimization Toolbox 中的并行计算是什么?
并行优化功能
并行计算是使用多个处理器求解单个问题的技术。使用并行计算的原因是为了加快计算速度。
以下 Optimization Toolbox™ 求解器可以自动将目标函数和非线性约束函数的梯度估计分发到多个处理器:
fminconfminuncfgoalattainfminimaxfsolvelsqcurvefitlsqnonlin
这些求解器在以下条件下使用并行梯度计算:
您拥有 Parallel Computing Toolbox™ 软件的许可证。
选项
SpecifyObjectiveGradient设置为false,或者,如果存在非线性约束函数,则选项SpecifyConstraintGradient设置为false。由于false是这些选项的默认值,因此您不必设置它们;只是不要将它们都设置为true。通过
parpool和 Parallel Computing Toolbox 函数可以实现并行计算。选项
UseParallel设置为true。此选项的默认值为false。
当这些条件成立时,求解器并行计算估计梯度。
注意
即使并行运行,求解器偶尔也会在主机上串行调用目标和非线性约束函数。因此,请确保您的函数没有关于它们是串行还是并行评估的假设。
梯度的并行估计
一个求解器子程序可以自动并行计算:估计目标函数和约束函数梯度的子程序。该计算涉及计算当前位置 x 附近点的函数值。本质上,计算是
其中
f 表示目标函数或约束函数
ei 是单位方向向量
Δi 是 ei 方向一步的大小
为了并行估计 ∇f(x),Optimization Toolbox 求解器将 (f(x + Δiei) – f(x))/Δi 的评估分发给额外的处理器。
平行中心差异
您可以选择通过中心有限差分而不是默认的正向有限差分来估计梯度。基本中心有限差分公式为
这需要比正向有限差分多两倍的函数计算,但通常更为准确。中心有限差分的并行工作方式与正向有限差分完全相同。
通过使用 optimoptions 将 FiniteDifferenceType 选项设置为 'central' 来启用中心有限差分。要使用正向有限差分,请将 FiniteDifferenceType 选项设置为 'forward'。
嵌套并行函数
求解器采用 Parallel Computing Toolbox 函数 parfor (Parallel Computing Toolbox) 来执行梯度的并行估计。当从另一个 parfor 循环中调用时,parfor 不能并行工作。因此,您不能在目标或约束函数中同时使用并行梯度计算和并行功能。
注意
文档建议在调用 Simulink® 时不要使用 parfor 或 parfeval;请参阅Using sim Function Within parfor (Simulink)。因此,在使用求解器的内置并行功能并行优化 Simulink 仿真时,可能会遇到问题。有关如何使用多个 Global Optimization Toolbox 求解器优化 Simulink 模型的示例,请参阅并行优化 Simulink 模型 (Global Optimization Toolbox)。
例如,假设目标函数 userfcn 调用 parfor,而您希望在循环中调用 fmincon。还假设满足 并行优化功能 中给出的 fmincon 的并行梯度评估条件。当 parfor 并行运行时 显示三种情况:
最外层的循环是
parfor。仅该循环并行运行。最外层的
parfor循环在fmincon中。只有fmincon并行运行。最外层的
parfor循环在userfcn中。userfcn可以并行使用parfor。
当 parfor 并行运行时

另请参阅
在 Optimization Toolbox 中使用并行计算 | 利用并行计算提高性能 | 使用 Parallel Computing Toolbox 最小化高成本优化问题