利用MATLAB求解无约束优化问题 ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fval =1.9151e-010
exitflag = 1
output =
iterations: 108
funcCount: 202
algorithm: 'Nelder-Mead simplex direct search'
利用MATLAB求解无约束
优化问题
6
4. 用fminunc 函数 (1)建立M-文件fun2.m function f=fun2(x) f=100*(x(2)-x(1)^2)^2+(1-x(1))^2 (2)简单计算 [x,fval,exitflag,output]=fminunc('fun2', [-1.2 2])
优化问题
-1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
5
用fminsearch函数求解 输入命令:
f='100*(x(2)-x(1)^2)^2+(1-x(1))^2'; [x,fval,exitflag,output]=fminsearch(f, [-1.2 2])
运行结果:
x =1.0000 1.0000
0
0
-1
-1 -2
输入命令:
3
contour(x,y,z,20)
2.5
hold on plot(-1.2,2,' o ');
2
start point
1.5
1
solution
texቤተ መጻሕፍቲ ባይዱ(-1.2,2,'start point')
0.5
plot(1,1,'o')
0
text(1,1,'solution') 利用MATLAB求解无约-束0.5
利用MATLAB求解无约束优化问题
matlab解多元函数无约束优化问题
标准型为:min F(X)
命令格式为: [x,fval,exitflag,output]= fminunc(fun, x0 ,options);
或 [x,fval,exitflag,output]= fminsearch(fun, x0 ,options);
options32=optimset(,'HessUpdate','steepdesc','MaxIter',8000,'MaxFunEvals',8000) [x32,fval32,exitflag32,output32]=fminunc('fun2', [-1.2 2],options32) pause
•使用fminunc和 fminsearch.
•fminsearch是用单纯形法寻优.
•fminunc的算法见以下几点说明:
利用MATLAB求解无约束
优化问题
2
说明:
[1] fminunc为无约束优化提供了大型优化和中型优化算法。
由options中的参数LargeScale控制: LargeScale=’on’(默认值),使用大型算法 LargeScale=’off’(默认值),使用中型算法
优化问题
3
例1 min f(x)=(4x12+2x22+4x1x2+2x2+1)*ex1
1、编写M-文件 fun.m: function f = fun (x) f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
2、输入M文件wliti.m如下: x0 = [-1, 1]; x=fminunc(‘fun’,x0); y=fun(x)
[2] fminunc为中型优化算法的搜索方向提供了3种算法,
由 options中的参数HessUpdate控制: HessUpdate=’bfgs’(默认值),拟牛顿法的BFGS公式; HessUpdate=’dfp’,拟牛顿法的DFP公式; HessUpdate=’steepdesc’,最速下降法
[3] fminunc为中型优化算法的步长一维搜索提供了两种算法,
由options中参数LineSearchType控制:
LineSearchType=’quadcubic’(缺省值),
混合的二次和三次多项式插值;
LineSearchType=’cubicpoly’,三次多项式插值
利用MATLAB求解无约束
3、运行结果: x= 0.5000 -1.0000 y = 1.3029e-10
利用MATLAB求解无约束
优化问题
4
例 2 Rosenbrock 函数 f(x1,x2)=100(x2-x12)2+(1-x1)2 的最优解(极小)为 x*=(1,1),极小值为 f*=0.试用 不同算法(搜索方向和步长搜索)求数值最优解. 初值选为 x0=(-1.2 , 2).
3000
为获得直观认识, 输入以下命令,
2500
画出 Rosenbrock 函数的三维图形,
2000 1500
[x,y]=meshgrid(-2:0.1:2,-1:0.1:3); 1000
z=100*(y-x.^2).^2+(1-x).^2;
500
0
mesh(x,y,z)
3
2
2
1
1
2. 画出 Rosenbrock 函数的等高线图,
(3)比较各种算法主程序compare.m
利用MATLAB求解无约束
优化问题
7
options11=optimset('HessUpdate','dfp') [x11,fval11,exitflag11,output11]=fminunc('fun2', [-1.2 2],options11) pause options12=optimset('HessUpdate','dfp','LineSearchType','cubicpoly') [x12,fval12,exitflag12,output12]=fminunc('fun2', [-1.2 2],options12) pause options21=optimset('HessUpdate','bfgs') [x21,fval21,exitflag21,output21]=fminunc('fun2', [-1.2 2],options21) pause options22=optimset('HessUpdate','bfgs','LineSearchType','cubicpoly') [x22,fval22,exitflag22,output22]=fminunc('fun2', [-1.2 2],options22) pause options31=optimset('HessUpdate','steepdesc') [x31,fval31,exitflag31,output31]=fminunc('fun2', [-1.2 2],options31) pause