最优化建模方法及matlab实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

最优化问题的Matlab求解孟文辉西北大学数学学院math@nwu.edu.cn2015.5.15数学规划的一般模型mixgtsxxxxfzMaxMiniTn,2,1,0)(..),(),()(1或x~决策变量f(x)~目标函数gi(x)0~约束条件数学规划一般模型2015.5.151、解析解法和图解法无约束最优化TnxxxxfzMin),(),(10|,...,0|,0|00021xxnxxxxxfxfxf5.02cos4)24sin(5.03teteztt例:用解析法求解以下函数的最小值无约束优化问题的解析法2015.5.15symst;y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;ezplot(y,[04])y1=diff(y);ezplot(y1,[04])t0=solve(y1)y2=diff(y1);b=subs(y2,t,t0)无约束优化问题的解析法2015.5.152、数值解法命令形式2:x=fminunc(fun,x0)%简单形式[x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…)%一般形式功能:与fsolve()中的参数控制形式类似。命令形式1:x=fminsearch(fun,x0)%简单形式[x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…)%一般形式功能:与fsolve()中的参数控制形式类似。注:若函数时多元的,要表达成向量的形式。无约束优化问题的数值解法2015.5.15例:的最小值。求二元函数xyyxexxz22)2(2f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-(1)*x(2))','x');x0=[0,0];ff=optimset;ff.Display='iter';x=fminsearch(f,x0,ff)x=fminunc(f,x0,ff)无约束优化问题的数值解法2015.5.153、全局最优解和局部最优解例:的初值得出其最小值。试观察不同已知函数,0,2sin10cos)(632ttetetyttf=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t');t0=1;[t1,f1]=fminsearch(f,t0)t1=0.92275390625000,f1=-0.15473299821860t0=0.1;[t2,f2]=fminsearch(f,t0)t2=0.29445312500000,f2=-0.54362463738706全局最优解和局部最优解2015.5.15习题:分别用解析法和数值方法以下二元函数的最小值。习题2015.5.153)2(),(22yxeyxfyx目标函数:nnxcxcxcz2211min约束条件:0,,,),(),(),(2122112222212111212111nmnmnmmnnnnxxxbxaxaxabxaxaxabxaxaxa约束最优化1、线性规划全局最优解和局部最优解2015.5.15CXzmin目标函数:约束条件:0),(XbAX其中:),,,(21ncccCmnmmnaaaaaaA2111211nxxxX21mbbbb21C价值向量b资源向量X决策变量向量yonkey_mwh@163.com2015.5.15命令形式1:[X,lag,how]=lp(C,A,b,v1,v2,x0)功能:C,A,b的意义如矩阵表示里参数;v1,v2表示决策变量的上界和下界(其维数可以小于X,但表示前几个分量的上下界);x0表示初始值;X时输出最优解;lag是lagrange乘子,维数等于约束条件的个数,非零的向量是起作用的约束条件;how给出错误信息:infeasible(无可行解),unbounded(无界解),ok(求解成功).0,0,2107..513minzyxzyyxtszyxm求解例:c=[13,-1,5];A=[-1,-1,0;0,1,1];b=[-7,10];v0=[2,0,0];[X,lag,how]=lp(c,A,b,v0)yonkey_mwh@163.com2015.5.15CXzmin目标函数:约束条件:MmeqeqxxxBXAbAXyonkey_mwh@163.com2015.5.15命令形式2:[X,f,flag,c]=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。57.2,678.0,32.3,0,6254354242..342min5432154321543254321xxxxxxxxxxxxxxtsxxxxx求解例:yonkey_mwh@163.com2015.5.15c=[-2,-1,-4,-3,-1];A=[02142;345-1-1];b=[54,62];Ae=[];Be=[];xm=[0,0,3.32,0.678,2.57];ff=optimset;ff.LargeScale='off';ff.TolX=1e-15;ff.Display='iter';[X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)yonkey_mwh@163.com2015.5.15CXHXX21min目标函数:约束条件:MmeqeqxxxBXAbAX2、二次规划yonkey_mwh@163.com2015.5.15命令形式:[X,f,flag,c]=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。0,,,102335..)4()3()2()1(min43214321432124232221xxxxxxxxxxxxtsxxxx求解例:yonkey_mwh@163.com2015.5.15c=[-2,-1,-4,-3,-1];A=[02142;345-1-1];b=[54,62];Ae=[];Be=[];xm=[0,0,3.32,0.678,2.57];ff=optimset;ff.LargeScale='off';ff.TolX=1e-15;ff.Display='iter';[X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)yonkey_mwh@163.com2015.5.15定义如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.一般形式:(1)其中,是定义在En上的实值函数,简记:Xfmin.,...,2,10m;1,2,...,0..ljXhiXgtsjinTnExxxX,,,21jihgf,,1nj1ni1nE:h,E:g,E:EEEf其它情况:求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.四、非线性规划yonkey_mwh@163.com2015.5.15标准型为:MinF(X)s.t.bAXbeqAeqX)(XG00)(XCeqCeq(X)=0VLBXVUB其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.yonkey_mwh@163.com2015.5.15(1)间接法(2)直接法直接搜索法以梯度法为基础的间接法非线性规划的求解算法yonkey_mwh@163.com2015.5.15间接法在非线性最优化问题当中,如果目标函数能以解析函数表示,可行域由不等式约束确定,则可以利用目标函数和可行域的已知性质,在理论上推导出目标函数为最优值的必要条件,这种方法就称为间接法(也称为解析法)。一般要用到目标函数的导数。yonkey_mwh@163.com2015.5.15直接法直接法是一种数值方法。这种方法的基本思想是迭代,通过迭代产生一个点序列{X(k)},使之逐步接近最优点。只用到目标函数。如黄金分割法、Fibonacci、随机搜索法。yonkey_mwh@163.com2015.5.15迭代法一般步骤注意:数值求解最优化问题的计算效率取决于确定搜索方向P(k)和步长的效率。(1)选定初始点X(0),k=0(2)寻找一个合适的方向P(k),k=0,1,2,…P(k)为第k+1步的搜索方向。(3)求出沿P(k)方向前进的步长)(k(4)得到新的点X(k+1),)()()()1(kkkkPXX检验X(k+1)是否最优,如果是最优,则迭代结束,否则1kk,转到(2)执行。)(kyonkey_mwh@163.com2015.5.15最速下降法(steepestdescentmethod)由法国数学家Cauchy于1847年首先提出。在每次迭代中,沿最速下降方向(负梯度方向)进行搜索,每步沿负梯度方向取最优步长,因此这种方法称为最优梯度法。特点:方法简单,只以一阶梯度的信息确定下一步的搜索方向,收敛速度慢;越是接近极值点,收敛越慢;它是其它许多无约束、有约束最优化方法的基础。该法一般用于最优化开始的几步搜索。yonkey_mwh@163.com2015.5.15最速下降法算法:1.给定初始点Exn)1(,给定误差0,令k=1;2.计算搜索方向xdkkf)()(;3.如果dk)(,则迭代终止,否则通过下列一维搜索求)(k:dxkkf)()(0min4.令dxxkkkk)()()()1(,置k=k+1,转(2)步执行。yonkey_mwh@163.com2015.5.151.首先建立M文件fun.m,定义目标函数F(X):functionf=fun(X);f=F(X);用Matlab求解上述问题,基本步骤分三步:2.若约束条件中有非线性约束:G(X)0或Ceq(X)=0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X):function[G,Ceq]=nonlcon(X)G=...Ceq=...Matlab求解步骤yonkey_mwh@163.com2015.5.153.建立主程序.非线性规划求解的函数是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(...)输出极值点M文件迭代的初值参数说明变量上下限yonkey_mwh@163.com2015.5.15输入参数的几点说明模型中如果没有A,b,Aeq,beq,VLB,VUB的限制,则以空矩阵[]作为参数传入;nonlcon:如果包含非线性等式或不等式约束

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功