给定单个变量的数学函数,可以使用GydF4y2BaFMINBNDGydF4y2Ba
在给定间隔中找到函数的本地最小值的功能。例如,考虑GydF4y2Ba驼峰.m.GydF4y2Ba
功能,提供MATLAB®。下图显示了图表GydF4y2Ba驼峰GydF4y2Ba
。GydF4y2Ba
x = -1:.01:2;y =驼峰(x);plot(x,y)xlabel(GydF4y2Ba'X'GydF4y2Ba)ylabel(GydF4y2Ba'驼峰(x)'GydF4y2Ba) 网格GydF4y2Ba上GydF4y2Ba
找到最少的GydF4y2Ba驼峰GydF4y2Ba
范围内的功能GydF4y2Ba(0.3,1)GydF4y2Ba
, 用GydF4y2Ba
x = fminbnd(@ humps,0.3,1)GydF4y2Ba
x = 0.6370.GydF4y2Ba
您可以通过使用查看解决方案过程的详细信息GydF4y2Ba优化集GydF4y2Ba
创建选项GydF4y2Ba展示GydF4y2Ba
选项设置为GydF4y2Ba'iter'GydF4y2Ba
。将结果选项传递给GydF4y2BaFMINBNDGydF4y2Ba
。GydF4y2Ba
选项= OptimSet(GydF4y2Ba'展示'GydF4y2Ba那GydF4y2Ba'iter'GydF4y2Ba);X = FMINBND(@驼峰,0.3,1,选项)GydF4y2Ba
Func-count x f(x) Procedure 1 0.567376 12.9098 initial 2 0.732624 13.7746 golden 3 0.465248 25.1714 golden 4 0.644416 11.2693 parabolic 5 0.6413 11.2583 parabolic 6 0.637618 11.2529 parabolic 7 0.636985 11.2528 parabolic 8 0.637019 11.2528 parabolic 9 0.637052 11.2528 parabolic Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04
x = 0.6370.GydF4y2Ba
迭代显示屏显示当前值GydF4y2BaXGydF4y2Ba
和功能值在GydF4y2Baf(x)GydF4y2Ba
每次发生函数评估。为了GydF4y2BaFMINBNDGydF4y2Ba
,一个功能评估对应于算法的一次迭代。最后一列显示了过程GydF4y2BaFMINBNDGydF4y2Ba
在每次迭代时使用,金段搜索或抛物线插值。有关详细信息,请参阅GydF4y2Ba优化求解器迭代显示GydF4y2Ba。GydF4y2Ba
这GydF4y2Bafminsearch.GydF4y2Ba
功能类似于GydF4y2BaFMINBNDGydF4y2Ba
除了它处理许多变量的函数。指定起始矢量GydF4y2BaXGydF4y2Ba0.GydF4y2Ba而不是开始间隔。GydF4y2Bafminsearch.GydF4y2Ba
试图返回向量GydF4y2BaXGydF4y2Ba这是该起始载体附近的数学函数的局部最小化器。GydF4y2Ba
尝试GydF4y2Bafminsearch.GydF4y2Ba
,创建功能GydF4y2Bathree_var.GydF4y2Ba
三个变量,GydF4y2BaXGydF4y2Ba
那GydF4y2BayGydF4y2Ba
, 和GydF4y2BaZ.GydF4y2Ba
。GydF4y2Ba
功能b = three_var(v)x = v(1);Y = V(2);z = v(3);b = x。^ 2 + 2.5 * sin(y) - z ^ 2 * x ^ 2 * y ^ 2;GydF4y2Ba
现在找到此功能的最低限度GydF4y2Bax = -0.6.GydF4y2Ba
那GydF4y2Bay = -1.2.GydF4y2Ba
, 和GydF4y2BaZ = 0.135.GydF4y2Ba
作为起始值。GydF4y2Ba
v = [-0.6,-1.2,0.135];a = fminsearch(@ three_var,v)a = 0.0000 -1.5708 0.1803GydF4y2Ba
这GydF4y2BaFMINBNDGydF4y2Ba
和GydF4y2Bafminsearch.GydF4y2Ba
求解器试图最小化目标函数。如果您有最大化问题,即表单的问题GydF4y2Ba
然后定义GydF4y2BaGGydF4y2Ba(GydF4y2BaXGydF4y2Ba)= -GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba)GydF4y2Ba,并最小化GydF4y2BaGGydF4y2Ba。GydF4y2Ba
例如,找到最大值GydF4y2Ba棕褐色(Cos(GydF4y2BaXGydF4y2Ba)))GydF4y2Ba靠近GydF4y2BaXGydF4y2Ba= 5GydF4y2Ba, 评估:GydF4y2Ba
[x fval] = fminbnd(@(x)-tan(cos(x)),3,8)x = 6.2832 fval = -1.5574GydF4y2Ba
最大值为1.5574(报告的负数GydF4y2Bafval.GydF4y2Ba
),并发生在GydF4y2BaXGydF4y2Ba= 6.2832.GydF4y2Ba。此答案是正确的,因为到了五位,最大值是GydF4y2BaTan(1)= 1.5574GydF4y2Ba,发生在GydF4y2BaXGydF4y2Ba= 2GydF4y2BaπGydF4y2Ba= 6.2832.GydF4y2Ba。GydF4y2Ba
fminsearch.GydF4y2Ba
算法GydF4y2Bafminsearch.GydF4y2Ba
使用Lagarias等人所述的Nelder-Mead Simplex算法。GydF4y2Ba[1]GydF4y2Ba。该算法使用SimplexGydF4y2BaNGydF4y2Ba+ 1分GydF4y2BaNGydF4y2Ba- 尺寸向量GydF4y2BaXGydF4y2Ba。该算法首先在初始猜测周围制作一个单纯xGydF4y2BaXGydF4y2Ba0.GydF4y2Ba通过添加每个组件的5%GydF4y2BaXGydF4y2Ba0.GydF4y2Ba(GydF4y2Ba一世GydF4y2Ba) 至GydF4y2BaXGydF4y2Ba0.GydF4y2Ba。该算法使用这些GydF4y2BaNGydF4y2Ba除了单纯x的元素之外的vectorGydF4y2BaXGydF4y2Ba0.GydF4y2Ba。(算法使用0.00025作为组件GydF4y2Ba一世GydF4y2Ba如果GydF4y2BaXGydF4y2Ba0.GydF4y2Ba(GydF4y2Ba一世GydF4y2Ba)= 0.GydF4y2Ba。)然后,算法根据以下过程重复地修改单面x。GydF4y2Ba
笔记GydF4y2Ba
关键词GydF4y2Bafminsearch.GydF4y2Ba
迭代显示出现在GydF4y2Ba大胆的GydF4y2Ba在步骤描述之后。GydF4y2Ba
让GydF4y2BaXGydF4y2Ba(GydF4y2Ba一世GydF4y2Ba)表示当前单纯x中的点列表,GydF4y2Ba一世GydF4y2Ba= 1,......,GydF4y2BaNGydF4y2Ba+ 1。GydF4y2Ba
从最低函数值订购单面点中的点GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(1))最高GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1))。在迭代的每个步骤中,该算法丢弃了当前最差点GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1),并接受另一个点进入Simplex。[或者,在下面的步骤7的情况下,它会改变所有GydF4y2BaNGydF4y2Ba以上值的点GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(1))]。GydF4y2Ba
生成GydF4y2Ba反映了GydF4y2Ba观点GydF4y2Ba
R.GydF4y2Ba= 2GydF4y2BamGydF4y2Ba-GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1),GydF4y2Ba | (1)GydF4y2Ba |
在哪里GydF4y2Ba
mGydF4y2Ba=σ.GydF4y2BaXGydF4y2Ba(GydF4y2Ba一世GydF4y2Ba/GydF4y2BaNGydF4y2Ba那GydF4y2Ba一世GydF4y2Ba= 1 ...GydF4y2BaNGydF4y2Ba那GydF4y2Ba | (2)GydF4y2Ba |
并计算GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)。GydF4y2Ba
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(1))≤GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)
S.GydF4y2Ba=GydF4y2BamGydF4y2Ba+ 2(GydF4y2BamGydF4y2Ba-GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1)),GydF4y2Ba | (3)GydF4y2Ba |
并计算GydF4y2BaFGydF4y2Ba(GydF4y2BaS.GydF4y2Ba)。GydF4y2Ba
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaS.GydF4y2Ba)
否则,接受GydF4y2BaR.GydF4y2Ba并终止迭代。GydF4y2Ba反映GydF4y2Ba
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)≥GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba)),执行一个GydF4y2Ba收缩GydF4y2Ba之间GydF4y2BamGydF4y2Ba和任何一种GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1)或GydF4y2BaR.GydF4y2Ba,取决于物理函数值较低的。GydF4y2Ba
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)
CGydF4y2Ba=GydF4y2BamGydF4y2Ba+(GydF4y2BaR.GydF4y2Ba-GydF4y2BamGydF4y2Ba)/ 2GydF4y2Ba | (4)GydF4y2Ba |
并计算GydF4y2BaFGydF4y2Ba(GydF4y2BaCGydF4y2Ba)。如果GydF4y2BaFGydF4y2Ba(GydF4y2BaCGydF4y2Ba)
否则,继续步骤7(缩小)。GydF4y2Ba
如果GydF4y2BaFGydF4y2Ba(GydF4y2BaR.GydF4y2Ba)≥GydF4y2BaFGydF4y2Ba(GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1))GydF4y2Ba, 计算GydF4y2Ba
CC.GydF4y2Ba=GydF4y2BamGydF4y2Ba+(GydF4y2BaXGydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1) -GydF4y2BamGydF4y2Ba)/ 2GydF4y2Ba | (5)GydF4y2Ba |
并计算GydF4y2BaFGydF4y2Ba(GydF4y2BaCC.GydF4y2Ba)。如果GydF4y2BaFGydF4y2Ba(GydF4y2BaCC.GydF4y2Ba)
否则,继续步骤7(缩小)。GydF4y2Ba
计算GydF4y2BaNGydF4y2Ba点GydF4y2Ba
V.GydF4y2Ba(GydF4y2Ba一世GydF4y2Ba)=GydF4y2BaXGydF4y2Ba(1)+(GydF4y2BaXGydF4y2Ba(GydF4y2Ba一世GydF4y2Ba) -GydF4y2BaXGydF4y2Ba(1))/ 2GydF4y2Ba | (6)GydF4y2Ba |
并计算GydF4y2BaFGydF4y2Ba(GydF4y2BaV.GydF4y2Ba(GydF4y2Ba一世GydF4y2Ba)),GydF4y2Ba一世GydF4y2Ba= 2,......,GydF4y2BaNGydF4y2Ba+ 1。下一次迭代的单面是GydF4y2BaXGydF4y2Ba(1),GydF4y2BaV.GydF4y2Ba(2),......,GydF4y2BaV.GydF4y2Ba(GydF4y2BaNGydF4y2Ba+ 1)。GydF4y2Ba收缩GydF4y2Ba
下图显示了点数GydF4y2Bafminsearch.GydF4y2Ba
可以在程序中计算,以及每个可能的新单纯x。原始单面有一个粗体轮廓。迭代进行,直到符合停止标准。GydF4y2Ba
[1] Lagarias,J.C.,J.A. Reeds,M. H. Wright和P. E. Wright。“低尺寸下狭窄的Nelder-Mead Simplex方法的收敛性能”。GydF4y2BaSIAM优化杂志GydF4y2Ba,卷。9,第1,199号,第112页,第112-147页。GydF4y2Ba