一维方程的全局极小化
客户提供了这个例子,他很困惑为什么fmincon很难找到最小值。
版权所有(c) 2010, The MathWorks, Inc。版权所有。
内容
最小化方程
F = @(x) x.*sin(x) + x.*cos(2.*x);
界限
Lb = 0;Ub = 10;
求最小值和绘图
X0 = [0 1 3 6 8 10];Hf =图;为我= 1:6 x(我)= fmincon (f, x0(我 ),[],[],[],[], 磅,乌兰巴托,[],...optimset (“算法”,“SQP”,“Disp”,“没有”));Subplot (2,3,i) ezplot(f,[lb ub]);持有在情节(x0 (i), f (x0 (i)),k +的)情节(x (i), f (x (i))“罗”)举行从标题([“从……开始”num2str (x0 (i))))如果I == 1 || I == 4 ylabel(x sin(x) + x cos(2 x))结束结束
一个普通的陷阱!
这是一个一维有界极小化问题。这类问题有专门的解决方案:fminbnd.
X2 = fminbnd(f,lb,ub) figure ezplot(f,[lb ub]);持有在情节(x2, f (x2),“罗”)举行从ylabel (x sin(x) + x cos(2 x))标题({“使用fminbnd解决方案。”,“不需要起点!”})
X2 = 4.7954
经验教训:使用适合你的问题类型的解决方案!
但是如果fmincon这是唯一的选择吗?
使用globalSearch或MultiStart
问题= createOptimProblem(“fmincon”,“目标”f“x0”x0 (1),“磅”磅,...乌兰巴托的乌兰巴托,“选项”optimset (“算法”,“SQP”,“Disp”,“没有”));gs = GlobalSearch;XGS = run(gs,problem);图ezplot(f,[lb ub]);持有在情节(xg f (xg),“罗”)举行从ylabel (x sin(x) + x cos(2 x))标题(“使用globalSearch的解决方案。”)
GlobalSearch停止了,因为它分析了所有的试验点。所有23个本地求解器运行都收敛于一个积极的本地求解器退出标志。