如何GlobalSearch和多头工作

本地求解程序的多次运行

GlobalSearch多头有类似的方法来寻找全局或多个极小。这两种算法启动本地求解器(如fmincon)从多个起点。该算法使用多个起点来采样多个吸引点。有关更多信息,请参见盆地的吸引力

规划求解对象之间的差异

GlobalSearch和MultiStart算法概述包含的草图GlobalSearch多头算法。

GlobalSearch和MultiStart算法概述

之间的主要区别GlobalSearch多头是:

  • GlobalSearch用来生成启动点分散搜索机制。多头用途均匀地边界内,或者用户提供的起始点内分布的起始点。

  • GlobalSearch分析开始点和拒绝那些不太可能改善当地最好的最低点,找到为止。多头运行所有开始点(或,任选地,是相对于界限或不等式约束可行所有开始点)。

  • 多头给予当地求解器的选择:fminconfminunclsqcurvefit, 要么lsqnonlin。该GlobalSearch算法使用fmincon

  • 多头可以并行运行,分配起点,为当地解决多个处理器。跑步多头同时,看到如何在全局优化工具箱中使用并行处理

决定哪些规划求解使用

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

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

  • 采用多头至:

    • 查找多个局部极小。

    • 并行运行。

    • 使用比其他求解fmincon

    • 彻底搜索全局最小。

    • 探索你自己的起点。

GlobalSearch算法

对于该算法的说明,请参见Ugray等。[1]

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

从X0运行fmincon

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

得分函数是在一个点的目标函数值和约束违规的总和的倍数的总和。因此,一个可行点有分数等于它的目标函数值。对违反约束的多重最初是1000。GlobalSearch更新在运行过程中多个。

生成试验分

GlobalSearch采用了分散搜索算法生成一组NumTrialPoints试验分。试验点是潜在的起点。有关散点搜索算法的描述,请参见Glover[2]GlobalSearch您设置任何有限的范围内产生审分(UB)。无界组件已人工边界罚款:lb = -1e4 + 1ub = 1e4 + 1。使原产地是不是在分散搜索这个范围是不是关于原点对称。与单面边界部件已经人工边界施加在无界侧,通过有限范围转移到保持磅<乌兰巴托

获得第1阶段起点,运行

GlobalSearch计算一组的分数函数NumStageOnePoints试验分。然后,它需要用最好的成绩,并运行点fmincon从这一点。GlobalSearch删除组NumStageOnePoints从点的列表审判点检查。

初始化盆、计数器、阈值

localSolverThreshold最初是在溶液点在两个目标函数值小。该解决方案点是fmincon万博 尤文图斯从开始的解决方案X0从第一阶段的起点。如果这两个解决方案要点不存在或不可行,localSolverThreshold最初阶段1开始点的罚函数值。

GlobalSearch启发式的假设是,引力的盆地是球形的。吸引力的盆的初始估计,用于从溶液点X0和从阶段1中的溶液点是球在溶液点居中。每个球体的半径是从初始点到溶液点的距离。这些估计的盆可以重叠。

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

  • 躺在一个有吸引力的盆地里。每个盆都有一个柜台。

  • 评分功能大于localSolverThreshold。对于分数的定义,请参阅从X0运行fmincon

所有计数器最初是0。

开始主循环

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

检查阶段2试验以了解是否fmincon奔跑

调用测试点p。跑fminconp如果满足以下条件成立:

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

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

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

    半径是否有更新的估计半径更新盆地半径和阈值对大的计数器值做出反应

  • 得分了(p)<localSolverThreshold

  • (可选的)p满足约束和/或不等式限制。如果设置了,会出现此测试StartPointsToRun财产的GlobalSearch反对“界限”要么“越界ineqs”

fmincon运行时

  1. 重置计数器

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

  2. 更新解集

    如果fmincon从运行开始p,它可以产生一个正的出口标志,表示收敛。在这种情况下,GlobalSearch更新向量GlobalOptimSolution对象。调用解点xp和目标函数值FP。有两种情况:

    • 对于每一个其他的解决办法点xq具有目标函数值FQ

      | XQ - XP |> XTolerance *最大(1,| XP |)

      要么

      |fq - fp| >功能公差* max(1,|fp|)

      在这种情况下,GlobalSearch在创建的矢量的新元素GlobalOptimSolution对象。对于包含在每个对象中的信息的详细信息,请参阅GlobalOptimSolution

    • 对于其它解点xq具有目标函数值FQ

      | XQ - XP |<= XTolerance *最大(1,| XP |)

      | 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显示属性是'ITER',每一点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订单由目标函数值的向量,从最低(最好)至最高(最差)。这结束的算法。

