主要内容

Globalsearch如何工作

多次运行的本地求解器

Globalsearch.多层的有类似的方法来查找全局或多个最小值。这两种算法都开始了本地求解器(例如粉刺)来自多个起点。算法使用多个起始点来对吸引力的多个盆地进行样本。有关更多信息,请参阅吸引力盆地

求解器对象之间的差异

GlobalSearch和MultiStart算法概述包含一个草图Globalsearch.多层的算法。

GlobalSearch和MultiStart算法概述

主要差异Globalsearch.多层的是:

  • Globalsearch.使用分散搜索机制来生成起点。多层的在界限内使用均匀分布的起始点或用户提供的起始点。

  • Globalsearch.分析开始点并拒绝那些不太可能提高到目前为止发现最好的地方最低的点。多层的运行所有起始点(或,可选地,所有关于界限或不等式约束可行的所有启动点)。

  • 多层的提供当地求解器的选择:粉刺Fminunc.lsqcurvefit., 或者lsqnonlin.。这Globalsearch.算法使用粉刺

  • 多层的可以并行运行,分发起始点到本地解决方案的多个处理器。跑步多层的并行,见如何在全局优化工具箱中使用并行处理

决定使用哪种求解器

这些求解器对象之间的差异归结为以下哪些决定:

  • Globalsearch.在单个处理器上最有效地找到单个全局最小值。

  • 多层的到:

    • 找到多个本地最小值。

    • 并行运行。

    • 使用除此之外的求解器粉刺

    • 彻底搜索全局最小值。

    • 探索自己的起点。

Globalsearch算法

有关算法的描述,请参阅Ugray等。[1]

当你一种Globalsearch.对象,该算法执行以下步骤:

从x0运行fmincon

Globalsearch.粉刺从你发出的起点问题结构体。如果此运行会聚,Globalsearch.记录起点和终点,了解吸引力盆地半径的初始估计。此外,Globalsearch.记录最终的目标函数值以供分数功能(参见获得第1阶段开始点,运行)。

得分函数是目标函数值的总和,并违反约束违规之和的倍数。因此,可行点的得分等于其目标函数值。约束违规的倍数最初是1000。Globalsearch.更新运行期间的多个。

生成试验点

Globalsearch.使用分散搜索算法生成一组numtrialpoints.试验点。试验点是潜在的起点。有关分散搜索算法的描述,请参阅Glover[2]Globalsearch.在您设置的任何有限范围内生成试用点(UB.)。无限的组件具有施加人工界:lb = -1e4 + 1UB = 1E4 + 1。此范围对原点不对称,因此原点不在分散搜索中。单面界限的组件具有施加在无界侧的人工界限,由有限界移位以保持LB

获得第1阶段开始点,运行

Globalsearch.评估一组的分数函数numstageonepoints.试验点。然后它需要最佳分数和运行点粉刺从那时起。Globalsearch.删除一套numstageonepoints.试验点从其要检查的要点列表。

初始化盆地,计数器,阈值

Localsolverthreshold.最初是解决方案点的两个目标函数值的较小。解决方案点是粉刺金宝搏官方网站解决方案从X0.从第1阶段开始点。如果这些解决方案点都不存在或不可行,Localsolverthreshold.最初是阶段1开始点的惩罚函数值。

Globalsearch.启发式的假设是吸引力的盆地是球形的。初始估计解决方案点的吸引力盆地X0.并且来自第1阶段的解决方案点是在溶液点处的中心的球体。每个球体的半径是距初始点到解决方案点的距离。这些估计的盆地可以重叠。

有两组与算法相关的计数器。每个计数器是连续试验点的数量:

  • 躺在吸引力的盆地内。每个盆地都有一个计数器。

  • 得分函数大于Localsolverthreshold.。有关分数的定义,请参阅从x0运行fmincon

所有计数器最初是0。

开始主循环

Globalsearch.反复检查从列表中的剩余试验点,并执行以下步骤。它不断监视时间,如果经过时间超过,则停止搜索MaxTime.秒。

检查第2阶段试验点,看看Fmincon是否运行

打电话给试验点P.。跑粉刺P.如果以下条件持有:

  • P.不在任何现有盆地。每个盆的标准一世是:

    | P  -  Center(I)|>距离曲折折衷剂*半径(i)。

    distancethresholdfactor是一个选项(默认值0.75)。

    半径是一个更新的估计半径更新盆地半径和阈值对大计数器值作出反应

  • 分数(P.)<Localsolverthreshold.

  • (可选的)P.满足绑定和/或不等式约束。如果您设置了此测试,则会发生此测试startpointorun.财产的财产Globalsearch.反对'界限'或者'界限'

粉刺跑步时

  1. 重置计数器

    将盆和阈值设置为0的计数器。

  2. 更新解决方案集

    如果粉刺从开始开始P.,它可以产生正退出标志,表示会聚。在这种情况下,Globalsearch.更新矢量GlobalOptimsolution.对象。打电话给解决方案点XP.和目标函数值FP.。有两种情况:

    • 对于其他所有解决方案点XQ.有客观函数的价值FQ.

      | XQ - XP |> xtolerance * max(1,| xp |)

      或者

      | FQ - FP |>函数特定* max(1,| fp |)

      在这种情况下,Globalsearch.在矢量中创建一个新元素GlobalOptimsolution.对象。有关每个对象中包含的信息的详细信息,请参阅GlobalOptimsolution.

    • 对于其他一些解决方案点XQ.有客观函数的价值FQ.

      | XQ - XP |<= xtolerance * max(1,| xp |)

      | FQ - FP |<= functiontolerance * max(1,1 | fp |)

      在这种情况下,Globalsearch.问候XP.等同于XQ.。这Globalsearch.算法修改了GlobalOptimsolution.XQ.通过添加P.到细胞阵列X0.要点。

      此更新可能会发生一个小调整。如果出口标志XQ.大于1,和出口标志XP.1, 然后XP.替换XQ.。这种替代物可以导致同一盆中的一些点数超过一定距离Xtolerance.XP.

  3. 更新盆地半径和阈值

    如果出口标志的当前粉刺跑是积极的:

    1. 将阈值设置为起始点的分数值P.

    2. 设置盆地半径XP.等于现有半径(如果有)的最大值和之间的距离P.XP.

  4. 报告迭代显示

    当。。。的时候Globalsearch.展示属性是'iter',每一个点粉刺运行创建一行Globalsearch.迭代显示。

