主要内容

什么是并行计算优化工具箱?

并行优化功能

并行计算是在一个问题上使用多个处理器的技术。使用并行计算的原因是为了加快计算速度。

以下优化工具箱™求解器可以自动将目标函数和非线性约束函数的梯度的数值估计分布到多个处理器:

  • fmincon

  • fminunc

  • fgoalattain

  • fminimax

  • fsolve

  • lsqcurvefit

  • lsqnonlin

这些解算器在以下条件下使用并行梯度估计:

  • 您拥有并行计算工具箱™软件的许可证。

  • 的选项SpecifyObjectiveGradient设置为,如果存在非线性约束函数,则为选项SpecifyConstraintGradient设置为.自是这些选项的默认值,您不必设置它们;只是不要把它们都设置为真正的

  • 启用并行计算parpool,一个并行计算工具箱功能。

  • 的选项UseParallel设置为真正的.该选项的默认值为

当这些条件成立时,求解器并行计算估计的梯度。

请注意

即使并行运行,解算器偶尔也会在主机上连续调用目标函数和非线性约束函数。因此,确保您的函数没有关于它们是串行求值还是并行求值的假设。

梯度的并行估计

一个求解子程序可以自动并行计算:估计目标函数和约束函数的梯度的子程序。这个计算涉及到计算当前位置附近点的函数值x.本质上,计算是

f x f x + Δ 1 e 1 f x Δ 1 f x + Δ 2 e 2 f x Δ 2 ... f x + Δ n e n f x Δ n

在哪里

  • f表示目标函数或约束函数

  • e是单位方向向量吗

  • Δ大小是一阶的吗e方向

估计fx并行地,优化工具箱求解器分布的计算fxe) - - -fx)) /Δ到额外的处理器。

平行中心差异

你可以选择用中心有限差分来估计梯度,而不是默认的正向有限差分。基本的中心有限差分公式为

f x f x + Δ 1 e 1 f x Δ 1 e 1 2 Δ 1 ... f x + Δ n e n f x Δ n e n 2 Δ n

这需要两倍于正向有限差分的函数计算,但通常更准确。中心有限差分和正向有限差分是平行工作的。

启用中心有限差分optimoptions设置FiniteDifferenceType选项“中央”.若要使用正向有限差分,请设置FiniteDifferenceType选项“前进”

嵌套并行函数

求解器使用并行计算工具箱功能parfor(并行计算工具箱)执行梯度的并行估计。parfor当从另一个内部调用时,不并行工作parfor循环。因此,不能在目标函数或约束函数中同时使用并行梯度估计和并行函数。

请注意

文档建议不要使用parforparfeval当调用Simulink时金宝app®;看到在parfor中使用sim函数(金宝app模型).因此,在使用求解器的内置并行功能并行优化Simulink仿真时,可能会遇到问题。金宝app

举个例子,假设你的目标函数userfcn调用parfor,你想打电话来fmincon在一个循环中。也假定了并行梯度求值的条件fmincon,载于并行优化功能,都很满意。当parfor并行运行时展示了三种情况:

  1. 最外层的环是parfor.只有那个循环是并行运行的。

  2. 最外层的parfor循环在fmincon.只有fmincon并行运行。

  3. 最外层的parfor循环在userfcnuserfcn可以使用parfor并行执行。

当parfor并行运行时

Parfor只能在最外层的循环中并行运行

另请参阅

||