GlobalSearch MultiStart工作如何
的多个运行本地解决者
GlobalSearch
和MultiStart
有类似的方法来寻找全局或多个极小值。两种算法建立一个当地解决(如fmincon
从多个开始点)。算法使用多个开始点样本的多个盆地吸引力。有关更多信息,请参见盆地的吸引力。
解算器对象之间的区别
GlobalSearch MultiStart算法概述包含一个草图GlobalSearch
和MultiStart
算法。
GlobalSearch MultiStart算法概述
之间的主要差异GlobalSearch
和MultiStart
是:
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
。运行fmincon
从p
如果下列条件:
fmincon运行时
重置计数器
计数器对盆地和阈值设置为0。
更新解集
如果
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
算法修改GlobalOptimSolution
的xq
通过添加p
的单元阵列X0
点。有一个小的调整,可以发生在此更新。如果出口标志
xq
大于1
,退出旗xp
是1
,然后xp
替换xq
。这替换可能会导致一些点在同一盆地是一个多的距离XTolerance
从xp
。
更新盆地半径和阈值
如果当前的出口标志
fmincon
运行是积极的:在开始点设置的阈值评分值
p
。盆地半径设置为
xp
等于现有的最大半径(如果有的话)和之间的距离p
和xp
。
向迭代报告显示
当
GlobalSearch
显示
属性是“通路”
每一个点,fmincon
创建一个线运行GlobalSearch
迭代显示。
当fmincon不运行
更新计数器
增加计数器每盆地包含
p
。重置其他盆地的柜台0
。增加阈值计数器如果分数(
p
)> =localSolverThreshold
。否则,重置计数器0
。对大型计数器值
对于每个与计数器等于盆地
MaxWaitCycle
盆地半径乘以1
- - - - - -BasinRadiusFactor
。计数器重置为0
。(包括MaxWaitCycle
和BasinRadiusFactor
可设置的属性的吗GlobalSearch
对象)。如果阈值计数器等于
MaxWaitCycle
增加阈值:新阈值阈值+ =
PenaltyThresholdFactor
* (1
+ abs(阈值))。计数器重置为
0
。向迭代报告显示
每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
对象如下:
根据目标函数值(当地的解决方案金宝搏官方网站进行排序
Fval
从低到高)。为lsqnonlin
和lsqcurvefit
当地解决剩余的目标函数是一种常态。循环在当地解决方案金宝搏官方网站
j
从最低的(最好的)Fval
。找到所有的解决方案金宝搏官方网站
k
能够同时满足:| Fval (k) - Fval (j) | < = FunctionTolerance *马克斯(1 | Fval (j) |)
| (k) - x (j) | < = XTolerance *马克斯(1 | x (j) |)
记录
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年。