主要内容

GlobalSearch

求全局最小值

描述

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

创建

描述

例子

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

例子

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

例子

gs = GlobalSearch(oldGS,Name,Value)属性的副本oldGSGlobalSearch求解器,并使用名称-值对设置属性。

例子

gs = GlobalSearch(ms)创建gs,一个GlobalSearch的通用属性值女士MultiStart解算器。

属性

全部展开

盆地半径减小因子,指定为标量从0通过1.之后,盆地半径减小MaxWaitCycle连续的起始点位于盆地内。盆地半径减小1 - 1BasinRadiusFactor

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

数据类型:

潜在起始点的数目,指定为正整数。

例子:3 e4

数据类型:

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

数据类型:细胞|function_handle

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

例子:0.4

数据类型:

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

有两个内置的plot函数:

  • @gsplotbestf画出最佳目标函数值。

  • @gsplotfunccount绘制函数求值的数量。

看到MultiStart Plot函数

例子:@gsplotbestf

数据类型:细胞|function_handle

运行的起始点,指定为:

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

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

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

GlobalSearch检查StartPointsToRun的第2阶段GlobalSearch算法(主循环)。有关更多信息,请参见GlobalSearch算法

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

数据类型:字符|字符串

考虑相等解的距离公差,指定为非负标量。金宝搏官方网站求解者认为两个解相同,如果它们在金宝搏官方网站XTolerance彼此之间的相对距离,并有目标函数值FunctionTolerance彼此的相对差异。如果两个条件都不满足,求解器报告的解是不同的。金宝搏官方网站集XTolerance0以获得每个局部求解器运行的结果。集XTolerance给一个更大的值就会有更少的结果。为GlobalSearch详细信息,请参阅更新解决方案集当fmincon运行时.为MultiStart详细信息,请参阅创建GlobalOptimSolution对象

例子:2的军医

数据类型:

对象的功能

运行 运行多起点求解器

例子

全部折叠

创建一个具有多个局部极小值的优化问题,并尝试利用全局极小值找到全局极小值GlobalSearch.目标是六头驼背问题(见运行求解器).

rng默认的%用于再现性gs = GlobalSearch;Sixmin = @(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 = run(gs,有问题)
GlobalSearch停止了,因为它分析了所有的试验点。所有8个本地求解器运行都收敛于一个积极的本地求解器退出标志。
x =1×2-0.0898 - 0.7127

你可以请求目标函数值在x当你打电话时运行使用以下语法:

[x,fval] = run(gs,problem)

然而,如果你忽视了请求fval时,仍可计算目标函数值x

Fval = 6分(x)
Fval = -1.0316

考虑一个具有几个局部极小值的函数。

Fun = @(x) x.^2 + 4*sin(5*x);fplot(有趣,[5,5])

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

要搜索全局最小值,请运行GlobalSearch使用fmincon“sqp”算法。

rng默认的%用于再现性Opts = optimoptions(@fmincon,“算法”“sqp”);问题= createOptimProblem(“fmincon”“目标”...有趣,“x0”3,“磅”5,乌兰巴托的5,“选项”、选择);gs = GlobalSearch;[x,f] = run(gs,problem)
GlobalSearch停止了,因为它分析了所有的试验点。所有23个本地求解器运行都收敛于一个积极的本地求解器退出标志。
X = -0.3080
F = -3.9032

创建一个非默认值MultiStart对象。

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

创建一个GlobalSearch对象的可用属性女士

gs = GlobalSearch(ms)
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 2.0000 -04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000 -06

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

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

gs = GlobalSearch(“FunctionTolerance”1)的军医
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000 -04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000 -06

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

gs = GlobalSearch(gs,“XTolerance”1 e - 3,“StartPointsToRun”“界限”
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000 -04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000 -03

您还可以使用点表示法一次更新一个属性。

gs。MaxTime = 1800
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000 -04 MaxTime: 1800 OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000 -03

算法

有关该算法的详细描述,请参见GlobalSearch算法.Ugray等人。[1]描述生成试点的算法和分散搜索方法。

参考文献

[1]乌格雷,Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly和Rafael Martí。分散搜索和局部NLP求解器:用于全局优化的多起点框架.INFORMS Journal on Computing, Vol. 19, No. 3, 2007, pp. 328-340。

在R2010a中引入