主要内容

利用并行计算提高优化性能

此示例展示如何使用并行计算工具箱™提高优化性能。该示例讨论了使用并行计算优化复杂的Simulink®模型时看到的加速。金宝app算例还说明了参数个数和模型仿真时间对并行计算的影响。

需要并行计算工具箱™

举例说明优化加速

使用Simulink Design Optimization™时,主要的计算负金宝app荷是模型的仿真。优化方法通常需要每次优化迭代进行大量的模拟。由于许多模拟是独立的,因此使用并行计算将这些独立的模拟分布到不同的处理器上是有益的。

考虑HL20飞机的Simu金宝applink模型,该模型随Aerospace Blockset™一起提供。HL20模型是一个复杂的模型,包括机械、电气、航空电子设备和环境组件。HL20模型的典型模拟大约需要60秒。

在降落过程中,飞机受到来自不同方向的两股阵风的影响,导致飞机偏离跑道上的标称轨迹。金宝appSimulink Design Optimization用于调整控制器的3个参数,使飞机在阵风存在时偏离标称轨迹的横向偏差保持在5米以内。

优化在双核64bit AMD®,2.4GHz, 3.4GB Linux®和四核64bit AMD, 2.5GHz, 7.4GB Linux机器上使用并行计算和不使用并行计算都可以执行。在这个问题中观察到的速度如下所示。

HL20示例说明了使用并行计算时的潜在加速。下一节将讨论其他优化问题的预期加速。

什么时候优化能从并行计算中获益?

上一节展示了在优化过程中分布模拟可以减少总优化时间。本节量化预期的加速。

一般来说,以下因素可以表明并行计算会导致更快的优化:

  • 有大量的参数需要优化

  • 正在使用模式搜索方法

  • 一个复杂的Simul金宝appink模型,需要很长时间来模拟

  • 模型中存在大量不确定参数

下面几节将逐一讨论这些问题。

参数数量及其对并行计算的影响

优化方法所执行的模拟次数与参数的数量密切相关。

梯度下降法与并行计算

考虑基于梯度的优化方法在每次迭代中所需的模拟:

  • 对当前解点进行仿真

  • 模拟计算目标相对于优化参数的梯度

  • 一旦计算出梯度,模拟评估目标沿着梯度的方向(所谓的直线搜索评估)

在这些模拟中,计算梯度所需的模拟是独立的,并且是分布的。让我们更仔细地看看:

Np = 1:16;%参数数量(16 = 4个经过过滤的PID控制器)Nls = 1;行搜索模拟的百分比,目前假设为1Nss = 1;串行模拟的总数%,仅从名义开始

梯度是用中心差来计算的。每个参数有2个模拟,并包括行搜索模拟,以给出每次迭代的模拟总数:

Nss = 1+Np*2+Nls;

如上所述,关于每个参数的梯度计算可以分布或并行运行。这减少了在使用并行计算时连续运行的模拟总数,如下所示:

Nw = 4;%并行处理器数Nps = 1 + ceil(Np/Nw)*2+Nls;

Nss/Nps的比值给出了我们所画的加速图

