您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 利用Matlab求解线性规划问题
利用Matlab求解线性规划问题河北科技大学2February2020第1页利用Matlab求解线性规划问题利用Matlab求解线性规划问题河北科技大学2February2020第2页线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解:minf(x)s.t.(约束条件):Ax=b(等式约束条件):Aeqx=beqlb=x=ub利用Matlab求解线性规划问题河北科技大学2February2020第3页linprog函数的调用格式如下:x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=linprog(…)[x,fval,exitflag]=linprog(…)[x,fval,exitflag,output]=linprog(…)[x,fval,exitflag,output,lambda]=linprog(…)利用Matlab求解线性规划问题河北科技大学2February2020第4页其中:x=linprog(f,A,b)返回值x为最优解向量。x=linprog(f,A,b,Aeq,beq)作有等式约束的问题。若没有不等式约束,则令A=[]、b=[]。x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)中lb,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。利用Matlab求解线性规划问题河北科技大学2February2020第5页Options的参数描述:Display显示水平。选择’off’不显示输出;选择’Iter’显示每一步迭代过程的输出;选择’final’显示最终结果。利用Matlab求解线性规划问题河北科技大学2February2020第6页[x,fval]=linprog(…)左端fval返回解x处的目标函数值。利用Matlab求解线性规划问题河北科技大学2February2020第7页[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub,x0)的输出部分:exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。output返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。lambda返回x处的拉格朗日乘子。它有以下属性:lambda.lower-lambda的下界;lambda.upper-lambda的上界;lambda.ineqlin-lambda的线性不等式;lambda.eqlin-lambda的线性等式。利用Matlab求解线性规划问题河北科技大学2February2020第8页下面通过具体的例子来说明:例如:某农场I、II、III等耕地的面积分别为100hm2、300hm2和200hm2,计划种植水稻、大豆和玉米,要求三种作物的最低收获量分别为190000kg、130000kg和350000kg。I、II、III等耕地种植三种作物的单产如表5.1.4所示。若三种作物的售价分别为水稻1.20元/kg,大豆1.50元/kg,玉米0.80元/kg。那么,(1)如何制订种植计划,才能使总产量最大?(2)如何制订种植计划,才能使总产值最大?利用Matlab求解线性规划问题河北科技大学2February2020第9页表1不同等级耕地种植不同作物的单产(单位:kg/hm2)I等耕地II等耕地III等耕地水稻1100095009000大豆800068006000玉米140001200010000利用Matlab求解线性规划问题河北科技大学2February2020第10页首先根据题意建立线性规划模型(决策变量设置如表2所示,表中xij表示第种作物在第j等级的耕地上的种植面积。):表2作物计划种植面积(单位:hm2)I等耕地II等耕地III等耕地水稻x11x12x13大豆x22x21x23玉米x31x32x33利用Matlab求解线性规划问题河北科技大学2February2020第11页约束方程如下:耕地面积约束:最低收获量约束:200300100332313322212312111xxxxxxxxx3500001000012000140001300006000680080001900009000950011000333231232221131211xxxxxxxxx利用Matlab求解线性规划问题河北科技大学2February2020第12页非负约束:),,;j,,(ixij3213210利用Matlab求解线性规划问题河北科技大学2February2020第13页(1)追求总产量最大,目标函数为:3332312322211312111000012000140006000680080009000950011000minxxxxxxxxxZ=利用Matlab求解线性规划问题河北科技大学2February2020第14页(2)追求总产值最大,目标函数为:333231232221131211333231232221131211800096001120090001020012000108001140013200100001200014000800600068008000501900095001000(201maxxxxxxxxxx)xxx(.)xxx(.)xxx.Z=利用Matlab求解线性规划问题河北科技大学2February2020第15页根据求解函数linprog中的参数含义,列出系数矩阵,目标函数系数矩阵,以及约束条件等。这些参数中没有的设为空。譬如,利用Matlab求解线性规划问题河北科技大学2February2020第16页(1)当追求总产量最大时,只要将参数f=[-11000–9500–9000–8000–6800–6000–14000–12000-10000];A=[1.00000.00000.00001.00000.00000.00001.00000.00000.0000;0.00001.00000.00000.00001.00000.00000.00001.00000.0000;0.00000.00001.00000.00000.00001.00000.00000.00001.0000;-11000.00000.00000.0000-9500.00000.00000.0000-9000.00000.00000.0000;0.0000-8000.00000.00000.0000-6800.00000.00000.0000-6000.00000.0000;0.00000.0000-14000.00000.00000.0000-12000.00000.00000.0000-10000.0000];b=[100300200-190000-130000-350000];lb=[0.00000.00000.00000.00000.00000.00000.00000.00000.0000];代入求解函数,即可求得结果。[]),[],[],,,,(lbbAflinprogfxoptxopt利用Matlab求解线性规划问题河北科技大学2February2020第17页(2)当追求总产值最大时,将参数f=[-13200–11400–10800–12000–10200–9000–11200–9600-8000];A=[1.00000.00000.00001.00000.00000.00001.00000.00000.0000;0.00001.00000.00000.00001.00000.00000.00001.00000.0000;0.00000.00001.00000.00000.00001.00000.00000.00001.0000;-11000.00000.00000.0000-9500.00000.00000.0000-9000.00000.00000.0000;0.0000-8000.00000.00000.0000-6800.00000.00000.0000-6000.00000.0000;0.00000.0000-14000.00000.00000.0000-12000.00000.00000.0000-10000.0000];b=[100300200-190000-130000-350000];lb=[0.00000.00000.00000.00000.00000.00000.00000.00000.0000];代入求解函数,即可得到求解结果。[]),[],[],,,,(lbbAflinprogfxoptxopt利用Matlab求解线性规划问题河北科技大学2February2020第18页线性规划,还有其他的几种调用函数形式,可在Matlab帮助中查找LP或者LINPROG的帮助说明。HelpLINPROG
本文标题:利用Matlab求解线性规划问题
链接地址:https://www.777doc.com/doc-3420311 .html