多头算法

当你一个多头对象,该算法执行以下步骤:

验证输入

多头检查输入参数的有效性。检查包括对问题的投入运行的本地解算一次。即使在并行运行,多头连续执行这些检查。

生成开始点

如果你打电话多头与语法

[X,FVAL] =运行(毫秒,问题,k)的

一个整数ķ多头生成期k - 1开始完全一样,如果你使用一个点RandomStartPointSet宾语。该算法还使用X0起始点问题结构,共ķ启动点。

一个RandomStartPointSet对象没有存储在对象中的任何点。代替,多头电话名单的范围内生成随机点问题结构。如果无界组件存在,名单使用一个人工结合由给定的ArtificialBound财产的RandomStartPointSet宾语。

如果你提供了一个CustomStartPointSet宾语,多头不生成起始点,但使用对象中的点。

过滤器启动点(可选)

如果设置了StartPointsToRun财产的多头反对“界限”要么“越界ineqs”多头不运行从不可行起点当地的求解。在此背景下,“不可行”的手段开始不满足边界,或开始不满足这两个边界和不等式约束分点。

默认设置StartPointsToRun'所有'。在这种情况下,多头不丢弃不可行的起点。

运行本地解算器

多头运行在指定的地方求解problem.solver开始,即通过点StartPointsToRun过滤。如果多头在并行运行时,它发送在一个时间点开始到工人的处理器之一,而工人的处理器上运行的本地求解。

本地求解器检查是否MaxTime每一次迭代都要花费几秒钟的时间。如果是,它将退出该迭代,而不报告解决方案。

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

报告显示迭代。多头显示属性是'ITER',本地运行求解器的每一个点会在一条线多头迭代显示。

检查停止条件

多头当它用完起始点时停止。当超过总的运行时间时,它也会停止MaxTime秒。

创建GlobalOptimSolution对象

多头达到停止条件,该算法产生的向量GlobalOptimSolution对象如下:

  1. 排序目标函数值的本地解决方案(万博 尤文图斯FVAL)从最低到最高。为了lsqnonlinlsqcurvefit当地求解,目标函数是剩余的常态。

  2. 遍历本地解决方案万博 尤文图斯Ĵ从最低(最好)开始FVAL

  3. 找到所有的解决方案万博 尤文图斯ķ同时满足:

    |Fval(k) - Fval(j)| <=功能公差*max(1,|Fval(j)|)

    | X(k)的 - X(J)|<= XTolerance *最大(1,| X(j)|)

  4. 记录ĴFVAL(J),当地求解器产量结构Ĵ和一个单元格数组的起点Ĵ和所有的ķ。删除这些点ķ从本地解决方案列表中。万博 尤文图斯这个点是向量中的一个元素GlobalOptimSolution对象。

将所得的载体GlobalOptimSolution通过对象,以便FVAL,从最低(最好)至最高(最差)。

报告显示迭代。检查所有的本地解决方案之后,万博 尤文图斯多头给出了一个摘要与迭代显示。本摘要包括融合当地求解器运行的数目,那没有收敛多少,而且有错误的次数。

参考书目

[1] Ugray,泽索特,莱昂Lasdon,约翰C. Plummer表示,弗雷德·格洛弗,凯利和拉斐尔马蒂。分散搜索和本地NLP求解器:一个框架多重启动全局优化。INFORMS学报在计算,卷。19,第3号,2007年,第328-340。

[2]格洛弗,F.“一种用于分散搜索和路径重新链接模板”。人工进化(j。,E。卢顿,E。罗纳德·M。Schoenauer D。Snyers, eds)。计算机科学讲义,1363,施普林格,柏林/海德堡,1998,第13-54页。

[3]迪克森,L。和G. P.Szegö。“全球优化问题:一个介绍。”往全球性优化2(狄克逊L. C.W。和G. P.Szegö编)。荷兰阿姆斯特丹:北荷兰,1978年。

相关话题