Nls = 0:5;改变行搜索模拟的次数图;hAx = gca;xlim ([min (Np)马克斯(Np)]);ct = 1:元素个数(Nls)射频= (1 + Nls (ct) + Np * 2)。/ (1 + Nls (ct) +装天花板(Np / Nw) * 2);hLine = line(“父”hAx,“xdata”、Np、“ydata”、Rf);如果ct == 1 hLine。线型=“- - -”;线。Color = [0 0 1];线。LineWidth = 1;其他的线。线型=“-”。;线。Color = [0.6 0.6 1];线。LineWidth = 1;结束结束网格标题(“基于相对加速的梯度下降”)包含(参数数量) ylabel (“串行时间/并行时间”)注释(“箭头”,[0.55 .55],[5/6 2/6])文本(8.5,1.75,“越来越多的在线搜索”

该图显示,随着参数的增加,相对加速效果会更好。上面的实线是没有直线搜索模拟的最佳加速,而较浅的虚线曲线增加了直线搜索模拟的数量。

该图还显示了在4、8、12、16个参数处的局部最大值,这对应于参数梯度计算可以均匀分布在并行处理器之间的情况。回想一下,对于HL20飞机问题,它有3个参数,观察到的四核处理器加速为2.14,与该图很匹配。

模式搜索方法与并行计算

模式搜索优化方法天生就适合并行实现。这是因为在每次迭代中都有一组或两组候选解决方案可用。金宝搏官方网站该算法评估所有这些候选解,然后为下一次迭代生成一个新的候选解。金宝搏官方网站候选解决方案的评估可以并行进行,因为它们是独立的。金宝搏官方网站让我们更仔细地看看:

模式搜索使用两个候选解决方案集,即搜索集和投票集。这些集合中的元素数量与优化参数的数量成正比

Nsearch = 15*Np;解决方案集中的默认元素数量Npoll = 2*Np;%使用2N轮询方法的轮询集中的元素数量

每次迭代的模拟总数是搜索集和轮询集中候选解的数量之和。金宝搏官方网站在分配候选解集时,模拟结果均匀地分布在并行处理器之间。因此,在发布后连续运行的模拟数量减少为:

Nps = ceil(Nsearch/Nw)+ceil(Npoll/Nw);

在不使用并行计算的情况下评估候选解决方案时,一旦发现比当前解金宝搏官方网站决方案更好的候选解决方案,迭代就会立即终止。在没有其他信息的情况下,最好的办法是对大约一半的候选解决方案进行评估。金宝搏官方网站串行模拟的次数为:

Nss = 0.5*(Nsearch+Npoll);

还要注意,搜索集只在前两个优化迭代中使用,之后只使用轮询集。在这两种情况下,Nss/Nps比值给出了我们在下面绘制的加速图。

图;hAx = gca;xlim ([min (Np)马克斯(Np)]);Rp1 = (Nss)。/(Nps);Rp2 = (Npoll)。/(ceil(Npoll/Nw));线(“父”hAx,“xdata”、Np、“ydata”一国,“颜色”,[0 0 1]);线(“父”hAx,“xdata”、Np、“ydata”Rp2,“颜色”,[0.6 0.6 1]);网格标题(“基于相对加速的模式搜索”)包含(参数数量) ylabel (“串行时间/并行时间”)传说(“搜索和投票集”“仅限投票”

深色曲线是计算解和轮询集时的加速,较浅的较低曲线是只计算轮询集时的加速。优化的预期加速应该位于这两条曲线之间。注意,即使只有一个参数,模式搜索方法也受益于分布。还记得,对于HL20飞机问题,它有3个参数,观察到的四核心加速为2.81,与此图很匹配。

分配优化的开销

在前面的章节中,我们忽略了与并行执行优化相关的开销。包含此开销可以显示将受益于分布式优化的模拟的复杂性。

与并行运行优化相关的开销主要来自两个来源:

  • 打开并行池

  • 加载Simulink模型金宝app并在模型上执行更新图

在远程处理器之间传输数据也会产生一些开销。金宝appSimulink Design Optimization依赖共享路径为远程处理器提供对模型的访问,返回的数据仅限于目标值和约束违反值。因此,这个开销通常比打开MATLAB®池并加载模型要小得多。这对于HL20飞机的优化是正确的,但并非在所有情况下都是正确的。但是,可以扩展下面所示的分析以涵盖额外的开销。

finoverhead = false;%设置为true可计算系统的开销。如果findOverhead%计算开销。wState = warning(“关闭”“MATLAB:调度员:pathWarning”);T0 =日期时间(“现在”);%当前时间parpool%打开并行池load_system (“airframe_demo”打开一个模型set_param (“airframe_demo”“SimulationCommand”“更新”运行模型的更新图Toverhead =日期时间(“现在”) t0;%时间头顶=秒数(头顶)%换算成秒close_system (“airframe_demo”删除(gcp)%关闭并行池警告(wState);其他的%从实验中观察到的使用开销。头顶= 28.6418;结束

让我们考虑一个基于梯度的算法,每次迭代的串行模拟次数如下:

Nw = 4;% 4个并行处理器Np = 4;% 4个参数优化Nls = 2;假设2行搜索模拟Nss = 1+Np*2+Nls;没有并行计算的串行模拟Nps = 1+ceil(Np/Nw)*2+Nls;采用并行计算的串行模拟

加速现在计算为包括开销在内的总并行时间与总串行时间的比率。对于最坏情况分析,假设优化在一次迭代后终止,得到:

镍= 1;Ts = 10:10:60;%模拟模型一次的时间Tst = Niter*Nss*Ts;%总序列优化时间Tpt = Niter*Nps*Ts+Toverhead;%总的并行优化时间图;hAx = gca;xlim ([min (Ts)马克斯(Ts)]);Rp = (Tst)。/(Tpt);线(“父”hAx,“xdata”Ts,“ydata”Rp,“颜色”,[0 0 1]);镍= 2^1:4;ct = 1:数值(Niter) Rp = (Niter(ct)* Nss*Ts)./(Niter(ct)*Nps*Ts+Toverhead);线(“父”hAx,“xdata”Ts,“ydata”Rp,“颜色”,[0.6 0.6 1]);结束网格标题(并行开销对优化加速的影响)包含(“是时候模拟一次模型了”) ylabel (“串行时间/并行时间”)注释(“箭头”,[0.55 0.55],[0.45 0.85]);文本(38,2.05,“不断增加迭代次数”

较低的深色曲线表示假设一次迭代时的加速,而较浅的上方曲线表示最多16次迭代时的加速。

对于基于模式搜索的优化也可以执行类似的分析。经验表明,运行时间超过40秒的复杂模拟的优化通常受益于并行优化。

不确定参数及其对并行优化的影响

当使用Simulink金宝app Design Optimization时,您可以改变一些参数(比如弹簧刚度),并在这些变化面前优化参数。不确定参数定义了需要在每次迭代中评估的附加模拟。但是,从概念上讲,您可以将这些附加的模拟看作是没有不确定参数的模拟的扩展。这意味着无论在哪里执行一个模拟,现在都执行多个模拟。结果表明,不确定参数不会影响无开销优化加速,前面几节的计算是有效的。

在我们考虑开销的情况下,不确定参数具有增加仿真时间和减少与创建并行优化相关的开销的效果。要了解这一点,请考虑以下问题

Nu = [0 10];%不确定场景的个数Nss = (1+Nu)*(1+Np*2+Nls);没有并行计算的串行模拟Nps = (1+Nu)*(1+ceil(Np/Nw)*2+Nls);采用并行计算的串行模拟图;hAx = gca;xlim ([min (Ts)马克斯(Ts)]);ct = 1:元素个数(ν)Rp = (Ts * Nss (ct))。/ (Ts * Nps (ct) + Toverhead);线(“父”hAx,“xdata”Ts,“ydata”Rp,“颜色”,[0 0 1]);结束网格标题(不确定参数对优化加速的影响)包含(“是时候模拟一次模型了”) ylabel (“串行时间/并行时间”)注释(“箭头”,[0.45 0.45],[0.4 0.9])文本(31,2.05,“越来越多的不确定变量”

底部曲线是没有不确定参数的情况,而顶部曲线是有不确定参数的情况,可以取10个不同的值。