GlobalSearch

发现全球最低

描述

一个GlobalSearch对象包含的属性(选项)影响如何运行重复运行本地求解程序以生成GlobalOptimSolution对象。当运行时,求解程序试图找到目标函数值最低的解决方案。

创建

描述

例子

gs = GlobalSearch创建gs,一个GlobalSearch将其属性设置为默认值的求解器。

例子

gs = GlobalSearch(名称、值)使用名称-值对设置属性。

例子

gs = GlobalSearch (oldGS、名称、值)的副本oldGSGlobalSearch使用名称-值对设置属性。

例子

gs = GlobalSearch(女士)创建gs,一个GlobalSearch解算器,从常见的属性值女士MultiStart解算器。

属性

全部展开

盆地半径减小系数,指定为标量0通过1。之后盆地半径减小MaxWaitCycle连续的起始点在盆地内。盆地半径减小了1倍BasinRadiusFactor

BasinRadiusFactor0禁用盆地半径的更新。

例:0.5

数据类型:

显示命令窗口的水平,指定为下面的字符向量或字符串之一:

  • '最后'-报告总结结果后运行完成。

  • “通路”-初步报告结果后fmincon运行,在阶段1之后,在每200个起始点之后,在每一次运行之后fmincon,除了最后的总结。

  • “关”- 无显示。

例:“通路”

数据类型:烧焦|字符串

用于确定试验点是否在现有引力池中的乘数,指定为非负的标量。有关详细信息,请参见检查阶段2的测试点,看看fmincon是否运行

例:0.5

数据类型:

考虑解相等时函数值的公差,指定为非负的标量。万博 尤文图斯求解者认为两个解是相同的万博 尤文图斯XTolerance彼此之间的相对距离和有目标的函数值FunctionTolerance彼此的相对差异。如果两个条件都不满足,求解者报告的解决方案是不同的。万博 尤文图斯集FunctionTolerance0获取每个本地求解器运行的结果。集FunctionTolerance值越大,得到的结果越少。为GlobalSearch详细信息,请参阅更新解集fmincon运行时。为MultiStart详细信息,请参阅创建GlobalOptimSolution对象

例:1的军医

数据类型:

GlobalSearch运行的最大时间(以秒为单位),指定为正标量。GlobalSearch和它的本地解决程序什么时候停止MAXTIME由于运行开始秒已经过去,如通过测量抽搐toc

MAXTIME在运行期间不中断本地解决程序,因此总时间可能超过MAXTIME

例:180当本地求解程序调用在180秒后首次结束时停止求解程序。

数据类型:

算法控制参数,指定为正整数。

  • 如果观测到的惩罚函数MaxWaitCycle连续试分至少是罚分阈值,然后提高罚分阈值(见PenaltyThresholdFactor)。

  • 如果MaxWaitCycle连续的试验点在一个盆地中,然后更新该盆地的半径(参见BasinRadiusFactor)。

例:40

数据类型:

阶段1点的数目,指定为正整数。有关详细信息,请参见获得阶段1的起始点,运行

例:1000

数据类型:

可能的起始点的数目,指定为正整数。

例:3E4

数据类型:

报告求解程序的进程或停止求解程序,指定为函数句柄或函数句柄的单元数组。输出函数在每个本地求解器调用后运行。它们还在全局解决程序开始和结束时运行。使用中描述的语法编写输出函数OutputFcn。看到GlobalSearch输出函数

数据类型:细胞|function_handle

增加惩罚阈值,指定为正的标量。有关详细信息,请参见对大的计数器值做出反应

例:0.4

数据类型:

绘图求解程序进程,指定为函数句柄或函数句柄的单元数组。Plot函数在每个本地求解程序调用后运行。它们还在全局解决程序开始和结束时运行。使用中描述的语法编写绘图函数OutputFcn

有两个内置的plot函数:

  • @gsplotbestf绘制最佳目标函数值。

  • @gsplotfunccount绘制函数计算的数量。

看到MultiStart情节功能

例:@gsplotbestf

数据类型:细胞|function_handle

要运行的起始点,指定为:

  • “所有”-运行所有的起点。

  • “界限”-只运行满足边界的起始点。

  • “bounds-ineqs”-只运行满足边界和不等式约束的起点。

