主要内容

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

多核处理器

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

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

parpool

MATLAB®使用Multicore Processor开始一池工人。如果之前设置了非默认群集配置文件,则可以通过输入此代码来强制执行多核(本地)计算。

Parpool(“本地”

请注意

根据您的偏好,MATLAB可以自动启动并行池。要启用此功能,请选择Parallel >平行首选项在里面环境小组在首页选项卡,然后选择自动创建并行池

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

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

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

gamultiobj.

选项= Optimoptions('Gamultiobj','deveryPareliall',True,'undervectorized',false);

MultiStart

ms = multiStart('使用指调相',true);

或者

MS.USERPLASE =真实

paretosearch

选项= OptimOptions('paretosearch','deverpallellel',true);

particleswarm

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

PatternSearch.

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

surrogateopt

选项= Optimoptions('trangateptopt','deverpareliall',true);

从R2019A开始,当你设置的时候使用指α.选择真的PatternSearch.内部覆盖了UseCompletePoll设置为真的它是平行轮询的。

使用适用的求解器时选项,适用求解器自动使用并行计算。

停止并行计算优化,设置使用指α..要停止所有并行计算,请输入此代码。

删除(gcp)

请注意

文档建议不要使用parfor或者parfeval调用simulink时金宝app®;看在Parcol中使用SIM功能(金宝app模型).因此,在使用求解器的内置并行功能并行优化Simulink模拟时,可能会遇到问题。金宝app

处理器网络

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

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

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

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

    • 使用该文件将文件分发给工人parpool(并行计算工具箱)附加的文件论点。在这个例子中,objfun.m是您的客观函数文件,还有混乱是非线性约束函数文件。

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

      工作人员访问他们自己的文件副本。

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

      pctRunOnAll(“目录network_file_path.”)

      工作人员通过网络访问功能文件。

  3. 检查文件是否位于每个工人的路径上。

    pctRunOnAll (',文件名”)
    如果任何工人没有文件的路径,则会报告
    文件名没有找到。

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

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

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

gamultiobj.

选项= Optimoptions('Gamultiobj','deveryPareliall',True,'undervectorized',false);

MultiStart

ms = multiStart('使用指调相',true);

或者

MS.USERPLASE =真实

paretosearch

选项= OptimOptions('paretosearch','deverpallellel',true);

particleswarm

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

PatternSearch.

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

surrogateopt

选项= Optimoptions('trangateptopt','deverpareliall',true);

从R2019A开始,当你设置的时候使用指α.选择真的PatternSearch.内部覆盖了UseCompletePoll设置为真的它是平行轮询的。

建立并行计算环境后,可在您称之为时,适用的求解器自动使用并行计算选项

停止并行计算优化,设置使用指α..要停止所有并行计算,请输入此代码。

删除(gcp)

请注意

文档建议不要使用parfor或者parfeval调用Simulink时;金宝app看在Parcol中使用SIM功能(金宝app模型).因此,在使用求解器的内置并行功能并行优化Simulink模拟时,可能会遇到问题。金宝app

并行搜索函数或混合函数

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

  1. 按照中所述设置并行处理多核处理器或者处理器网络

  2. 确保你的搜索功能或混合功能具备以下部分列出的条件:

Patternsearch搜索功能

PatternSearch.在下列条件下使用并行搜索功能:

  • UseCompleteSearch真的

  • 而搜索方法则不然@searchneldermead.或者自定义

  • 如果搜索方法是一个PatternSearch.投票法或拉丁超立方体搜索法,使用指α.真的.在命令行中用optimoptions

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

    iterlim = 1;%迭代限制,指定# ga运行gaopt = Optimoptions('Ga'“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 ('Ga'“UseParallel”,真正的);GA的百分比选择= optimoptions ('Ga'选项,...'hybridfcn',{@ patternsearch,hybridopts});%或者,对于Simulannealbnd:选择= optimoptions (@simulannealbnd,'hybridfcn',{@ patternsearch,hybridopts});

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

  • 如果混合函数是fmincon

    1. 创建fmincon选项:

      hybridopts = optimoptions (@fmincon,“UseParallel”,真的,...'算法''内点');%您可以使用除信任区域反光之外的任何算法
    2. 设置遗传算法或者Simulannealbnd.使用选项fmincon作为一个混合函数:

      选择= optimoptions ('Ga'“UseParallel”,真正的);选择= optimoptions ('Ga'选项,'hybridfcn',{@ fmincon,杂交});%或者,对于Simulannealbnd:选择= optimoptions (@simulannealbnd,'hybridfcn',{@ fmincon,杂交});

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

测试并行优化

按照以下步骤测试您的问题是否正常运行。

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

  2. 使用指α.真的,并确保通过输入不存在并行池删除(gcp).要确保MATLAB不会创建并行池,请选择Parallel >平行首选项在里面环境小组在首页标签,然后清除自动创建并行池.你的问题是parfor连续地,循环迭代的顺序与a循环。在进行下一个测试之前,确保这个测试是成功的(给出正确的结果)。

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

请记得使用拨打您的求解器选项参数来测试或使用并行功能。

相关话题