预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数学建模与数学实验标准形式:2.用Matlab解无约束优化问题主程序为wliti1.m: f='2*exp(-x).*sin(x)'; fplot(f,[0,8]);%作图语句 [xmin,ymin]=fminbnd(f,0,8) f1='-2*exp(-x).*sin(x)'; [xmax,ymax]=fminbnd(f1,0,8)例2对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?命令格式为: (1)x=fminunc(fun,X0);或x=fminsearch(fun,X0) (2)x=fminunc(fun,X0,options); 或x=fminsearch(fun,X0,options) (3)[x,fval]=fminunc(...); 或[x,fval]=fminsearch(...) (4)[x,fval,exitflag]=fminunc(...); 或[x,fval,exitflag]=fminsearch(...); (5)[x,fval,exitflag,output]=fminunc(...); 或[x,fval,exitflag,output]=fminsearch(...)说明:使用fminunc和fminsearch可能会得到局部最优解.例3minf(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1).用fminsearch函数求解2).用fminunc函数Rosenbrock函数不同算法的计算结果定义如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题. 定义1把满足问题(1)中条件的解称为可行解(或可行点),所有可行点的集合称为可行集(或可行域).记为D.即 问题(1)可简记为. 用MATLAB软件求解,其输入格式如下: 1. x=quadprog(H,C,A,b); 2. x=quadprog(H,C,A,b,Aeq,beq); 3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); 4. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0); 5. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options); 6. [x,fval]=quaprog(...); 7. [x,fval,exitflag]=quaprog(...); 8. [x,fval,exitflag,output]=quaprog(...);例5minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t.x1+x2≤2 -x1+2x2≤2 x1≥0,x2≥01.首先建立M文件fun.m,定义目标函数F(X): functionf=fun(X); f=F(X);3.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下: (1)x=fmincon(‘fun’,X0,A,b) (2)x=fmincon(‘fun’,X0,A,b,Aeq,beq) (3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB) (4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) (6)[x,fval]=fmincon(...) (7)[x,fval,exitflag]=fmincon(...) (8)[x,fval,exitflag,output]=fmincon(...)注意: [1]fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。 [2]fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。 [3]fmincon函数可能会给出局部最优解,这与初值X0的选取有关。例8 3.主程序fxx.m为: x0=[3;2.5]; VLB=[00];VUB=[510]; [x,fval,exitflag,output] =fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2') 4.运算结果为: x= 4.0000 3.0000 fval=-11.0000 exitflag=1 output= iteratio