当粉刺不运行时

  1. 更新计数器

    为每个盆地增量计数器P.。重置每个其他盆地的柜台0.

    如果分数增加阈值计数器(P.)> =Localsolverthreshold.。否则,重置计数器0.

  2. 对大计数器值作出反应

    每个盆地,计数器等于maxwaitcycle.,乘以盆地半径1-basinradiusfactor.。重置计数器0.。(两个都maxwaitcycle.basinradiusfactor.是可设置的财产Globalsearch.目的。)

    如果阈值计数器等于maxwaitcycle.,增加阈值:

    新阈值=阈值+罚款ollestfactor*(1+ ABS(阈值))。

    重置计数器0.

  3. 报告迭代显示

    每200日的试验点都会在其中创造一行Globalsearch.迭代显示。

创建GlobalOptimsolution.

到达后MaxTime.秒或试验点耗尽,Globalsearch.创造一个矢量GlobalOptimsolution.对象。Globalsearch.通过目标函数值订购矢量,从最低(最佳)到最高(最差)。这是算法的结论。

多际轨道算法

当你一种多层的对象,该算法执行以下步骤:

验证输入

多层的检查有效性的输入参数。检查包括在问题输入上运行本地求解器。即使在并行运行时,多层的串行执行这些检查。

生成起点

如果你打电话多层的用语法

[x,fval] =运行(ms,问题,k)

对于整数K.多层的生成K - 1从你使用的那样开始点RandalStartPointSet.目的。该算法也使用了X0.从中开始点问题结构,总共K.起点。

一种RandalStartPointSet.对象没有存储在对象内的任何点。反而,多层的呼叫列表,它在所提供的范围内生成随机点问题结构体。如果存在无界组分,列表使用由此提供的人造束alitebound.财产的财产RandalStartPointSet.目的。

如果你提供了一个customstartpointset.目的,多层的不生成起点,但使用对象中的点。

过滤器开始点(可选)

如果你设置了startpointorun.财产的财产多层的反对'界限'或者'界限'多层的不会从不可行的起点运行本地求解器。在这种情况下,“不可行”是指不满足界限的起点,或者开始不满足界限和不等式约束的起点。

默认设置startpointorun.'全部'。在这种情况下,多层的不会丢弃不可行的起点。

运行本地求解器

多层的运行指定的本地解算器问题解决,从通过的点开始startpointorun.筛选。如果多层的运行并行,它一次向工作者发送开始点,而工人处理器运行本地解算器。

本地求解器检查是否MaxTime.每个迭代都经过秒数。如果是这样,它会退出迭代而不报告解决方案。

当地求解器停止时,多层的存储结果并继续下一步。

报告迭代显示。当。。。的时候多层的展示属性是'iter',当地求解器运行的每一条点都会在其中创建一行多层的迭代显示。

检查停止条件

多层的停止起始点时停止。它还停止超过总运行时间MaxTime.秒。

创建GlobalOptimSolution对象

多层的达到停止条件,该算法创建了一个向量GlobalOptimsolution.物体如下:

  1. 通过目标函数值对本地解决方案进金宝搏官方网站行排序(fval.)从最低到最高。为了lsqnonlin.lsqcurvefit.本地溶剂,目标函数是残留的规范。

  2. 循环在本地解决方案上金宝搏官方网站j从最低点开始(最好)fval.

  3. 找到所有的解决方案金宝搏官方网站K.满足:

    | FVAL(k) - fval(j)|<= functiontolerance * max(1,| fval(j)|)

    | x(k) - x(j)|<= xtolerance * max(1,| x(j)|)

  4. 记录jfval(j),本地求解器输出结构j,以及开始点的小区阵列j和所有的K.。删除这些要点K.从本地解决方案列表中。金宝搏官方网站这一点是矢量的一个条目GlobalOptimsolution.对象。

得到的矢量GlobalOptimsolution.对象是按顺序排列的fval.,从最低(最好)到最高(最差)。

报告迭代显示。检查所有本地解决方案后,金宝搏官方网站多层的给出迭代显示的摘要。本摘要包括融合的本地解算器的数量,该ock的融合器运行,无法收敛的数字以及具有错误的数字。

参考书目

[1] Ugray,Zsolt,Leon Lasdon,John C. Plummer,Fred Glover,James Kelly和RafaelMartí。分散搜索和本地NLP求解器:全球优化的多际框架。通知期刊计算,Vol。19,第3,2007,第328-340页。

[2] GLOVER,F。“分散搜索和路径重新链接的模板。”人工演化(J.-k. Hao,E.Lutton,E.Ronald,M.Schoenauer,D.Snyers,EDS。)。计算机科学讲义,1363,Springer,Berlin / Heidelberg,1998,PP。13-54。

[3] Dixon,L.和G.Szegö。“全球优化问题:介绍。”走向全球优化2(Dixon,L. C. W.和G.P.Szegö,EDS。)。阿姆斯特丹,荷兰:北荷兰,1978年。

相关话题