主要内容

GlobalSearch MultiStart工作如何

的多个运行本地解决者

GlobalSearchMultiStart有类似的方法来寻找全局或多个极小值。两种算法建立一个当地解决(如fmincon从多个开始点)。算法使用多个开始点样本的多个盆地吸引力。有关更多信息,请参见盆地的吸引力

解算器对象之间的区别

GlobalSearch MultiStart算法概述包含一个草图GlobalSearchMultiStart算法。

GlobalSearch MultiStart算法概述

之间的主要差异GlobalSearchMultiStart是:

  • GlobalSearch使用scatter-search机制生成的开始点。MultiStart使用均匀分布开始点在允许范围内,或用户提供的开始点。

  • GlobalSearch分析开始点和拒绝那些点,不太可能改善当地最低发现迄今为止最好的。MultiStart运行所有开始点(可选地,开始点是可行的关于边界或不等式约束)。

  • MultiStart给出了选择本地解决:fmincon,fminunc,lsqcurvefit,或lsqnonlin。的GlobalSearch算法使用fmincon

  • MultiStart可以并行运行,分配开始为当地指向多个处理器的解决方案。运行MultiStart同时,看到如何使用并行处理在全球优化工具箱

决定使用哪个解算器

这些解算器对象之间的差异归结为以下决定使用哪一个:

  • 使用GlobalSearch找到一个单一的全球最小最有效地在一个处理器。

  • 使用MultiStart:

    • 发现多个局部最小值。

    • 并行地运行。

    • 使用以外的解决者fmincon

    • 彻底搜索全局最小值。

    • 探索自己的开始点。

GlobalSearch算法

算法的描述,请参阅Ugray et al。[1]

当你运行一个GlobalSearch对象,算法执行以下步骤:

从x0运行fmincon

GlobalSearch运行fmincon从一开始你给的问题结构。如果这个运行收敛,GlobalSearch记录的开始点和结束点的初始半径的估计一盆吸引力。此外,GlobalSearch记录最终的目标函数值的使用分数函数(见获得第一阶段起点,运行)。

得分函数之和的点和多个目标函数值的总和约束违反。所以一个可行点分数等于其目标函数值。约束违反最初1000多个。GlobalSearch更新多个在运行。

生成试验分

GlobalSearch使用分散搜索算法生成一组NumTrialPoints试验分。审判点是潜在的开始点。分散搜索算法的描述,请参阅[2]GlobalSearch在任何有限范围内设置生成试验(乌兰巴托)。无界组件人工边界实施:磅= 1 e4 + 1,乌兰巴托= 1 e4 + 1。这个范围是不对称的原点,原点不在分散搜索。组件与片面的界限人工边界对无界,转移的有限范围磅<乌兰巴托

获得第一阶段起点,运行

GlobalSearch评估一组的评分功能NumStageOnePoints试验分。然后需要点最好的分数和运行fmincon从这一点。GlobalSearch删除组NumStageOnePoints试验分从点检查列表。

初始化盆地,计数器阈值

localSolverThreshold最初的两个目标函数值越小点的解决方案。解决方案点fmincon金宝搏官方网站解决方案从x0从第一阶段开始点。如果这两个解决方案点不存在或不可行,localSolverThreshold最初的罚函数值阶段1起点。

GlobalSearch启发式的假设是,盆地的吸引力是球形。的初始估计盆地从吸引力的解决方案x0从阶段1和解决方案领域集中在解决点。每个球的半径是该解决方案的初始点的距离。这些估计流域可以重叠。

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

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

  • 得分函数大于吗localSolverThreshold。分数的定义,请参阅从x0运行fmincon

最初所有计数器都是0。

开始主循环

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

检查第二阶段试验看看fmincon运行

叫审判点p。运行fminconp如果下列条件:

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

    (我)| | p -中心> DistanceThresholdFactor *半径(i)。

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

    半径是一个半径估计更新更新盆地半径和阈值对大型计数器值

  • 评分(p)<localSolverThreshold

  • (可选)p满足约束和/或不等式约束。如果你把这个测试发生StartPointsToRun财产的GlobalSearch对象“界限”“bounds-ineqs”

fmincon运行时

  1. 重置计数器

    计数器对盆地和阈值设置为0。

  2. 更新解集

    如果fmincon从运行p,它可以产生积极的退出旗,这表明收敛。在这种情况下,GlobalSearch更新的向量GlobalOptimSolution对象。电话解决方案点xp和目标函数值《外交政策》。有两种情况:

    • 其他解决方案xq目标函数值fq,

      | xq - xp | > XTolerance *马克斯(xp | |)

      | fq - fp | > FunctionTolerance *马克斯(1 | fp |)

      在这种情况下,GlobalSearch创建一个新元素的向量GlobalOptimSolution对象。为每个对象中包含的细节信息,明白了GlobalOptimSolution

    • 一些其他的解决方案xq目标函数值fq,

      | xq - xp | < = XTolerance *马克斯(xp 1 | |)

      | fq - fp | < = FunctionTolerance *马克斯(1 | fp |)

      在这种情况下,GlobalSearch问候xp相当于xq。的GlobalSearch算法修改GlobalOptimSolutionxq通过添加p的单元阵列X0点。

      有一个小的调整,可以发生在此更新。如果出口标志xq大于1,退出旗xp1,然后xp替换xq。这替换可能会导致一些点在同一盆地是一个多的距离XTolerancexp

  3. 更新盆地半径和阈值

    如果当前的出口标志fmincon运行是积极的:

    1. 在开始点设置的阈值评分值p

    2. 盆地半径设置为xp等于现有的最大半径(如果有的话)和之间的距离pxp

  4. 向迭代报告显示

    GlobalSearch显示属性是“通路”每一个点,fmincon创建一个线运行GlobalSearch迭代显示。

