MATLAB在线性规划中的应用.docx
- 文档编号:1390260
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:11
- 大小:154.63KB
MATLAB在线性规划中的应用.docx
《MATLAB在线性规划中的应用.docx》由会员分享,可在线阅读,更多相关《MATLAB在线性规划中的应用.docx(11页珍藏版)》请在冰豆网上搜索。
MATLAB在线性规划中的应用
MATLAB在线性规划中的应用
摘要
在各类经济活动中,经常遇到这样的问题:
在生产条件不变的情下,如何通过统筹安排,改进生产组织或计划,合理安排人力、物力资源,组织生产过程,使总的经济效益最好。
这样的问题常常可以化成或近似地化成所谓的“线性规划”(LinearProgramming,简记为LP)问题。
线性规划是应用分析、量化的方法,对经济管理系统中的人、财、物等有限资源进行统筹安排,为决策者提供有依据的最优方案,以实现有效管理。
利用线性规划我们可以解决很多问题。
如:
在不违反一定资源限制下,组织安排生产,获得最好的经济效益(产量最多、利润最大、效用最高)。
也可以在满足一定需求条件下,进行合理配置,使成本最小。
同时还可以在任务或目标确定后,统筹兼顾,合理安排,用最少的资源(如资金、设备、原材料、人工、时间等)去完成任务。
常规的手工解法复杂且运算量大,而MATLAB语言可以很好的处理线性规划问题,既能进行数值的求解,又能绘制有关线性图形,非常方便实用,利用其可以减少工作量,节约时间,加深理解,同样可以培养应用能力。
关键词:
线性规划 优化求解 MATLAB语言
一、线性规划问题的在实际中的应用
1、线性规划问题的在实际应用中的作用
任何资源都是有限的,如何通过分配有限的资源获得人们所期望的效果,在工农业生产、交通运输、资本增值等各项经济活动中,如何提高经济效益,做到耗费较少的人力物力财力,创造出较多的经济价值,这些问题涉及分配,而线性规划为最优分配提供了工具。
2、线性规划主要研究的两类问题
一是一项任务确定后,如何统筹安排,尽量做到用最少的人力物力资源去完成这一任务。
二是已有一定数量的人力物力资源,如何安排使用它们,使得完成任务最多。
常见的线性规划问题如:
运输问题,生产的组织与计划问题,合力下料问题,配料问题、布局问题、分派问题等。
2、MATLAB在线性规划中的应用
1.MATLAB在线性规划中的指令
线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog[1]对如下式描述的LP问题求解:
% minf'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(…)
2、相关说明
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’显示最终结果。
MaxFunEvals函数评价的最大允许次数。
Maxiter最大允许迭代次数。
TolX x处的终止容限。
[x,fval]=linprog(…)左端fval返回解x处的目标函数值。
[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beg,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解决线性规划问题的实例
对于给定的实际问题,首先是要建立线性规划问题[2]的数学模型,其次是求问题的最优解。
1、直接运用MATLAB编程计算求解线性规划问题
线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件可以是不等式也可以是等式,变量可以有非负要求也可以没有非负要求(称这样的变量为自由变量)。
为了避免这种由于形式多样性而带来的不便,规定线性规划的标准形式为
(1)
极小值模型
(2)
极大值模型
利用矩阵与向量记为
(3)
其中C和x为n维列向量,b为m维列向量,b≥0,A为m×n矩阵,m 如果根据实际问题建立起来的线性规划问题并非标准形式,可以将它如下化为标准形式: (1)若目标函数为 ,可将它化为 (2)若第i个约束为 ,可增加一个松驰变量 ,将不等式化为 ,且 0。 若第i个约束为ai1x1+…+ainxn bi,可引入剩余量 ,将不等式化为 ai1x1+…+ainxn-yi=bi,且yi 0。 (3)若xi为自变量,则可令 其中 、 0。 问题一、某牧场饲养一批动物,平均每头动物至少需要700g蛋白质,30g矿物质和100g维生素。 现有A,B,C,D,E五种饲料可供选用,每千克饲料的营养成分(单位: g)与价格(单位: 元/kg)如下表所示: 表1每千克饲料的营养成分(单位: g)与价格(单位: 元/kg) 蛋白质 矿物质 维生素 价格 A 3 1.0 0.5 0.4 B 2 0.5 1.0 1.4 C 1 0.2 1.2 0.8 D 6 2.0 2.0 1.6 E 12 0.5 0.8 1.6 试求能满足动物生长营养需求又最经济的选用饲料方案。 设配合饲料中,用A种饲料 单位,用B种饲料 单位,用C种饲料 单位,用D种饲料 单位,用E种饲料 单位,则配合饲料的原料成本函数,即决策的目标函数为Z。 考虑三种营养含量限制条件后,得这一问题的线性规划模型[3]如下 目标函数: (4) 约束条件为: (5) 编写M文件如下: c=[0.4;1.4;0.8;1.6;1.6]; %产生有五个元素的列向量c A=[-3,-2,-1,-6,-12;-1.0,-0.5,-0.2,-2.0,-0.5;-0.5,-1.0,-1.2,-2.0,-0.8]; %约束条件中的变量系数构成的矩阵A b=[-700;-30;-100]; %约束条件中的上下界构成的列向量 Aeq=[]; %没有等式约束 beq=[]; %没有等式约束 vlb=zeros(5,1); %生成一个五行一列的零矩阵 [x,fval,eval]=linprog(c,A,b,Aeq,beq,vlb) %调用linprog函数 可得到如下结果: Optimizationterminated. x= 224.7115 0.0000 0.0000 0.0000 2.1555 fval= 93.3333 从以上结果可以看出,买224.7115千克的A饲料,2.1555千克的E饲料,能满足动物生能满足动物生长营养需求又最经济,所用价钱为93.3333元。 问题二、某农场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)如何制订种植计划,才能使总产值最大 表2不同等级耕地种植不同作物的单产(单位: kg/hm2) I等耕地 II等耕地 III等耕地 水稻 11000 9500 9000 大豆 8000 6800 6000 玉米 14000 12000 10000 首先根据题意建立线性规划模型(决策变量设置如表2所示,表中 表示第 种作物在第j等级的耕地上的种植面积。 ): 表3 作物计划种植面积(单位: hm2) I等耕地 II等耕地 III等耕地 水稻 大豆 玉米 约束方程[4]如下: 耕地面积约束: (6) 最低收获量约束: (7) 非负约束: (1)追求总产量最大,目标函数为: (8) (2)追求总产值最大,目标函数为: (9) 根据求解函数linprog中的参数含义,列出系数矩阵,目标函数系数矩阵,以及约束条件等。 这些参数中没有的设为空。 譬如,当追求总产量最大时,只要将参数 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-35
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 线性规划 中的 应用