数学建模之线性规划问题与LINGO软件的使用

   日期:2020-07-15     浏览:103    评论:0    
核心提示:写了整整一天,希望能给做建模的小伙伴一点帮助。很用心,新手应该能看懂,其实理论知识也就那样,关键是自己动手实践,里面加了很多例题,希望小伙们们能看懂,我们建模国赛见。_若用35元可以买到1桶原料r,可否作这项投资?

线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。研究线性约束条件下线性目标函数的极值问题的数学理论和方法。英文缩写LP。

LINGO基本用法

不会LINGO的建议先看完这个再往下看

我们数学建模一般就是MATLAB,LINGO可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。所以我们在做规划问题时用LINGO。

基础知识

程序以“MAX”(或“MIN”)开始,表示目标最大化(或最小化)问题,后面直接写出目标函数表达式和约束表达式;
目标函数和约束之间用“ST”分开;(或用“s.t.”,“sunject to”)
程序以“END”结束( “END” 也可以省略)。
系数与变量之间的乘号必须省略
系统对目标函数所在行自动生成行名“1)”,对约束默认的行名分别是“2)” “3)”…,用户也可以自己输入行名;行名放在对应的约束之前。
书写相当灵活,不必对齐,不区分字符的大小写。
默认所有的变量都是非负的, 所以不必输入非负约束。
约束条件中的“<=” 及“>=”可分别用“<” 及“>”代替。
一行中感叹号“!”后面的文字为是注释语句,可增强程序的可读性,不参与模型的建立。
LINGO默认x,y变量大于0,若有其他条件必须要写。
例如
求解

程序

max   2x+3y
st    4x+3y<=10
       3x+5y<12
end

运行结果

具体结果的含义我们用下面的例题具体来说。

例1 加工奶制品的生产计划

问题引出:

对牛奶制品我们现有两种生产方式:

  1. 生产A产品:一桶牛奶,加工12小时,可生产3kgA,获利24元/kg。
  2. 生产B产品:一桶牛奶,加工8小时,可生产4kgA,获利16元/kg。

条件:共有50桶牛奶,480小时,由于生产水平不足最多只能加工100kgA。

要求制订生产计划,使每天获利最大

  1. 35元可买到1桶牛奶,买吗?若买,每天最多买多少?
  2. 可聘用临时工人,付出的工资最多是每小时几元?
  3. A的获利增加到 30元/kg,应否改变生产计划?

模型建立

设x桶牛奶用于生产A,y桶生产B。
则:

  • 获利:
    • A: 24 ∗ 3 ∗ x 24*3*x 243x
    • B: 16 ∗ 4 ∗ y 16*4*y 164y
    • 总: m a x z = 72 ∗ x + 64 ∗ y max \quad z=72*x+64*y maxz=72x+64y
  • 约束条件:
    • 原料: x + y ≤ 50 x+y\leq50 x+y50
    • 时间: 12 ∗ x + 8 ∗ y ≤ 480 12*x+8*y\leq480 12x+8y480
    • 加工能力: 3 ∗ x ≤ 100 3*x\leq100 3x100
    • 非负: x , y ≥ 0 x, y\geq0 x,y0

模型分析

  • 比例性:
    • x,y对目标函数的“贡献”与x,y的取值成正比
    • x,y对约束条件的“贡献”与x,y的取值成正比
  • 可加性:
    • x,y对目标函数的“贡献”与x,y的取值无关
    • x,y对约束条件的“贡献”与x,y的取值无关

模型求解

这里x1为x,x2为y


求解可以用MATLAB,当然这里我们用LONGO,因为LINGO比MATLAB好用

例题解

model:
max = 72*x1+64*x2;
[milk]   x1 + x2<50;
[time] 	 12*x1+8*x2<480;
[cpct]   3*x1<100;
end 

最终结果就是20桶用于生产A,30桶用于生产B,最优解为3360元

敏感度分析
打开方式:

  1. 把这个Dual Computation设置成prices & rangees
  2. 从这里打开command窗口,或者ctrl +1 打开
  3. 窗口中输入range回车

    就出现了这个。
    名词解释:
    Objective Coefficient Ranges:目标系数范围
    Coefficient:系数
    Increase:增加
    Decrease:下降
    这部分就是系数可以在加上可以增加的,减去可以减少,得到的两个值,在这两个值的范围内对结果无影响。
    下面那部分类似。