当fmincon不运行

  1. 更新计数器

    增加计数器每盆地包含p。重置其他盆地的柜台0

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

  2. 对大型计数器值

    对于每个与计数器等于盆地MaxWaitCycle盆地半径乘以1- - - - - -BasinRadiusFactor。计数器重置为0。(包括MaxWaitCycleBasinRadiusFactor可设置的属性的吗GlobalSearch对象)。

    如果阈值计数器等于MaxWaitCycle增加阈值:

    新阈值阈值+ =PenaltyThresholdFactor* (1+ abs(阈值))。

    计数器重置为0

  3. 向迭代报告显示

    每200点创建一个行审判GlobalSearch迭代显示。

创建GlobalOptimSolution

在达到MaxTime秒或试用点,GlobalSearch创建一个向量的GlobalOptimSolution对象。GlobalSearch订单由目标函数值向量,从最低(最好)到最高(最差)。这总结了算法。

MultiStart算法

当你运行一个MultiStart对象,算法执行以下步骤:

验证输入

MultiStart检查输入参数的有效性。检查输入题包括当地解决运行一次。即使并行运行,MultiStart连续地执行这些检查。

生成开始点

如果你叫MultiStart与语法

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

为一个整数k,MultiStart生成k - 1如果你使用一个开始点完全一样RandomStartPointSet对象。该算法同时使用x0的起点问题结构,总共k开始点。

一个RandomStartPointSet对象存储在对象没有任何点。相反,MultiStart调用列表,生成随机点的范围内问题结构。如果存在一个无界的组件,列表使用人造的ArtificialBound财产的RandomStartPointSet对象。

如果你提供一个CustomStartPointSet对象,MultiStart不生成开始点,但使用的点对象。

过滤器开始点(可选)

如果你设置StartPointsToRun财产的MultiStart对象“界限”“bounds-ineqs”,MultiStart不运行当地解决不可行的开始点。在这种背景下,“不可行”意味着开始点不满足边界,或开始点不满足不等式约束和边界。

默认设置的StartPointsToRun“所有”。在这种情况下,MultiStart不抛弃不可行的开始点。

运行本地解算器

MultiStart运行中指定的地方解决problem.solver开始点通过StartPointsToRun过滤器。如果MultiStart并行运行,它发送开始指向职工处理器一次,和工人处理器运行本地解决者。

当地的解算器检查是否MaxTime秒的时间在每一个迭代。如果是这样,它退出迭代没有报告的解决方案。

在当地解决者停止,MultiStart存储结果,继续下一步。

迭代显示报告。MultiStart显示属性是“通路”每一个点,当地解决运行中的创建一个行MultiStart迭代显示。

检查停止条件

MultiStart停止运行时的开始点。它也停止当它超过总运行时间MaxTime秒。

创建GlobalOptimSolution对象

MultiStart达到停止条件,算法创建一个向量的GlobalOptimSolution对象如下:

  1. 根据目标函数值(当地的解决方案金宝搏官方网站进行排序Fval从低到高)。为lsqnonlinlsqcurvefit当地解决剩余的目标函数是一种常态。

  2. 循环在当地解决方案金宝搏官方网站j从最低的(最好的)Fval

  3. 找到所有的解决方案金宝搏官方网站k能够同时满足:

    | Fval (k) - Fval (j) | < = FunctionTolerance *马克斯(1 | Fval (j) |)

    | (k) - x (j) | < = XTolerance *马克斯(1 | x (j) |)

  4. 记录j,Fval (j),当地的解算器输出结构j和一个单元阵列的开始点j和所有的k。删除这些点k从列表中当地的解决方案。金宝搏官方网站这一点是向量中的一个条目GlobalOptimSolution对象。

的结果向量GlobalOptimSolution对象在order byFval,从最低(最好的)最高(最差)。

迭代显示报告。后考察当地所有的解决方案,金宝搏官方网站MultiStart给一个总结迭代显示。这个总结包括当地解决运行聚集的数量,数量没有收敛,错误的数量。

参考书目

[1]Ugray Zsolt, Leon Lasdon约翰·c·普卢默,弗雷德·格洛弗,詹姆斯•凯利和拉斐尔·马蒂。分散搜索和本地解决NLP: Multistart全局优化的框架。计算告诉杂志,19卷,3号,2007年,页328 - 340。

[2]格洛弗,f”模板为分散搜索和路径链接。”人工进化(j。,E。卢顿,E。罗纳德·M。Schoenauer D。Snyers, eds)。施普林格课堂讲稿在计算机科学,1363年,柏林/海德堡,1998,pp。13-54。

[3]迪克逊,l . g . p . Szego。“全局优化问题:介绍。”对全球优化2(迪克逊,l·c·w·g . p . Szego eds)。阿姆斯特丹,荷兰:北荷兰,1978年。

相关的话题