GlobalSearch检查StartPointsToRun属性的第2阶段期间的GlobalSearch算法(主循环)。欲了解更多信息,请参阅GlobalSearch算法

例:“界限”只运行满足所有边界的点。

数据类型:烧焦|字符串

在距离为考虑解决办法宽容平等,指定为非标。万博 尤文图斯求解者认为两个解是相同的万博 尤文图斯XTolerance彼此之间的相对距离和有目标的函数值FunctionTolerance彼此的相对差异。如果两个条件都不满足,求解者报告的解决方案是不同的。万博 尤文图斯集XTolerance0获取每个本地求解器运行的结果。集XTolerance值越大,得到的结果越少。为GlobalSearch详细信息,请参阅更新解集fmincon运行时。为MultiStart详细信息,请参阅创建GlobalOptimSolution对象

例:图2e-4

数据类型:

对象的功能

运行 运行求解多启动

例子

全部折叠

创建一个具有多个局部极小值的优化问题,并尝试寻找全局极小值GlobalSearch。研究的目标是六峰骆驼背问题运行解算器)。

rng默认的%用于重现gs = GlobalSearch;6分钟= @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3+ x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4;问题= createOptimProblem ('fmincon',“x0”(1、2),“目标”sixmin,'磅',3,3,乌兰巴托的,[3,3]);X =运行(GS,问题)
GlobalSearch停止了,因为它分析了所有的试验点。所有8个本地求解器运行时都收敛于一个正的本地求解器出口标志。
x =1×2-0.0898 0.7127

您可以请求目标函数值x您打电话的时候运行通过使用以下语法:

[X,FVAL] =运行(GS,问题)

不过,如果你忘了请求fval,你仍然可以计算目标函数值x

FVAL = sixmin(x)的
fval = -1.0316

考虑几个局部极小的功能。

乐趣= @(x) x。^ 2 + 4 *罪(5 * x);fplot(有趣,[5,5])

要搜索全局最小值,请运行GlobalSearch使用fmincon“小数量议定书”算法。

rng默认的%用于重现选择= optimoptions (@fmincon,'算法',“小数量议定书”);问题= createOptimProblem ('fmincon',“目标”,有趣,“x0”,3,'磅',-5,乌兰巴托的5,“选项”、选择);gs = GlobalSearch;[x, f] =运行(gs、问题)
GlobalSearch停止了,因为它分析了所有的试验点。所有23个本地求解器运行时都收敛于一个正的本地求解器出口标志。
x = -0.3080
f = -3.9032

创建一个非默认MultiStart对象。

= MultiStart(女士“FunctionTolerance”2的军医,“UseParallel”,真正的)
ms = MultiStart with properties: UseParallel: 1 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06

创建一个GlobalSearch对象,该对象使用来自的可用属性女士

gs = GlobalSearch(女士)
GS = GlobalSearch与属性:NumTrialPoints:1000 BasinRadiusFactor:0.2000 DistanceThresholdFactor:0.7500 MaxWaitCycle:20个NumStageOnePoints:200 PenaltyThresholdFactor:0.2000显示: '最终' FunctionTolerance:2.0000E-04 MAXTIME:Inf文件OutputFcn:[] PlotFcn:[] StartPointsToRun:“所有“XTolerance:1.0000e-06

gs是否具有相同的非默认值FunctionTolerance作为女士。但gs不使用UseParallel财产。

创建一个GlobalSearch对象与一个FunctionTolerance1的军医

gs = GlobalSearch (“FunctionTolerance”1)的军医
MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06

更新XTolerance财产1 e - 3StartPointsToRun财产“界限”

GS = GlobalSearch(GS,'XTolerance'1 e - 3,“StartPointsToRun”,“界限”)
MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03

您还可以使用点符号一次更新一个属性。

gs.MaxTime = 1800
显示:'final'函数的公差:1.0000e-04 MaxTime: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03

算法

有关算法的详细描述,请参阅GlobalSearch算法。Ugray et al。[1]描述了生成试验点的算法和散点搜索方法。

参考

[1] Ugray, Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly,和Rafael Marti。分散搜索和局部NLP求解:一个用于全局优化的多起点框架。告知计算杂志,第19卷,2007年第3期,第328-340页。

介绍了R2010a