问题解析

  1. 35元可买到1桶牛奶,要买吗?
    • 要买,一桶利润增长48,35一桶还能多赚13
  2. 聘用临时工人付出的工资最多每小时几元?
    • 最多2块
  3. A的获利增加到 30元/kg,应否改变生产计划?
  • 分析可知X1的变化范围是(64,96),原来是24元每千克每桶获利72元,现在是30元/kg每桶获利90元。但是就是在(64,96)之间,所以不需要改变计划。
  1. 35元可买到1桶牛奶, 每天最多买多少?

例2 奶制品的生产销售计划 在例1基础上深加工

问题引出:

对牛奶制品我们现有两种生产方式:

  1. 生产A产品:一桶牛奶,加工12小时,可生产3kgA,获利24元/kg;如果对A奶制品再加工,每一千克需要花费2小时,三块钱可以加工成0.8kg产品C,并且获利44元/kg
  2. 生产B产品:一桶牛奶,加工8小时,可生产4kgA,获利16元/kg;如果对B奶制品再加工,每一千克需要花费2小时,三块钱可以加工成0.75kg产品C,并且获利32元/kg


条件:共有50桶牛奶,480小时,由于生产水平不足最多只能加工100kgA。

要求制订生产计划,使每天获利最大

  1. 30元可增加1桶牛奶,3元可增加1h时间,应否投资?现投资150元,可赚回多少?
  2. C,D的获利经常有10%的波动,对计划有无影响?
  3. 每天销售10kgA的合同必须满足,对利润有什么影响?

模型建立

设出售x1kgA, x2B, x3C , x4D,其中x5kgA加工成C,x6kgB加工成D
则:

  • 获利:
  • 约束条件:
    • 原料:
    • 时间:
    • 加工能力:
    • 附加约束:
    • 非负约束 : x 1.... x 6 ≥ 0 x1....x6\geq0 x1....x60

LINGO程序

model:
max = 24*x1+16*x2+44*x3+32*x4-3*x5-3*x6;
[milk]   (x1+x5)/3+(x2+x6)/4<50;
[time] 4*(x1+x5)+2*(x2+x6)+2*x5+2*x6<480;
[cpct]   x1+x5<100;
x3=0.8*x5;
x4=0.75*x6;
end 

运行结果

结果分析

  • 用于生产A的一共有x1+x5=24kg,所以生产A耗费了24/3=8桶牛奶。
  • 用于生产B的共有x2+x6=168kg,所以消耗了168/4=42桶牛奶。
  • x1的值为0,所以A产品一点没出售,生产后都接着用于生产C产品了,可以看到C产品是19.2kg(24*0.8=19.2)
  • x2共168kg,x4是0,也就是B产品没有进行再加工生成D
  • 利润3460.8(元)

问题解析

  1. 30元可增加1桶牛奶,3元可增加1h时间,应否投资?现投资150元,可赚回多少?
    • 看Dual Price,每增加一桶牛奶可以多赚37.9元,所以可买5桶,多赚189.5元
    • 每增加1小时,多赚3.26元,增加50小时可以多赚113元
    • 所以可以买成牛奶,比增加时间赚的多
  2. C,D的获利有10%的波动,对计划有无影响
    • C获利下降10%也就是x3*0.1=4.4,超出X3 系数允许范围3.16666
    • D获利上升10%,也就是x4*0.1=3.2.超出X4 系数允许范围2.02667
    • 所以有影响
  3. 每天销售10kgA的合同必须满足,对利润有什么影响?
    看到结果分析,Reduced Cost为差额成本,也就是每增加1单位x1会减少1.68元,现在固定要销售10kgA,所以利润减少16.8元

小结:

  • 由于产品利润、加工时间等均为常数,可建立线性规划模型.
  • 线性规划模型的三要素:决策变量、目标函数、约束条件.
  • 建模时尽可能利用原始的数据信息,把尽量多的计算留给计算机去做(分析例2的建模).
  • 用LINGO求解,输出丰富,利用影子价格和灵敏性分析可对结果做进一步研究.
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服