- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB求解非线性规划.ppt
MATLAB求解非线性规划 无约束极值问题 单变量函数求最小值的标准形式为 s.t 函数 fminbnd 格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间 上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。 x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项 [x,fval] = fminbnd(…) % fval为目标函数的最小值 [x,fval,exitflag] = fminbnd(…) %xitflag为终止迭代的条件 [x,fval,exitflag,output] = fminbnd(…) % output为优化信息 说明 若参数exitflag0,表示函数收敛于x,若exitflag=0,表示超过函数估计值或迭代的最大数字,exitflag0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。 例1 计算下面函数在区间(0,1)内的最小值。 解:[x,fval,exitflag,output] =fminbnd((x^3+cos(x)+x*log(x))/exp(x),0,1) x = 0.5223 fval = 0.3974 exitflag = 1 output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation 主程序为ex2.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) 二次规划可以直接利用 Matlab 来求解。Matlab 中二次规划函数为:quadprog( )。其调用格式为 x=quadprog(H,C,A,b); x=quadprog(H,C,A,b,Aeq,beq); x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options); * 例1 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t. x1+x2≤2 -x1+2x2≤2 x1≥0, x2≥0 1、写成标准形式: 2、 输入命令: H=[1 -1; -1 2]; c=[-2 ;-6];A=[1 1; -1 2];b=[2;2]; Aeq=[];beq=[]; VLB=[0;0];VUB=[]; [x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB) 3、运算结果为: x =0.6667 1.3333 z = -8.2222 s.t. * 1. 首先建立M文件fun.m,定义目标函数F(X): function f=fun(X); f=F(X); 一般非线性规划 其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步: * 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
文档评论(0)