基于线性规划的生产管理及应用
——存货分析管理模型
前言:线性规划是运筹学的重要分支,自1947年丹捷格(G.B.Dantzig)提出了一般线性规划问题的求解方法——单纯性法之后,线性规划在理论上趋向成熟,在实际应用中日益广泛与深入。特别是在电子计算机处理成成千上万个约束条件和决策变量的线性规划的问题之后,线性规划的适用领域更为广泛了。从解决技术问题的最优化设计到工业、农业、商业、交通运输业、军事、经济计划和管理决策等领域均可以发挥作用。它已是现代科学管理的重要手段之一。
一、           问题的提出
在生产管理和经营活动中经常提出一类问题,即如何合理地利用有限的人力、物力、财力等资源以便得到很好的经济效果。下面通过一个简单的实例做简单的介绍。
1、实例
某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需要的设备台时数及1、2两种原材料的消耗,如下表:

 
2A
3B
 
设备
1
2
8(台时)
原材料 1
4
0
16( kg)
原材料 2
0
4
12( kg)
 
该工厂每生产一件A产品可获利2元,每生产一件B产品可获利3元,为应如何安排生产计划可使该工厂获利最多?
2、创建该问题的管理模型
  假定X1,X2分别表示在计划期内产品A、B的产量,因为设备的有效台时为8,这是一个限产产量的条件,所以在确定产品A、B的产量时要考虑不超过设备的有效台时数,即可用不等式:
X1+2X2<=8
同理,因原材料1、2的限量可以用如下不等式:
4X1+0X2<=16
0X1+4X2<=13
该工厂的目标是在不超过有限资源限量的条件下,如何确定产量X1,X2的产量已得到最大的利润。若用Z表示利润,则 Z=2X1+3X2。综上所述,该计划问题可用数学模型表示为:
目标函数: MAX   Z=2X1+3X2
满足约束条件: X1+2X2<=8
4X1+0X2<=16
0X1+4X2<=13
X1 X2>=0
二、            线性规划的一般管理模型
从上面的例子可以看到,这是个最优化的问题,下就这类问题的一般管理模型做如下说明:
1)、每一个问题均有一组决策变量(X1,X2,……Xn)表示一个方案,这组决策变量的值就代表一个具体的方案,一般这些决策变量都是非负的;
2)、存在一定的约束条件,这些约束条件可以用一组线性等式或不等式来表示;
3)、都有一个要求导到的目标,它可用决策变量的线性函数(成为目标函数)来表示。
满足以上三个条件的数学管理模型称为线性规划的数学模型,其一般形式为:
目标函数:           MAX(MIN) Z=C1X1+C2X2+ +CnXn             1.1
满足的约束条件:
A11X1+A12X2+ +A1nXn<=(=,>=)B1           
A21X1+A22X2+ +A2nXn<=(=,>=)B2                1.2
……………………………………
Am1X1+Am2X2+ +AmnXn<=(=,>=)Bm
X1 X2 ,… Xn>=0                                               1.3
在线性规划的一般管理模型中,方程1.1称为目标函数;1.2、1.3成为约束条件;1.3也称为变量的非负约束条件。
为更好的理解上述管理模型,可用矩阵表示如下:
   MAX Z=CX
     AX=B
        X>0
其中        A11,A12 A1n
A =   A21,A22 A2n
……………
Am1,Am2 Amn
 
                    B1
    B=          B2
                   
                   Bm
                    X1
    X=              X2
                   
                   Xm
 
C= C1 C2 Cn
上述称为:
A为约束条件的mXn维系数矩阵,
B 为资源向量;
C 为价值向量;
X 为决策变量向量。
三、            存货分析管理模型——配套性分析
1、            问题的提出
企业为扩大生产规模或抢占市场资源加大关键物料的采购量,一段时间的生产与运营后,因采购资源的不配套性,生产的不平衡性,质量问题等原因提出这样一个问题,这些关键资源的原材料存货与企业的产品配套性如何?
2、            管理模型建立
根据上述提出的问题并结合线性规划数学模型,必须回答如下几个问题
a、企业内存物料货有哪些,这些物料的当前库存量是多少?解决B资源向量的问题。
b、企业内主要生产哪些产品?解决X决策变量的问题。
c、这些产品的产生的效益如何分配?解决C价值向量的问题。
d、这些资源在这些产品的单件用量是多少?A约束条件mXn矩阵的问题。
3、模型建立的具体步骤
步骤一、确定本次存货分析的资源向量;同过分析,企业内正常量产车用的物料共计:其中A类物资()种,B类物资()种,C类物资()种,因A类物料占用了存货资金的%,故本次分析仅针对A类物资,本模型的为说明问题,A类部品中仅以进口件做实例分析。通过上述原则确定本次分析的物料及库存量确定见下表:

NO.
ITEM
DESCRIPTION
qty_on_hand
1
07020-00000
油杯 M10X1
15564
2
07020-00900
油杯 M10X1
7723
3
07Y-02-00000
发动机
133
4
07Y-11-11000
主泵
209
5
07Y-11-12000
齿轮泵
248
6
07Y-12-10000
主阀
258
7
07Y-21-10000
回转马达及减速机
102
8
07Y-34-10000
行走控制阀
290
9
07Y-35-10000
左操纵
275
10
07Y-35-20000
右操纵
268
11
07Y-46-10000
行走马达及减速机
265
12
07Y-84-21000
电磁比例减压阀
196
13
08L-03-10000
发动机
25
14
119802-55700
柴油预滤器
520
15
22Y-11-10000
主泵
100
16
22Y-12-10000
主阀
67
17
22Y-21-10000
回转马达及减速机
100
18
22Y-34-10000
行走控制阀
489
19
22Y-35-10000
右操纵
436
20
22Y-35-20000
左操纵
437
21
22Y-46-10000
行走马达及减速机
655
22
230-11-10000
主泵
201
23
23Y-12-10000
主阀
241
24
23Y-21-10000
回转马达及减速机
91
25
25Y-46-10000
驱动马达及减速机
194
26
6BTAA-5.9-C178
发动机
615
27
J160-03A-050400
柴油滤芯
1815
28
J160-03A-051000
发动机机油滤芯
1767
29
J213-03A-010000
发动机
350
30
J213-21A-010000
回转马达及减速机
58
31
J213-24A-020000
主泵
19
32
J213-25A-010000
KMX13R主阀
44
33
J213-34A-050000
行走控制阀
83
34
J213-35A-010000
右操纵手柄
86
35
J213-35A-020000
左操纵手柄
85
36
J213-41B-010000
驱动马达及减速机
75
37
J213-81A-090000
直线行走信号阀
84
38
J213-89A-020000
梭阀
523
39
J221-03A-040000
发动机
1306
40
J221-21A-100000
回转马达与减速机
278
41
J221-24A-020000
主泵
293
42
J221-25A-100000
主阀
84
43
J221-34A-030000
行走控制阀
539
44
J221-35A-010000
右操纵
764
45
J221-35A-020000
左操纵
755
46
J221-41A-100000
驱动马达与减速机
574
47
J227-24A-100000
主泵
54
48
J233-03A-070000
发动机
835
49
J233-21A-100000
回转马达及减速机
182
50
J233-21B-100000
回转马达及减速机
46
51
J233-24A-010000
主泵
194
52
J233-24B-010000
主泵
39
53
J233-25A-100000
主阀
85
54
J233-25B-100000
主阀
1
55
J233-41A-100000
行走马达及减速机
3
56
J233-41B-100000
行走马达及减速机
147
57
J233-41C-100000
行走马达及减速机
51
58
J233-82A-010000
动臂优先阀
133
59
J236-21A-100000
回转马达
28
60
J236-24A-100000LS
主泵
100
61
J236-41C-100000LS
行走马达及减速机
22
62
VZ02360-9470
927回转优先阀
102
63
Y160-03A-050000
发动机
737
64
Y160-21A-010000
回转马达及减速机
223
65
Y160-24A-030000
主泵
233
66
Y160-24B-030000
主泵
2
67
Y160-25A-010000
主阀
41
68
Y160-25B-100000
主阀
2
69
Y160-34A-060000
踏板阀
251
70
Y160-34A-070000
推土铲先导阀
594
71
Y160-41A-010000
行走马达及减速机
455
72
Y160-84B-060000
先导阀组
2
73
Y168-92A-020000
水温传感器
522
74
Y236-25A-010000
主阀
34
由此可得到资源向量:
B=[15564,7723,133,209,248,258,102,290,275,268,265,196,25,520,100,67,100,489,436,437,655,201,241,91,194,615,1815,1767,350,58,19,44,83,86,85,75,84,523,1306,278,293,84,539,764,755,574,54,835,182,46,194,39,85,1,3,147,51,133,28,100,22,102,737,223,233,2,41,2,251,594,455,2,522,34]
步骤二、确定决策变量,即确定本次存货要与量产车的那些机型配套,经过数据搜集与调研,得出结论详见下表:
表1——量产产品线(决策变量)

