运行一个求解器几乎是相同的GlobalSearch
和MultiStart
.语法上的唯一区别是MultiStart
接受描述起始点的额外输入。
例如,假设你想找到几个局部最小值sixmin
函数
sixmin = 4x2- 2.1x4+x6/ 3 +xy- 4y2+ 4y4.
这个函数也称为六峰骆驼背函数[3].所有的局部最小值都在这个区域内3≤x,y≤3.
求的几个局部极小值sixmin
函数使用GlobalSearch
,输入:
% %设置随机流得到完全相同的输出% rng(14,'twister') gs = GlobalSearch;选择= optimoptions (@fmincon、“算法”、“内点”);sixmin = @ (x) (4 * x (1) ^ 2 - 2.1 * (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,…“选项”,选择);[xm,调频,兴,outptg manyminsg] =运行(gs、问题);
运行的输出(根据随机种子的不同而不同):
xm,调频,弗拉格,outptg manyminsg xm = 0.0898 -0.7127 fm = -1.0316兴= 1 outptg =结构体字段:funcCount: 2115 localSolverTotal: 3 localSolverSuccess: 3 localSolverIncomplete: 0 localSolverNoSolution: 0消息:“GlobalSearch停止,因为它分析所有的审判阿宝……' manyminsg = 1x2 GlobalOptimSolution数组的属性:X Fval Exitflag输出X0
求的几个局部极小值sixmin
函数使用50次fmincon
与MultiStart
,输入:
设置随机流得到完全相同的输出% rng(14,'twister') ms = MultiStart;选择= optimoptions (@fmincon、“算法”、“内点”);sixmin = @ (x) (4 * x (1) ^ 2 - 2.1 * (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,…“选项”,选择);[xminm, fminm flagm、outptm manyminsm] =运行(女士,问题,50);
运行的输出(根据随机种子的不同而不同):
Xminm,Fminm,Flagm,Outptm,Manyminsm Xminm = 0.0898 -0.7127 Fminm = -1.0316 Flagm = 1 OutptM =结构与字段所有起点。...'Monyminsm = 1x6 globaloptimsolution arrution arrult arrult arruct:x fval ExitFlag输出X0
在这种情况下,MultiStart
位于所有六个局部最小值,而GlobalSearch
位于两个。浏览MultiStart
金宝搏官方网站解决方案,请参阅想象吸引的盆地.