资源描述
数学建模课程设计报告书
生产方案安排
摘要
随着企业的不断发展,企业内部的生产计划有各种不同的情况,企业根据本企业内部的资源与市场情况的调察,根据市场需要,资源的条件限制,不断调整生产需要,使得生产获得最大总售价与利润,使得企业得以生存发展。工厂生产的根本目的就是获取最大的利益,合理的安排生产方案才可以获取最大利润的前提。本文通过各个问题给出的决策变量,逐一对各个问题进行目标函数的求解,并且对问题进行了合理性的假设,根据已知约束条件,目标函数,建立模型。模型的建立与求解基本用到了数学规划模型的方法。问题一到问题五的模型建立都用到了同一种方法,只是改变了它们的约束条件,而问题六用到了两种模型进行求解,分别是LP子模型与0-1变量的整数规划模型。建立各个问题的模型,再运用LINGO软件进行求解,所解出来的结果是全局最优解。运用线性规划模型求解,再用LINGO软件进行求解,显得方便快捷,从而很快的算出获得利润的最大值。为安排生产方案提供了很好的基础条件。节省资金与人力,不耽误生产所预定的时间。
关键词:数学规划,整数规划,最优解,决策变量,目标函数,利润最大,LINGO软件
一、问题重述
随着经济的不断发展,现代各种各样的企业都自己建立工厂生产本企业的特色产品。
某工厂生产A,B,C,D,E五种产品,每种产品需要单位消耗甲,乙,丙三种原料和各产品的单价如下表所示,其中甲原料限额600公斤,乙原料限额500公斤,丙原料限额300公斤,已知某厂生产有关参数如下表格:
单位消耗
产品
原料
A B C D E
限额
(公斤)
甲
乙
丙
0.1 0 0.2 0.3 0.1
0.2 0.2 0.1 0 0.3
0 0.3 0 0.2 0.1
600
500
300
单价(元)
4 3 6 5 8
(1)求最优生产方案;
(2)根据市场情况,计划A至少生产500件,求相应生产方案;
(3)因E滞销,计划停产,求相应生产方案;
(4)根据市场情况,限定C不超过1640件,求相应生产方案;
(5)若限定原料甲需剩余至少50公斤,求相应生产方案;
(6)若生产A则至少生产800件,若生产B则至少生产200件,求相应生产方案。(注意:第(6)至少两种模型与解法)
由生产方案生产有关参数及表格中数据和问题可以知,。本题要解决的问题在各个问题的原料的约束条件下,如何安排产品A、B、C、D、E的生产,即要求安排最优的生产方案,使该厂的总售价最大。
二、 问题分析
生产方案安排,这个优化问题的目标是使总售价最大,要做的决策是生产计划安排,即A、B、C、D、E产品如何安排生产使得总售价最大,产品生产受到原料的限制,原料的加工能力。按题目所给,将决策变量,目标函数和约束条件用数学符号来表示。生产一件产品A,单位消耗甲、乙、丙原料分别为0.1、0.2、0公斤;生产一件产品B,单位消耗甲、乙、丙原料分别为0、0.2、0.3公斤; 生产一件产品C,单位消耗甲、乙、丙原料分别为0.2、0.1、0公斤;生产一件产品D,单位消耗甲、乙、丙原料分别为0.3、0、0.2公斤; 生产一件产品E,单位消耗甲、乙、丙原料分别为0.1、0.3、0.1公斤.而原料甲的可以用来生产的量最多有600公斤,乙原料最多有500公斤可以用来生产,丙原料最多有300公斤用来生产。并且一件产品A、B、C、D、E的卖出的单价分别4元、3元、6元、5元、8元
这个优化问题的目标是使工厂销售收入达到最大,我们做的决策是生产方案安排,即生产产品A、B、C、D、E分别用多少原料甲, 生产产品A、B、C、D、E分别用多少原料乙,生产产品A、B、C、D、E分别用多原料丙,决策受到的限制有,各种原料的供应额,产品的价格,这是一个线性规划问题。
三、模型假设
1、 假设将该模型理想化,忽略生产过程中有可能出现的问题,不考虑原料剩余问题,只考虑最大总售价问题。假设在生产设备正常工作,工厂正常生产条件下所建立的数学模型。根据问题的的条件限制
2、符号设定:
设W为最大总售价,生产五种产品A、B、C、D、E的数量分别件,且所取的件数都是整数,因此 均为整数。
四、模型建立
根据题目所给的六个问题,及所给的条件,分别建立如下6个模型
模型1
由问题假设知道,生产产品A、B、C、D、E数量分别为件。
约束条件:生产件产品A,产品A所消耗甲原料是公斤,消耗乙原料是公斤;生产件产品B,产品B所消耗乙原料是公斤,消耗丙原料是公斤;生产件产品C,产品C所消耗甲原料是公斤,消耗乙原料是公斤;生产件产品D,产品D所消耗甲原料是公斤,消耗丙原料是公斤;生产件产品E,产品E所消耗甲原料是公斤,消耗乙原料是公斤,消耗丙原料是公斤。用甲、乙、丙原料来生产产品A、B、C、D、E的原料最多分别600公斤,500公斤,300公斤。
生产件A产品,卖出的单价4元每件,则A产品总价为,生产件B产品,单价3元每件,则产品B的总价为;生产件C产品,单价6元每件,则C产品总价为;生产件D产品,单价5元每件,则D产品总价为;生产件E产品,单价8元,则E产品总价为。则最大的总售价就是把五个产品的总价相加起来。
目标函数:A产品总售价为,产品B的总售价为,C产品总售价为,D产品总售价为,E产品总售价为则容易得出五个产品的总售价是元。由此得出基本模型:
s.t
模型2
约束条件:根据市场情况,产品A至少要生产500件,件。就是在模型1的基础上,增加条件,其他条件不变。
目标函数:A产品总售价为,产品B的总售价为,C产品总售价为,D产品总售价为,E产品总售价为则容易得出五个产品的总售价是元。由此得出基本模型:
s.t
模型3
约束条件:因为E产品滞销,计划停产了,因此不生产E产品,E产品也不消耗原料,于是E产品的总销售额为0。目标函数:
s.t
模型4
由于产品C的生产数量不得超过1640件,因此在模型1的基础上增加约束条件.目标函数仍为。
模型5
我们从题目上知道第5问的约束条件是限定原料甲需要用来生产五种产品后需剩余至少50公斤,则生产五种产品总共需要的甲原料最多为550公斤。即。则模型如下:
目标函数
约束条件
模型6
若生产A产品,则A产品至少生产800件,即件;若生产B产品,则B产品最少生产200件,即件。假设当时工厂同时生产这两种产品或者生产这两种产品中的一种,或者都不生产产品A、B的情况,即。但产品C,D,E同时生产。即。
(6-0)
解法一 用线性规划模型中的LP模型来求解,分解成多个LP子模型
即在(6-0)的基础上把式(*)中的约束条件改为,并分解为如下三种情况:
(1-1)
(1-2)
(1-3)
(1-4)
并且
建立的模型,式子(6-0)与(1-1)构成第一种情况,即若A产品至少生产800件,B产品不生产的情况;式子(6-0)与(1-2)构成第二种情况,即若A产品不生产的,B产品至少生产200件的情况;式子(6-0)与(1-3)构成第三种情况,即A,B产品都不生产的情况;④产品A,B同时生产的情况。上述四种情况中,C,D,E产品可能生产也可能不生产的。
解法二 引入0~1变量,化为整数规划
设只取0,1。式子(6-0)的基础上把(*)式中的约束条件表示 (2-1)
其中M为相当大的整数。式子(6-0)与(2-1)构成该解法的模型。
五、模型求解
模型1求解 用软件LINGO求解,把目标函数与及约束条件输入LINGO,如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=300;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
用LINGO运行出结果:
Global optimal solution found.
Objective value: 22000.00
Extended solver steps: 0
Total solver iterations: 4
Variable Value Reduced Cost
X1 0.000000 -4.000000
X2 0.000000 -3.000000
X3 2600.000 -6.000000
X4 0.000000 -5.000000
X5 800.0000 -8.000000
Row Slack or Surplus Dual Price
1 22000.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 220.0000 0.000000
由上述程序的运行出的结果是模型的全局最优解(Global optimal solution),最优值为22000,最大总售价为22000元,迭代次数为4次。这个线性规划的最优解为时,即生产C产品2600件,E产品生产800件。而变量对应的“Reduced Cost”的含意是当从0开始每增加一个单位,最优的目标的函数增加4,其他依次类推。而 “Slack or Surplus”列对应的意思是这三种原料J(甲),Y(乙),B(丙)在最优解下是否有剩余,从中知道丙原料有220公斤剩余。“Dual Price”是影子价格。
模型2的求解
当把模型2的式子输入LINGO时可以运行出如下结果:
Global optimal solution found.
Objective value: 21000.00
Extended solver steps: 0
Total solver iterations: 3
Variable Value Reduced Cost
X1 500.0000 -4.000000
X2 0.000000 -3.000000
X3 2500.000 -6.000000
X4 0.000000 -5.000000
X5 500.0000 -8.000000
Row Slack or Surplus Dual Price
1 21000.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 250.0000 0.000000
5 0.000000 0.000000
由得出的结果是模型的全局最优解,最优值为21000,最大总售价为21000元,迭代次数为3次。这个线性规划的最优解为时,即生产A产品生产500件,C产品需要生产2500件,E产品需要生产500件。而 “Slack or Surplus”列对应的意思是这三种原料J(甲),Y(乙),B(丙)在最优解下是否有剩余,数据中知道原料丙有250公斤剩余.
模型3的求解
同样把模型3的目标函数以及约束条件输入软件中得到:
Global optimal solution found.
Objective value: 21000.00
Extended solver steps: 0
Total solver iterations: 2
Variable Value Reduced Cost
X1 0.000000 -4.000000
X2 1000.000 -3.000000
X3 3000.000 -6.000000
X4 0.000000 -5.000000
X5 0.000000 0.000000
Row Slack or Surplus Dual Price
1 21000.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 0.000000 0.000000
由上数据得出的结果在限定E产品滞销,E产品计划停产时,模型的全局最优解,最优值为21000,最大总售价为21000元,迭代次数为2次。这个线性规划的最优解为时,即当安排生产B产品生产1000件,C产品需要生产3000件时,总售价最大。而 “Slack or Surplus”列对应的的这三种原料J(甲),Y(乙),B(丙)在最优解下是没有剩余。
模型4的求解
第四问的模型同样把模型4的式子输入求出如下结果:
Global optimal solution found.
Objective value: 21465.00
Extended solver steps: 0
Total solver iterations: 6
Variable Value Reduced Cost
X1 0.000000 -4.000000
X2 0.000000 -3.000000
X3 1640.000 -6.000000
X4 533.0000 -5.000000
X5 1120.000 -8.000000
Row Slack or Surplus Dual Price
1 21465.00 1.000000
J 0.1000000 0.000000
Y 0.000000 0.000000
B 81.40000 0.000000
5 0.000000 0.000000
当安排生产产品时,即生产产品C是1640件时,D为533件,E产品1120件,是全局变量的最优解,总售价为21465元,甲原料剩余0.1公斤,丙剩余81.4公斤。
模型5的求解
将第五问的程序输入LINGO求出结果
Global optimal solution found.
Objective value: 21000.00
Extended solver steps: 0
Total solver iterations: 4
Variable Value Reduced Cost
X1 0.000000 -4.000000
X2 0.000000 -3.000000
X3 2300.000 -6.000000
X4 0.000000 -5.000000
X5 900.0000 -8.000000
Row Slack or Surplus Dual Price
1 21000.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 210.0000 0.000000
当安排生产产品时,即安排生产产品C是2300件时,E产品900件,是全局变量的最优解,总售价为21000元,丙原料剩余210公斤。
模型6的求解
解法一:
针对情况:运行程序得出结果:
Global optimal solution found.
Objective value: 20400.00
Extended solver steps: 0
Total solver iterations: 2
Variable Value Reduced Cost
X1 800.0000 -4.000000
X2 0.000000 0.000000
X3 2440.000 -6.000000
X4 0.000000 -5.000000
X5 320.0000 -8.000000
Row Slack or Surplus Dual Price
1 20400.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 268.0000 0.000000
5 0.000000 0.000000
6 0.000000 3.000000
当即安排生产A产品800件,C产品2440件,E产品320件时,求得最大售价为20400元,
针对情况:运行程序得出结果:
Global optimal solution found.
Objective value: 21800.00
Extended solver steps: 0
Total solver iterations: 4
Variable Value Reduced Cost
X1 0.000000 0.000000
X2 200.0000 -3.000000
X3 2680.000 -6.000000
X4 0.000000 -5.000000
X5 640.0000 -8.000000
Row Slack or Surplus Dual Price
1 21800.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 176.0000 0.000000
5 0.000000 4.000000
6 0.000000 0.000000
当即安排生产A产品200件,B产品不生产,C产品2680件,E产品640件时,求得最大售价为21800元,
针对情况:运行程序得出结果:
Global optimal solution found.
Objective value: 22000.00
Extended solver steps: 0
Total solver iterations: 2
Variable Value Reduced Cost
X1 0.000000 0.000000
X2 0.000000 0.000000
X3 2600.000 -6.000000
X4 0.000000 -5.000000
X5 800.0000 -8.000000
Row Slack or Surplus Dual Price
1 22000.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 220.0000 0.000000
5 0.000000 4.000000
6 0.000000 3.000000
当,即安排生产C产品2600件,E产品800件时,产品A,B都不生产求得最大售价为22000元,
针对情况④:运行程序得出结果:
Global optimal solution found.
Objective value: 20200.00
Extended solver steps: 0
Total solver iterations: 3
Variable Value Reduced Cost
X1 800.0000 -4.000000
X2 200.0000 -3.000000
X3 2520.000 -6.000000
X4 0.000000 -5.000000
X5 160.0000 -8.000000
Row Slack or Surplus Dual Price
1 20200.00 1.000000
J 0.000000 0.000000
Y 0.000000 0.000000
B 224.0000 0.000000
5 0.000000 0.000000
6 0.000000 0.000000
当,即安排生产C产品2520件,E产品160件时,产品A,B都生产求得最大售价为20200元。
相比上述4种情况可以得出要使得总售价最大,则应该取第三种来安排生产,即安排生产C产品2600件,E产品800件时,产品A,B都不生产可求得最大售价为22000元,这就是第六问的最优解。
解法二
把解法二的公式输如,且在输入的最后要上0-1变量的限定语句:@bin(y1);@bin(y2);得出如下结果。
Linearization components added:
Constraints: 8
Variables: 2
Global optimal solution found.
Objective value: 22000.00
Extended solver steps: 0
Total solver iterations: 4
Variable Value Reduced Cost
X1 0.000000 0.000000
X2 0.000000 0.000000
X3 2600.000 -2.500000
X4 0.000000 -2.000000
X5 800.0000 -2.500000
Y1 0.000000 0.000000
M 0.000000 0.000000
Y2 0.000000 0.000000
Row Slack or Surplus Dual Price
1 22000.00 1.000000
J 0.000000 10.00000
Y 0.000000 15.00000
B 220.0000 0.000000
5 0.000000 0.000000
6 0.000000 0.000000
7 0.000000 0.000000
8 0.000000 0.000000
所求出的最优结果与第一种解法的最优结果一样。因此第六问的答案是均不生产产品A,B是,所卖出的总售价最大为22000元,丙原料剩余220公斤。引用上0-1变量可以更快的算出每种产品应该要生产的数目,就知道了如何安排生产。
六、结果分析和检验
上述各个问题的程序输出中,可以横容易的看出各个产品应该生产多少件,总售价最大以及原料的剩余量。当约束条件发生变化时,目标函数也会跟着改变,生产后原料为零的数值表示着在生产设备,能力,其他条件的情况下,原料都被完全的利用了,没有剩余。这种约束为紧约束。目标函数可以看做效益,成为紧约束的资源,,一旦增加,效益必然跟着增长。“ Dual Price”为影子价格,效益的增长可以看做资源的潜在价值,例如举模型6的解法二的结果为例,甲原料一公斤的影子价格为10元,乙原料的影子价格一公斤为15元,丙为0元。我们都知道产品都是一件一件的,没有小数,本文中的说又解法都注意到了这个问题。对目标函数系数变化的影响问题,我们针对模型1的程序进行了敏感性分析,所得出的结果与上述模型2的结果是一样的,说明在约束条件不变情况下,最优解的值也不变的。
七、 模型的优缺点讨论
我们都对上述问题的求解,觉得做得好的地方有几下方面:第一,考虑到了件数是整件数的,没有小数,因此用到了整数规划的解法来求解。第二,明确目标函数,知道要求省么。第三,对在整个生产过程中,假设到了其他因素不变,生产设备正常生产,除了题目所给的约束条件的变化外的定义。第四,在第六问的模型建立中考虑问题全面,都列出的所有可能出现的情况,并对列出的情况进行求解与相互比较,从而取总利益最大的方案,工产进行生产安排。模型缺点:没有考虑原料剩余后如何运用这些原料,使得工产获得更多的利益这个问题。
八、 推广和改进
任何生产,企业都需要提前对产品进行预算与评估,而预算中就包含有本模型的求法,算出企业获得最大收益的决策。因此本模型在企业的预算与评估过程中,占据着很重要的作用。这是一类利用线性规划求解最优解的问题,关键在于变量的合理假设,列出目标函数和约束条件,利用LINGO软件求解,并进行敏感性分析,如价值系数的改变对最优值的影响等。例如生产中确定下原料方案,使用原料最少,获得最高利润,最节省资源以及连续投资获得本利总和等等问题,都能够通过数学规划模型与运筹学的完美相结合来解决。与依赖于过去经验(经验论)解决面临的优化问题和依赖于做大量试验反复比较(试验论),数学优化模型具有明显的科学性与可行性。例如与试验论相比,优化模型不需要消耗很多的资金和人力。而数学规划模型可以节省资金人力。
九、参考文献
1.姜启源 谢金星 叶俊,数学模型,北京,高等教育出版社,2011年
13
附件
所用软件:LINDGO 数学编辑器
模型1输入LINGO的程序如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=300;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
模型2输入LINGO的程序如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=300;
x1>=500;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
模型3输入LINGO的程序如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4;
[J] 0.1*x1+0.2*x3+0.3*x4<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3<=500;
[B] 0.3*x2+0.2*x4<=300;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
模型4输入LINGO的程序如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=300;
x3<=1640;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
模型5输入LINGO的程序如下所示:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=550;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=300;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
end
模型6输入LINGO的程序如下所示:
解法一
情况的程序:
model:
max=4*x1+3*x2+6*x3+5*x4+8*x5;
[J] 0.1*x1+0.2*x3+0.3*x4+0.1*x5<=600;
[Y] 0.2*x1+0.2*x2+0.1*x3+0.3*x5<=500;
[B] 0.3*x2+0.2*x4+0.1*x5<=
展开阅读全文