欢迎来到天天文库
浏览记录
ID:39466017
大小:41.50 KB
页数:5页
时间:2019-07-04
《MATLAB 程式设计与应用(4)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MATLAB程式设计线性规划线性规划指令linprog()介绍[x,fval,exitflag]=linprog(f,a,b);在输入部分,f是目标函数,它以列向量的形式出现;a、b分别是线性规划中不等式约束的系数矩阵和资源向量;aeq、beq分别是线性规划中等式约束的系数矩阵和资源向量;这其中如有缺省可不用输入(见例题,自己多加思考)。在输出部分,x是线性规划最优解,fval是线性规划最优值;exitflag是输出标记,当exitflag=1时,表示线性规划有解;当exitflag=-1时,表示线性规划无解。当程序通过时,屏幕上有一段文字:O
2、ptimizationterminatedsuccessfully(最优化成功的结束),当程序中有问题时,屏幕上会用红字告知,在某行某列有什么性质的问题,这些都显示出MATLAB语言的智能化优势。(同学们如果感兴趣的话,可以去找一下MATLAB6.5的汉化包,便于大家掌握该种计算机语言。)下述指令linprog()是线性规划标准型:minz=fs.t.其中(1)式为不等式约束;(2)式为等式约束。指令linprog()在本书用得很多,如运输问题、整数规划等都用到它。下面介绍linprog()的使用要点:(1)目标函数f的填写法,如f=3x1+5
3、x2-x3,则应写成f=[35-1]’的列矩阵形式;(2)不等式约束均应写成’’形式,如2x1+5x24,要写成-2x1-5x2-4;(3)我们知道当约束区域不可行时,线性规划无解;当约束区域无界时,线性规划可能无解。而exitflag=-1则表示线性规划无解;(4)当求目标函数f的最大值时,可先求-f最小值fval,而-fval就是所要求的最大值。(注:这与我们所讲述的线性规划的标准形式是不同的)举例说明它的使用情况。例1minz=-3x1-4x2s.t.程序如下:f=[-3-4]';a=[11;12;01];b=[683]';[x,fval
4、,exitflag]=linprog(f,a,b)程序执行后得:Optimizationterminatedsuccessfully.x=4.00002.0000fval=-20.0000exitflag=1即目标函数在点(4,2)处取得最小值-20。例2minz=-x1-x2s.t.程序如下:f=[-1,-1]';a=[-21;1-1];b=[4,2];[x,fval,exitflag]=linprog(f,a,b)程序执行后得:exitflag=-1exitflag=-1表示该线性规划无解。例3max=3x1+2x2s.t程序如下:f=[-
5、3-2]';%因为求函数最大值,故将目标函数反号求最小值。a=[-12;32];b=[414]';aeq=[1-1;11];%表示等号约束beq=[35]';%表示等号约束[x,fval,exitflag]=linprog(f,a,b,aeq,beq);程序执行后得:Optimizationterminatedsuccessfully.x=4.00001.0000fval=-14.0000exitflag=1故原目标函数z=3x1+2x2在x1=4,x2==1时取得最大值14。(这些内容让大家自己练习一段时间以后,再做习题.)习题某厂生产甲、乙
6、、丙3种产品,须配置设备a、b,有关数据如表所示。设备每天生产能力每天最低产量ab甲6212乙228丙41224每天运费/元200180现要求确定设备a、b台数,使在满足每天最低产量的情况下,其每天的运费最少。答案:设备a1台,设备b3台,运费最低740元编程过程中注意将约束条件修改为标准形式
此文档下载收益归作者所有