GlobalSearch
和多头
有类似的方法来寻找全局或多个极小。这两种算法启动本地求解器(如fmincon
)从多个起点。该算法使用多个起点来采样多个吸引点。有关更多信息,请参见盆地的吸引力。
GlobalSearch和MultiStart算法概述包含的草图GlobalSearch
和多头
算法。
GlobalSearch和MultiStart算法概述
之间的主要区别GlobalSearch
和多头
是:
GlobalSearch
用来生成启动点分散搜索机制。多头
用途均匀地边界内,或者用户提供的起始点内分布的起始点。
GlobalSearch
分析开始点和拒绝那些不太可能改善当地最好的最低点,找到为止。多头
运行所有开始点(或,任选地,是相对于界限或不等式约束可行所有开始点)。
多头
给予当地求解器的选择:fmincon
,fminunc
,lsqcurvefit
, 要么lsqnonlin
。该GlobalSearch
算法使用fmincon
。
多头
可以并行运行,分配起点,为当地解决多个处理器。跑步多头
同时,看到如何在全局优化工具箱中使用并行处理。
这些求解器对象之间的差异归结为以下决定:
采用GlobalSearch
在单个处理器最有效地找到一个单一的全球最低。
采用多头
至:
查找多个局部极小。
并行运行。
使用比其他求解fmincon
。
彻底搜索全局最小。
探索你自己的起点。
对于该算法的说明,请参见Ugray等。[1]。
当你跑
一个GlobalSearch
对象,该算法执行以下步骤:
GlobalSearch
运行fmincon
从一开始你就屈服了问题
结构。如果这个运行是收敛的,GlobalSearch
记录了对引力的盆地的半径的初始估计的开始点和结束点。此外,GlobalSearch
中使用的最终目标函数值得分了功能(见获得第1阶段起点,运行)。
得分函数是在一个点的目标函数值和约束违规的总和的倍数的总和。因此,一个可行点有分数等于它的目标函数值。对违反约束的多重最初是1000。GlobalSearch
更新在运行过程中多个。
GlobalSearch
采用了分散搜索算法生成一组NumTrialPoints
试验分。试验点是潜在的起点。有关散点搜索算法的描述,请参见Glover[2]。GlobalSearch
您设置任何有限的范围内产生审分(磅
和UB
)。无界组件已人工边界罚款:lb = -1e4 + 1
,ub = 1e4 + 1
。使原产地是不是在分散搜索这个范围是不是关于原点对称。与单面边界部件已经人工边界施加在无界侧,通过有限范围转移到保持磅<乌兰巴托
。
GlobalSearch
计算一组的分数函数NumStageOnePoints
试验分。然后,它需要用最好的成绩,并运行点fmincon
从这一点。GlobalSearch
删除组NumStageOnePoints
从点的列表审判点检查。
该localSolverThreshold
最初是在溶液点在两个目标函数值小。该解决方案点是fmincon
万博 尤文图斯从开始的解决方案X0
从第一阶段的起点。如果这两个解决方案要点不存在或不可行,localSolverThreshold
最初阶段1开始点的罚函数值。
该GlobalSearch
启发式的假设是,引力的盆地是球形的。吸引力的盆的初始估计,用于从溶液点X0
和从阶段1中的溶液点是球在溶液点居中。每个球体的半径是从初始点到溶液点的距离。这些估计的盆可以重叠。
有两组与算法相关的计数器。每个计数器是连续试验点的数量:
躺在一个有吸引力的盆地里。每个盆都有一个柜台。
评分功能大于localSolverThreshold
。对于分数的定义,请参阅从X0运行fmincon。
所有计数器最初是0。
GlobalSearch
反复检查从列表中剩余的试验点,并执行以下步骤。它持续监控时间,如果时间超过停止搜索MaxTime
秒。
调用测试点p
。跑fmincon
从p
如果满足以下条件成立:
p
是不是在任何现有的盆地。每一个盆地的标准一世
是:
| P - 中心(我)|> DistanceThresholdFactor *半径(i)中。
DistanceThresholdFactor
是一个选项(默认值0.75
)。
半径
是否有更新的估计半径更新盆地半径和阈值和对大的计数器值做出反应。
得分了(p
)<localSolverThreshold
。
(可选的)p
满足约束和/或不等式限制。如果设置了,会出现此测试StartPointsToRun
财产的GlobalSearch
反对“界限”
要么“越界ineqs”
。
重置计数器
设置盆地和阈值计数器为0。
更新解集
如果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
算法修改GlobalOptimSolution
的xq
通过添加p
到的单元阵列X0
点。
有一个小调整,可以发生在此更新。如果用于出口标志xq
大于1
,并为出口标志xp
是1
, 然后xp
内容替换xq
。这种替换可能会导致在同一流域的一些点被超过的距离XTolerance
从xp
。
更新盆地半径和阈值
如果当前的出口标志fmincon
运行是肯定的:
设置阈值为起点处的得分值p
。
对于集水池半径xp
等于最大现有半径的(如果有的话)之间的距离p
和xp
。
迭代显示报告
当GlobalSearch
显示
属性是'ITER'
,每一点fmincon
创建运行在一条线GlobalSearch
迭代显示。
更新计数器
增量包含每个盆柜台p
。重置所有其他盆地的柜台0
。
增加阈值计数器如果分数(p
)> =localSolverThreshold
。否则,重置计数器0
。
对大的计数器值做出反应
对于计数器每个盆地等于MaxWaitCycle
通过乘以盆半径1
-BasinRadiusFactor
。重置计数器0
。(包括MaxWaitCycle
和BasinRadiusFactor
属性是否可设置GlobalSearch
宾语。)
如果阈值计数器等于MaxWaitCycle
,提高阈值:
新阈值=阈值+PenaltyThresholdFactor
*(1
+ ABS(阈值))。
重置计数器0
。
迭代显示报告
每200个试验点会在一条线GlobalSearch
迭代显示。
到达后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
对象如下:
排序目标函数值的本地解决方案(万博 尤文图斯FVAL
)从最低到最高。为了lsqnonlin
和lsqcurvefit
当地求解,目标函数是剩余的常态。
遍历本地解决方案万博 尤文图斯Ĵ
从最低(最好)开始FVAL
。
找到所有的解决方案万博 尤文图斯ķ
同时满足:
|Fval(k) - Fval(j)| <=功能公差*max(1,|Fval(j)|)
| X(k)的 - X(J)|<= XTolerance *最大(1,| X(j)|)
记录Ĵ
,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年。