NO.
产品型号
决策变量
1
906D-20-ST
x1
2
907D-00-ST
x2
3
908C-20-ST
x3
4
913C-45-DB
x4
5
913D-00-DM
x5
6
921C-24-DB
x6
7
921D-00-ST
x7
8
922C-00-DM
x8
9
924C-10-DM
x9
10
927D-00-ST
x10
11
933D-00-DM
x11
12
933D-00-HG
x12
13
933D-00-ST
x13
14
936C-00-DG
x14
15
936C-00-DM
x15
16
936C-00-HG
x16
17
936C-00-ST
x17
18
936D-00-ST
x18
由此得到目标函数的决策向量:
             X1
    X=       X2
           …
               X18
步骤三、确定价值向量C,价值向量的确定方法有如下几种
① 经验系数法
② 头脑风暴法
③ 最小二乘法
④ 分布统计法
可以将上述几种方法混合使用。
该模型采用的是经验系数法,介绍如下:
假设2011年的产品销售实际如下表:

NO.
产品型号
销售台量
价值系数
1
906D-20-ST
1483
14.83
2
907D-00-ST
1125
11.25
3
908C-20-ST
1222
12.22
4
913C-45-DB
338
3.38
5
913D-00-DM
1217
12.17
6
921C-24-DB
1987
19.87
7
921D-00-ST
66
0.66
8
922C-00-DM
621
6.21
9
924C-10-DM
856
8.56
10
927D-00-ST
72
0.72
11
933D-00-DM
232
2.32
12
933D-00-HG
169
1.69
13
933D-00-ST
235
2.35
14
936C-00-DG
94
0.94
15
936C-00-DM
109
1.09
16
936C-00-HG
37
0.37
17
936C-00-ST
28
0.28
18
936D-00-ST
109
1.09
∑合计:
 
10000
100
计算方法如下:   
Ki
Ci=  18 *100
      ∑Ki
 i=1
