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

多核处理器

如果您有多核处理器,可以使用并行处理提高处理速度。您可以使用并行计算工具箱™许可证建立一个平行池。有关并行计算工具箱软件的描述,请参阅开始使用并行计算工具箱(并行计算工具箱)

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

parpool.

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

Parpool('当地的'

笔记

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

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

求解器 命令行设置
GA.

选项= Optimoptions('Ga','使用指调整',true,'undervectorized',false);

gamultiobj.

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

多层的

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

或者

MS.USERPLASE =真实

帕累托研究

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

partminleswarm.

选项= Optimoptions('particlewarm','demantPareliall',true,'undervectorized',false);

Patternsearch.

选项= Optimoptions('patternsearch','deverseplelial',true,'useecompletepoll',true,'undervectorized',false);

代理人孔

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

从R2019A开始,当你设置的时候使用指α.选择真的Patternsearch.内部覆盖了USECOMPLETEPOLL.设置为真的所以它并行轮询。

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

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

删除(GCP)

笔记

文档建议不要使用议案或者Parfeval.调用simulink时万博1manbetx®;看在Parcol中使用SIM功能(万博1manbetxSimulink)。因此,您可能会在使用Solver内置并行功能并行优化Simulink仿真时遇到问题。万博1manbetx

处理器网络

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

确保您的系统配置正确以进行并行计算。请咨询系统管理员,或参阅并行计算工具箱文档。

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

    Parpool(教授)
  2. 工人必须能够访问您的客观函数文件,如果适用,则可以访问您的非线性约束函数文件。完成其中一个步骤以确保访问:

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

      Parpool('附加的文件',{'objfun.m''constrfun.m'});

      工人访问自己的文件副本。

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

      pctrunonall('addpathnetwork_file_path.')

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

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

    pctrunonall('哪一个文档名称')
    如果任何工人没有文件的路径,则会报告
    文档名称未找到。

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

求解器 命令行设置
GA.

选项= Optimoptions('Ga','使用指调整',true,'undervectorized',false);

gamultiobj.

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

多层的

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

或者

MS.USERPLASE =真实

帕累托研究

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

partminleswarm.

选项= Optimoptions('particlewarm','demantPareliall',true,'undervectorized',false);

Patternsearch.

选项= Optimoptions('patternsearch','deverseplelial',true,'useecompletepoll',true,'undervectorized',false);

代理人孔

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

从R2019A开始,当你设置的时候使用指α.选择真的Patternsearch.内部覆盖了USECOMPLETEPOLL.设置为真的所以它并行轮询。

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

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

删除(GCP)

笔记

文档建议不要使用议案或者Parfeval.调用Simulink时;万博1manbetx看在Parcol中使用SIM功能(万博1manbetxSimulink)。因此,您可能会在使用Solver内置并行功能并行优化Simulink仿真时遇到问题。万博1manbetx

并行搜索功能或混合函数

有一个Patternsearch.搜索函数并行运行或混合函数GA.或者Simulannealbnd.并行运行,执行以下操作。

  1. 设置如下所述的并行处理多核处理器或者处理器网络

  2. 确保您的搜索功能或混合函数具有以下部分中列出的条件:

Patternsearch搜索功能

Patternsearch.在以下条件下使用并行搜索功能:

  • USECOMPLESESEARCH.真的

  • 搜索方法不是@searchneldermead.或者风俗

  • 如果搜索方法是一个Patternsearch.民意调查方法或拉丁超级搜索,使用指α.真的。设置在命令行中优化选择

    选项= Optimoptions('patternsearch''使用指平行',真的,......'USECOMPLESESEARCH',真的,'searchfcn',@ gpspositivebasis2n);
  • 如果搜索方法是GA.,搜索方法选项具有使用指α.设置真的。设置在命令行中优化选择

    iterlim = 1;%迭代限制,指定#ga运行gaopt = Optimoptions('Ga''使用指平行',真的);选项= Optimoptions('patternsearch''searchfcn'......{@ searchga,iterlim,gaopt});

有关搜索选项的详细信息,请参阅搜索选项。例如,看到搜索和民意调查

并行混合函数

GA.partminleswarm., 和Simulannealbnd.可以有其他求解器在迭代之后或穿插着他们的迭代。这些其他求解器称为混合函数。有关使用混合函数的信息gamultiobj., 看与Gamultiobj并行计算。两个都Patternsearch.粉刺可以是混合函数。您可以设置选项Patternsearch.并行运行,或粉刺估计并行梯度。

如上所述,设置混合函数的选项混合函数选项为了GA.混合函数为了partminleswarm., 或者混合函数选项为了Simulannealbnd.。总结:

  • 如果您的混合函数是Patternsearch.

    1. 创建Patternsearch.选项:

      杂交= Optimoptions('patternsearch''使用指平行',真的,......'USECOMPLETEPOLL',真的);
    2. 设定GA.或者Simulannealbnd.使用选项Patternsearch.作为混合函数:

      选项= Optimoptions('Ga''使用指平行',真的);GA的百分比选项= Optimoptions('Ga',选项,......'hybridfcn',{@ patternsearch,hybridopts});%或者,对于Simulannealbnd:选项= Optimoptions(@simulannealbnd,'hybridfcn',{@ patternsearch,hybridopts});

    有关并行的更多信息Patternsearch., 看模式搜索

  • 如果您的混合函数是粉刺

    1. 创建粉刺选项:

      杂交= Optimoptions(@Fmincon,'使用指平行',真的,......'算法''内点');%您可以使用除信任区域反光之外的任何算法
    2. 设定GA.或者Simulannealbnd.使用选项粉刺作为混合函数:

      选项= Optimoptions('Ga''使用指平行',真的);选项= Optimoptions('Ga',选项,'hybridfcn',{@ fmincon,杂交});%或者,对于Simulannealbnd:选项= Optimoptions(@simulannealbnd,'hybridfcn',{@ fmincon,杂交});

    有关并行的更多信息粉刺, 看并行计算

测试并行优化

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

  1. 尝试在没有并行计算的情况下解决问题,以确保它串行运行。确保此测试成功(提供正确的结果),然后再进行下一个测试。

  2. 使用指α.真的,并确保通过输入不存在并行池删除(GCP)。要确保MATLAB不会创建并行池,请选择并行>并行偏好在里面环境小组在标签,然后清除自动创建并行池。你的问题运行议案串行,循环迭代以相反的顺序为了环形。确保此测试成功(提供正确的结果),然后再进行下一个测试。

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

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

相关话题