资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,利用,Matlab,求解线性规划问题,河北科技大学,*,第,*,页,利用,Matlab,求解线性规划问题,线性规划是一种优化方法,,Matlab,优化工具箱中有现成函数,linprog,对如下式描述的,LP,问题求解:,min,f(x,),s.t,.(,约束条件,),:,Ax=b,(,等式约束条件,),:,Aeqx,=,beq,lb=x=,ub,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,(),其中:,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,为指定优化参数进行最小化。,Options,的参数描述:,Display,显示水平。选择,off,不显示输出;选择,Iter,显示每一 步迭代过程的输出;选择,final,显示最终结果。,x,fval,=,linprog,(),左端,fval,返回解,x,处的目标函数值。,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,的线性等式。,下面通过具体的例子来说明:,例如:某农场,I,、,II,、,III,等耕地的面积分别为,100,hm,2,、,300,hm,2,和,200,hm,2,,计划种植水稻、大豆和玉米,要求三种作物的最低收获量分别为,190000,kg,、,130000,kg,和,350000,kg,。,I,、,II,、,III,等耕地种植三种作物的单产如表,5.1.4,所示。若三种作物的售价分别为水稻,1.20,元,/,kg,,大豆,1.50,元,/,kg,,玉米,0.80,元,/,kg,。那么,(,1,)如何制订种植计划,才能使总产量最大?(,2,)如何制订种植计划,才能使总产值最大?,表,1,不同等级耕地种植不同作物的单产,(,单位,:,kg/hm,2,),I,等,耕,地,II,等,耕,地,III,等,耕,地,水稻,11 000,9 500,9 000,大豆,8 000,6 800,6 000,玉米,14 000,12 000,10 000,首先根据题意建立线性规划模型(决策变量设置如表,2,所示,表中,x,ij,表示第种作物在第,j,等级的耕地上的种植面积。):,表,2,作物计划种植面积(单位,:,hm,2,),I,等,耕,地,II,等,耕,地,III,等,耕,地,水稻,x,11,x,12,x,13,大豆,x,22,x,21,x,23,玉米,x,31,x,32,x,33,约束方程如下:,耕地面积约束:,最低收获量约束:,非负约束:,(1),追求总产量最大,目标函数为:,(2),追求总产值最大,目标函数为:,根据求解函数,linprog,中的参数含义,列出系数矩阵,目标函数系数矩阵,以及约束条件等。,这些参数中没有的设为空。譬如,,(,1,)当追求总产量最大时,只要将参数,f=-11000 9500 9000 8000 6800 6000 14000 12000 -10000;,A=1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,;,0.0000 1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000;,0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000;,-11000.0000 0.0000,0.0000,-9500.0000 0.0000,0.0000,-9000.0000 0.0000,0.0000,;,0.0000-8000.0000 0.0000,0.0000,-6800.0000 0.0000,0.0000,-6000.0000 0.0000;,0.0000,0.0000,-14000.0000 0.0000,0.0000,-12000.0000 0.0000,0.0000,-10000.0000;,b=100 300 200-190000-130000-350000;,lb=0.0000 0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,;,代入求解函数 ,,即可求得结果。,(,2,)当追求总产值最大时,将参数,f=-13200 11400 10800 12000 10200 9000 11200 9600 -8000;,A=1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,;,0.0000 1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000;,0.0000,0.0000,1.0000 0.0000,0.0000,1.0000 0.0000,0.0000,1.0000;,-11000.0000 0.0000,0.0000,-9500.0000 0.0000,0.0000,-9000.0000 0.0000,0.0000,;,0.0000-8000.0000 0.0000,0.0000,-6800.0000 0.0000,0.0000,-6000.0000 0.0000;,0.0000,0.0000,-14000.0000 0.0000,0.0000,-12000.0000 0.0000,0.0000,-10000.0000;,b=100 300 200-190000-130000-350000;,lb=0.0000 0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,;,代入求解函数 ,即可得到求解结果。,线性规划,还有其他的几种调用函数形式,可在,Matlab,帮助中查找,LP,或者,LINPROG,的帮助说明。,Help,LINPROG,
展开阅读全文