主要内容

如何使用并行处理全局优化工具箱

多核处理器

如果您有一个多核处理器,您可以通过使用并行处理来提高处理速度。您可以使用parallel Computing Toolbox™许可证建立多个工作者的并行池。有关并行计算工具箱软件的说明,请参见开始使用并行计算工具箱(并行计算工具箱)

假设您有一个双核处理器,并希望使用并行计算。在命令行输入此代码。

parpool

MATLAB®使用多核处理器启动工作池。如果您以前设置了一个非默认的集群配置文件,那么您可以通过输入此代码强制执行多核(本地)计算。

parpool (“本地”

请注意

根据您的喜好,MATLAB可以自动启动并行池。要启用此功能,请选择并行>并行首选项环境集团在首页选项卡,然后选择自动创建并行池

将求解器设置为使用并行处理。

解算器 命令行设置
遗传算法

options = optimoptions('ga','UseParallel', true, 'UseVectorized', false);

gamultiobj

options = optimoptions('gamultiobj','UseParallel', true, 'UseVectorized', false);

MultiStart

ms = MultiStart('UseParallel', true);

ms.UseParallel = true

paretosearch

选择= optimoptions(‘paretosearch’,‘UseParallel’,真的);

particleswarm

options = optimoptions('particleswarm', 'UseParallel', true, 'UseVectorized', false);

patternsearch

options = optimoptions('patternsearch','UseParallel', true, 'UseCompletePoll', true, 'UseVectorized', false);

surrogateopt

选择= optimoptions(‘surrogateopt’,‘UseParallel’,真的);

从R2019a开始,当您设置UseParallel选项真正的patternsearch内部覆盖UseCompletePoll设置为真正的所以函数是并行轮询的。

当你运行一个适用的求解器选项,适用的求解器自动使用并行计算。

若要停止并行计算优化,请设置UseParallel.要停止所有并行计算,请输入此代码。

删除(gcp)

请注意

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

网络处理器

如果网络上有多个处理器,请使用并行计算工具箱函数和MATLAB并行服务器™建立并行计算的软件。

确保您的系统为并行计算正确配置。与系统管理员联系,或参考“并行计算工具箱”文档。

  1. 通过输入以下代码执行基本检查教授是您的集群配置文件。

    parpool(教授)
  2. 工作人员必须能够访问您的目标函数文件,如果适用的话,还必须能够访问您的非线性约束函数文件。完成以下步骤中的一个以确保访问权限:

    • 将文件分发给使用parpool(并行计算工具箱)AttachedFiles论点。在这个例子中,objfun.m是你的目标函数文件,和constrfun.m是您的非线性约束函数文件。

      parpool (“AttachedFiles”,{“objfun.m”“constrfun.m”});

      工作人员可以访问自己的文件副本。

    • 为你的目标或约束函数文件提供一个网络文件路径。

      pctRunOnAll(“目录network_file_path”)

      工作人员通过网络访问函数文件。

  3. 检查每个worker的路径上是否有文件。

    pctRunOnAll (',文件名”)
    如果任何一个worker没有文件的路径,它就会报告
    文件名没有找到。

将求解器设置为使用并行处理。

解算器 命令行设置
遗传算法

options = optimoptions('ga','UseParallel', true, 'UseVectorized', false);

gamultiobj

options = optimoptions('gamultiobj','UseParallel', true, 'UseVectorized', false);

MultiStart

ms = MultiStart('UseParallel', true);

ms.UseParallel = true

paretosearch

选择= optimoptions(‘paretosearch’,‘UseParallel’,真的);

particleswarm

options = optimoptions('particleswarm', 'UseParallel', true, 'UseVectorized', false);

patternsearch

options = optimoptions('patternsearch','UseParallel', true, 'UseCompletePoll', true, 'UseVectorized', false);

surrogateopt

选择= optimoptions(‘surrogateopt’,‘UseParallel’,真的);

从R2019a开始,当您设置UseParallel选项真正的patternsearch内部覆盖UseCompletePoll设置为真正的所以函数是并行轮询的。

建立了并行计算环境后,应用求解器将自动使用并行计算选项

若要停止并行计算优化,请设置UseParallel.要停止所有并行计算,请输入此代码。

删除(gcp)

请注意

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

并行搜索函数或混合函数

有一个patternsearch搜索函数并行运行,或者为混合函数遗传算法simulannealbnd并行运行,执行以下操作。

  1. 中描述的设置并行处理多核处理器网络处理器

  2. 确保您的搜索函数或混合函数具有以下部分所概述的条件:

patternsearch搜索功能

patternsearch在下列情况下使用并行搜索函数:

  • UseCompleteSearch真正的

  • 搜索方法不是@searchneldermead自定义

  • 如果搜索方法为patternsearch投票法或拉丁超立方搜索,UseParallel真正的.在命令行中设置optimoptions

    选择= optimoptions (“patternsearch”“UseParallel”,真的,...“UseCompleteSearch”,真的,“SearchFcn”, @GPSPositiveBasis2N);
  • 如果搜索方法为遗传算法,搜索方法选项有UseParallel设置为真正的.在命令行中设置optimoptions

    iterlim = 1;%迭代限制,指定# ga运行gaopt = optimoptions (“遗传算法”“UseParallel”,真正的);选择= optimoptions (“patternsearch”“SearchFcn”...{@searchga, iterlim, gaopt});

有关搜索选项的更多信息,请参见搜索选项.示例请参见搜索和调查

并联混合动力功能

遗传算法particleswarm,simulannealbnd可以在它们的迭代之后运行其他求解器或在迭代中穿插其他求解器。这些其他的求解器称为混合函数。有关使用混合函数的信息gamultiobj,请参阅用gamultiobj进行并行计算.这两个patternsearch而且fmincon可以是混合函数。你可以设置选项patternsearch并行运行,或者fmincon并行估计梯度。

设置混合功能的选项,请参见混合功能选项遗传算法混合函数particleswarm,或混合功能选项simulannealbnd.总结:

  • 如果杂化函数是patternsearch

    1. 创建patternsearch选项:

      hybridopts = optimoptions (“patternsearch”“UseParallel”,真的,...“UseCompletePoll”,真正的);
    2. 设置遗传算法simulannealbnd选择使用patternsearch作为混合函数:

      选择= optimoptions (“遗传算法”“UseParallel”,真正的);%的遗传算法选择= optimoptions (“遗传算法”选项,...“HybridFcn”, {@patternsearch, hybridopts});%或,表示simulannealbnd:选择= optimoptions (@simulannealbnd,“HybridFcn”, {@patternsearch, hybridopts});

    有关并行的更多信息patternsearch,请参阅模式搜索

  • 如果杂化函数是fmincon

    1. 创建fmincon选项:

      hybridopts = optimoptions (@fmincon,“UseParallel”,真的,...“算法”“内点”);您可以使用除信任区域反射以外的任何算法。
    2. 设置遗传算法simulannealbnd选择使用fmincon作为混合函数:

      选择= optimoptions (“遗传算法”“UseParallel”,真正的);选择= optimoptions (“遗传算法”选项,“HybridFcn”, {@fmincon, hybridopts});%或,表示simulannealbnd:选择= optimoptions (@simulannealbnd,“HybridFcn”, {@fmincon, hybridopts});

    有关并行的更多信息fmincon,请参阅并行计算

测试并行优化

按照以下步骤测试您的问题是否能够正确地并行运行。

  1. 在没有并行计算的情况下尝试你的问题,以确保它串行运行。在进行下一个测试之前,请确保此测试成功(给出正确的结果)。

  2. UseParallel真正的,并通过输入确保不存在并行池删除(gcp).要确保MATLAB不会创建并行池,请选择并行>并行首选项环境集团在首页Tab,然后清除自动创建并行池.你的问题是parfor以反向顺序进行循环迭代循环。在进行下一个测试之前,请确保此测试成功(给出正确的结果)。

  3. UseParallel真正的,并使用parpool.除非您有多核处理器或网络设置,否则此测试不会提高处理速度。这个测试只是为了验证计算的正确性。

记住用函数调用求解器选项参数来测试或使用并行功能。

相关的话题

Baidu
map