C1=1483/10000*100=14.83
依次类推可得到附表1的价值向量的结果
由此可得到目标函数的价值向量:
C=[14.83,11.25,12.22,3.38,12.17,19.87,0.66,6.21,8.56,0.72,2.32,1.69,2.35,0.94,1.09,0.37,0.28,1.09]
步骤四、确定系数矩阵A,即这些物料(资源)在这些产品上的单件用量是多少?
通过ADDON导出BOM交叉表如附表3——系数矩阵( 超链接
由此可得到决策系数矩阵
A1=[13,12,12,19,10,19,17,19,19,2,18,18,18,18,18,18,18,18]
A2=[0,2,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0]
A3=[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A4=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A5=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A6=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A7=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A8=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A9=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A10=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A11=[0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A12=[0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A13=[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A14=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A15=[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
A16=[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
A17=[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
A18=[0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,0]
A19=[0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,0]
A20=[0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,0]
A21=[0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0]
A22=[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
A23=[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
A24=[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]
A25=[0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0]
A26=[0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0]
A27=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A28=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A29=[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A30=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A31=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A32=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A33=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A34=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A35=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A36=[0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0]
A37=[0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
A38=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A39=[0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0]
A40=[0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0]
A41=[0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0]
A42=[0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0]
A43=[0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1]
A44=[1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1]
A45=[1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1]
A46=[0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0]
A47=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]
A48=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
A49=[0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0]
A50=[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
A51=[0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0]
A52=[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
A53=[0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0]
A54=[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
A55=[0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,2,0]
A56=[0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0]
A57=[0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0]
A58=[0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,1,0]
A59=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
A60=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
A61=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2]
A62=[0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0]
A63=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A64=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A65=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A66=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A67=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A68=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A69=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A70=[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A71=[2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A72=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A73=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
A74=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
A=[A1;A2;A3;A4;A5;A6;A7;A8;A9;A10;A11;A12;A13;A14;A15;A16;A17;A18;A19;A20;A21;A22;A23;A24;A25;A26;A27;A28;A29;A30;A31;A32;A33;A34;A35;A36;A37;A38;A39;A40;A41;A42;A43;A44;A45;A46;A47;A48;A49;A50;A51;A52;A53;A54;A55;A56;A57;A58;A59;A60;A61;A62;A63;A64;A65;A66;A67;A68;A69;A70;A71;A72;A73;A74]
四、            线性规划模型求解
1、利用EXCEL求解
下面以一、1的实例为例说明用EXCEL求解线性规划一般模型的方法与步骤:
 
第一步:建立线性规划的模型矩阵表:

 

 第二步:设置规划求解参数

 

 第三步:求解
 

 第四步:查看求解结果
1)运行结果报告

 2)敏感性报告

 3)极限值报告
 

  4)            最终结果汇总报告

 2、利用Matlab或lingo求解
1)            MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
2)            LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。
3)    利用matlab 求解存货模型
 
第一步:输入矩阵C
第二步:输入矩阵 B
第三步:输入矩阵 A
第四步:输入下界约束矩阵LB=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
第五步:输入[x,fval,exitflag]=linprog(C,A,B,[],[],LB)
运行结果如下:
Optimization terminated.
 
x =
 
   41.0000
   77.0000
   25.0000
    0.0000
   19.0000
   84.0000
    0.0000
   67.0000
   91.0000
   54.0000
   25.5000
    1.0000
    1.5000
    0.0000
    0.0000
    0.0000
    0.0000
   11.0000
fval = -4.9904e+003(4990.4)
exitflag =1
   第六步,输入K=A*X
运行后出现如下结果:
1.0e+003 *
    7.3550
    0.2420
    0.0770
    0.1020
    0.1020
    0.1020
    0.1020
    0.1020
    0.1020
     0.1020
    0.2040
    0.1020
    0.0250
         0
    0.0670
    0.0670
    0.0670
    0.2390
    0.2390
    0.2390
    0.3160
    0.0910
    0.0910
    0.0910
    0.1080
    0.1450
    0.0410
    0.0410
    0.0190
    0.0190
    0.0190
    0.0190
    0.0190
    0.0190
    0.0190
    0.0380
    0.0190
    0.0410
    0.1510
    0.0840
    0.0840
    0.0840
    0.0960
    0.1370
    0.1370
    0.1680
    0.0540
    0.0390
    0.0270
    0.0010
    0.0270
    0.0010
    0.0270
    0.0010
    0.0030
    0.0020
    0.0510
    0.0810
    0.0110
    0.0110
    0.0220
    0.0270
    0.0410
    0.0410
    0.0410
         0
    0.0410
         0
    0.0410
    0.1430
    0.0820
         0
    0.0410
    0.0110
将X代入上述附表1表格计算结果如下:
附表3

NO.
产品型号
决策系数
价值系数
求解结果
汇总效用
1
906D-20-ST
x1
14.83
41
608.03
2
907D-00-ST
x2
11.25
77
866.25
3
908C-20-ST
x3
12.22
25
305.5
4
913C-45-DB
x4
3.38
0
0
5
913D-00-DM
x5
12.17
19
231.23
6
921C-24-DB
x6
19.87
84
1669.08
7
921D-00-ST
x7
0.66
0
0
8
922C-00-DM
x8
6.21
67
416.07
9
924C-10-DM
x9
8.56
91
778.96
10
927D-00-ST
x10
0.72
54
38.88
11
933D-00-DM
x11
2.32
25
58
12
933D-00-HG
x12
1.69
1
1.69
13
933D-00-ST
x13
2.35
2
4.7
14
936C-00-DG
x14
0.94
0
0
15
936C-00-DM
x15
1.09
0
0
16
936C-00-HG
x16
0.37
0
0
17
936C-00-ST
x17
0.28
0
0
18
936D-00-ST
x18
1.09
11
11.99
合计:
 
 
 
  497
4990.38
将K代入约束条件计算库存使用量及余量表如下:
计算后的存货分析管理模型如下:(超链接)
分析
1)            企业内关键资源可以生产台量见附表3
2)            企业内关键资源存货金额为:233636777.18258
3)            按照最优化的组合生产后使用金额为:68688037.89867
4)            不配套资源库存资金占用为:233636777.18258
5)            最大差异配套为1:432
注:上述数据统计因部分数据源为模拟计算,故不反应真实的企业当前存货状态!
应用
1)            采购策略问题
2)            MPS排产问题
3)            存货构成分析
六、        总结
1、            线性规划模型中的价值向量如果用参数替代,则称为线性规划的“灵敏度”分析
2、            线性规划中的资源向量如果分时间段使用则是运筹学的另外一个分支——动态规划问题
七、        数据支撑参照《基于线性规划的存货分析管理模型.xlsx》