天然肠衣搭配问题
摘要
肠衣业是我国传统的民族加工业,具有悠久的历史,出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序,根据原材料的长度将原材料按指定的根数和总长度组装成成品(捆),但在实际组装的过程中要考虑到提高生产效率,为此公司先将所有的原料丈量好,建立一个原料表,根据原料表设计搭配方案,工人在使用时直接根据此方案生产来提高效率。但设计方案时要在公司提出的五个要求的前提下设计,即要满足公司的要求,因此这是一个目标规划问题。
针对要求1:在给定原材料的情况下,要求捆数越多越好。采用目标规划,目标函数(准则函数)是按各目标约束的正、负偏差变量和赋予相应的优先因子而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值。因此目标规划的目标函数只能是minzf(d,d),目标约束条件是每捆成品的总长度Li,总和总根数Ni,总。然后运用Matlab和Lingo求解,得出每捆成品的最优组合,在此基础上,结合表2给出的在原料一定的条件下,确定每类成品的最优捆数,满足了要求2;
针对要求3包含在目标约束条件中,即总长度的变化范围在88.5米和89.5米之间,总根数介于标准根数减1和标准根数之间;
针对要求4是对模型的优化,如果某种规格对应原料如果出现剩余,我们可以放在上一级使用,这样降低成本;
针对要求5如果不对我们的模型进行优化,则模型运行时间大于30分钟,不满足要求,在此基础上对模型进行优化,使其在规定的时间内给出搭配方案。
关键词:肠衣搭配、目标规划、优先级、矩阵、目标约束条件
一、 问题重述
天然肠衣(以下简称肠衣)制作加工是我国的一个传统产业,出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序。传统的生产方式依靠人工,边丈量原料长度边心算,将原材料按指定根数和总长度组装出成品(捆)。
原料按长度分档,通常以0.5米为一档,如:3-3.4米按3米计算,3.5米-3.9米按3.5米计算,其余的依此类推。表1是几种常见成品的规格,长度单位为米,∞表示没有上限,但实际长度小于26米。
为了提高生产效率,公司计划改变组装工艺,先丈量所有原料,建立一个原料表。表2为某批次原料描述:
方抓药”进行生产。
公司对搭配方案有以下具体要求:
(1) 对于给定的一批原料,装出的成品捆数越多越好;
(2) 对于成品捆数相同的方案,最短长度最长的成品越多,方案越好; (3) 为提高原料使用率,总长度允许有± 0.5米的误差,总根数允许比标准少1根;
(4) 某种规格对应原料如果出现剩余,可以降级使用。如长度为14米的原料可以和长度介于7-13.5米的进行捆扎,成品属于7-13.5米的规格;
(5) 为了食品保鲜,要求在30分钟内产生方案。
请建立上述问题的数学模型,给出求解方法,并对表1、表2给出的实际数据进行求解,给出搭配方案。
二、基本符号假设与说明
2.1基本假设
1、假设题中所给的数据真实可靠,数据误差在允许范围内;
2、假设在成品指定规格的前提下,公司的要求是具有优先级的即成品捆数要求最高,其次是方案要求较好,再次是尽可能使原料剩余较少,最后是方案产生时间较短;
3、假设在测量肠衣的长度时,肠衣的弹性可忽略不计; 4、测量肠衣时的误差可忽略不计;
5、假设所有的肠衣具有相同的质量,质量较好即具有较好的阻隔性、稳定的收缩率和较好的膜强度;;
2.2符号说明
Li,min:第i类成品的最短长度(i1,2,3); Li,max:第i类成品的最大长度(i1,2,3);
Li总:第i类成品中每捆成品的总长度(i1,2,3);
Ni,总:第i类成品中每捆成品的总个数(i1,2,3);
d:决策变量的函数;
d0:d的目标值;
d1:总长度超过目标长度的部分;
d1:总长度未达到目标长度的部分;
:总根数未达到目标根数的部分; d2
d3:装出的成品捆数;
:成品捆数相同时,最短长度最长的成品; d4
d5:某种规格对应原料出现剩余; d6:产生方案的时间在30分钟内; w1:总长度的权系数; w2:总根数的权系数;
,优先级为PnPn1; Pn:优先因子即优先等级(n1,2,3,4,5)A:表示表2原料根数的矩阵;
; Xij:表示A中的元素即分档后的每种原料的根数(i1,2,6;j1,28)B:表示分档原料长度的矩阵;
Bij:表示分档原料的长度。
三、问题分析
根据题目中的表1的信息可知,成品的天然肠衣可分为三类:第一类成品的最短长度L1,min为3米,最大长度L1,max为6.5米,每捆成品要数为20根,每捆总长度为89米;第二类成品的最短长度L2,min为7米,最大长度L2,mzx为13.5米,
每捆成品的根数为8根,每捆成品的总长度为89米;第三类成品的最短长度L3,min为14米,最大长度L3,max为26米,每捆成品的根数为5根,每捆成品的总长度为89米。
表2给出了分档后每种原料的根数,为了方便说明和解题,我们将表2当作一个68的一个矩阵A,矩阵A中的元素用Xij表示,Xij表示每类成品每捆中分档的每种原料的根数,如对于第一类成品而言:X11表示每捆中长度为3米的根数,X12表示每捆成品中长度为3.5米的根数等等依此类推,长度大于26的原料不存在,将其根数设为0,于是我们构造一个68的矩阵A。
根据表1对每捆成品的长度和根数的限定,针对不同的成品我们可以根据其长度和根数列出不等式,再用Lingo和Matlab求解,所得的解是一个可行域,可行域越大,解越多,所得的成品捆数就越多,满足公司的第一个要求;针对要求2我们可以这样理解,如有a,b两个解,所得的成品捆数相同,但a中最短长度的成品捆数有4个,b中成品捆数有5个,则b方案较好;要求3是我们列不等式的条件即总长度应该介于88.5和89.5之间,总根数介于标准根数减1和标准根数之间;要求4是我们对方案的调整即对我们模型的优化,某种规格对应原料如果出现剩余,可以降级使用。如长度为14米的原料可以和长度介于7-13.5米的进行捆扎,成品属于7-13.5米的规格;要求5是我们模型运行的时间的优化,使其运行时间小于30分钟即在食品未过期之前运行出方案。
四、模型的建立与求解
4.1模型的建立与求解
将表2看作是一个68的矩阵,矩阵元素Xij表示组成每捆成品的每类原料的根数,我们建立如下矩阵:
X11X21
A
X61B11BB21
B61
X12
X17
X22X27X62B12
X67B17
X18X28,其中X67,X680,因为无原料,根数为0。 X68
B1833.5
77.5B28
B682323.5
6.5
1010.5,为系数矩阵。
00
6
B22B27
B62
B67
根据我们假设的优先级,我们可知:满足成品规格是公司规定的,其优先级最高,故设为P其次是公司利润最大即要求成品捆数越多越好,我们设其优先1;级为P2;再次是方案要较好即成品捆数相同的条件下,要求最短长度最长的成
品最多,我们设其优先级为P3;接着应使公司原料浪费少,即出现某种规格的原料剩余量尽可能的少,降低公司成本,我们设其优先级为P4;最后要求方案产生时间尽量短,不影响食品保鲜,是对方案时间的一个限制,我们设其优先级为
P5,我们知道,目标规划的目标函数(准则函数)是按各目标约束的正、负偏差变量和赋予相应的优先因子而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值,因此目标规划的目标函数只能是minzf(d,d),即目标函数为:
minzP1(w1(d1d1)w2d2)P2d3P3d4P4d5Pd6
目标约束条件是每捆成品的总长度Li,总和总根数Ni,总。
4.1.1第一类成品模型
(1)满足第一类成品规格,总长度L1,总为89米,允许有± 0.5米的误差;总根数N1,总为20根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP(w(dd)wd111122)
由于第一类成品是由3-6.5米规格原料组成的,故我们可以将矩阵A,B中除3-6.5米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下:
X11XA21
X61B11BB21
B61
X12
X17
X22X27X62B12B22B62
X67B17B27B67
X18X11
0X28X680B1833.5
00B28
B6800
X12X1700
00
X180 0
66.500
00
目标约束条件为:
68
BXdd89;ijij11
i1j168
Xij20;i1j168
Xij19;
i1j1
X20,(i1,2,6,j1,2,8);i1j
(i1,2,6;j1,2,8)Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M8/:Length Number; level/1..6/:p,z,goal; variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 3 43 M2 3.5 59 M3 4 39 M4 4.5 41 M5 5 27 M6 5.5 28 M7 6 34 M8 6.5 21; enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
求得的结果如下:
依次对剩余根数运用上述模型,直到所有根数之和小于20或所有原料的长度总和小于89为止,经运算迭代8次,求得结果1如下表:
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,3成
品捆数为16,方案2,4,5成品捆数为18捆;所以在原料限定的情况下,我们认为方案2,4,5符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,我们要求成品数相同的方案具有:
max{d4};
由(1)可知方案2,4,5的成品数相同,但它们最短长度都是3米,方案
2用了40根3米的,其总长度为120米;方案4用了43根3米的,其总长度为129米;方案5用了36根3米的,其总长度为108米,故我们认为方案4较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
然后将剩余原料与上一级组合,得到新的成品,在第一类成品中,剩余原料表分别如上表所示,我们可以看出方案1剩余原料较少,其次是方案4。我们根据优先级目标,选择方案4作为我们第一类成品的方案。
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
由于我们用的是Lingo软件,运行出一个成品所需时间是不到10秒,我们
每个方案运行了八次,五个方案一共产生了87个成品,故产生第一类成品所需时间约为9分钟,满足题目要求。
4.1.2第二类成品模型
(1)满足第二类成品规格,总长度L1,总为89米,允许有± 0.5米的误差;总根数N1,总为8根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级均为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP1(w1(d1d1)w2d2)
与第一类成品类似,由于第二类成品是由7-13.5米规格原料组成的,故我们可以将矩阵A,B中除7-13.5米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下
0000
XXXX11121718XXXX21222728XX22X27X282100 A==X31X36
X61X62X67X680000
B11B21
B=B61
B12B17B22B27B62B67
0000
B1877.51010.5B28
0 =1113.50
B68
0000
目标约束条件为:
68
BijXijd1d189;i1j168
Xij8;i1j168
Xij7;
i1j1
X8,(i1,26,j1,2,8);ij
(i1,26,j1,2,8);Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M14/:Length Number; level/1..6/:p,z,goal;
variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 7 24 M2 7.5 24 M3 8 20 M4 8.5 25 M5 9 21 M6 9.5 23 M7 10 21 M8 10.5 18 M9 11 31 M10 11.5 23 M11 12 22 M12 12.5 59 M13 13 18 M14 13.5 25 enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
计算结果如下表格:
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,3,5
成品捆数为28,方案2品捆数为26捆,方案4捆数为25;所以在原料限定的情
况下,我们认为方案1,3,5符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,我们要求成品数相同的方案具有:
max{d4};
由(1)可知方案1,2,4的成品数相同,但它们最短长度的总长度分别为:
140米,128米和168米,故我们认为方案5较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
然后将剩余原料与上一级组合,得到新的成品,在第一类成品中,剩余原料表分别如上表所示,我们可以看出方案1剩余原料较少,其次是方案4。我们根据优先级目标,选择方案4作为我们第一类成品的方案。
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
由于我们用的是Lingo软件,运行出一个成品所需时间是不到10秒,我们
产生第二类成品所需时间约为14分钟,满足题目要求。
4.1.3第三类成品模型
与第一类和第二类成品模型相似。
(1)满足第二类成品规格,总长度L3,总为89米,允许有± 0.5米的误差;总根数N3,总为5根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级均为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP1(w1(d1d1)w2d2)
第三类成品是由14-26米规格原料组成的,故我们可以将矩阵A,B中除14-26米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下:
0000
XXXX11121718XX3738XX22X27X2821A==X41X42X47X48 X51X52X57X58X61X62X67X68X061X620
B11B21
B=B61
B12B17B22B27B62B67
0000
B181414.5B28=1515.51818.5
1919.52222.5B6802323.50
目标约束条件:
68
BXdd89;ijij11
i1j168
Xij5;i1j168
Xij4;
i1j1
X5,(i1,26,j1,2,8);ij
(i1,26,j1,2,8);Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M24/:Length Number; level/1..6/:p,z,goal; variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 14 35 M2 14.5 29 M3 15 39 M4 15.5 30 M5 16 42 M6 16.5 28 M7 17 45 M8 17.5 49
M9 18 50 …………………
enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
计算结果如下表格:长度单位:米
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,2,4
成品捆数为32,方案3,5成品捆数为31捆;所以在原料限定的情况下,我们
认为方案1,2,4符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,方案14 最短长度为14*16=224米,方案2的最短长度为14*35=490米,方案3的最短长度为14*35=490米,故方案1较好。
max{d4};
由(1)可知方案 和方案 的成品数相同,但它们最短长度的总长度分别为:
故我们认为方案较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
通过比较1,2,4方案 ,我们可知道2方案剩余原料最少,其次是1方案,但考虑到优先级,我们选方案1为本模型的方案
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
于我们用的是Lingo软件,本模型的运行时间为12分钟,满足要求。
4.1.4模型小结
针对三类成品,本文都采用目标规划,将公司提出的五个要求都转化为五个具有优先级别的目标,然后在利用目标约束条件列出不等式,用Lingo求解,得出本题的最优解;
五、模型优缺点
模型的优点:
1. 实用性强。整个过程都可以编制出完整的程序,只需要给出相关参数就可以得出结果。
2. 模型的正确性和稳定性好。根据模型计算出的数据和实验得到的都比较接近证明了模型是很合理的。
3. 计算公式较简洁,编程不复杂。
模型的缺点
1. 本文假设公司要求是具有一个的优先级别的,但实际中或许这们假设的优先级别并不合理。
2. 精确度不是很高。由于用Lingo求解,得出的结果并不是最优的,还要结合公司的要求加上自己的判断,有点繁琐。
六、参考文献
[1] 赵静、但琪,数学建模与数学实验(第3版),北京:高等教育出版社,2008.1
[2] MATLAB the Language of Technical Computing, Mathworks, Inc. 2004 [3] 张德丰,数值分析与应用,北京:国防工业出版社,2007.1
[4] 王国柱. 天然肠衣安全性影响因素及检验检疫措施[J]. 检验检疫科学, 2008,(06)
[5] 刘文斌,高逢结,俞忠民. 影响我国肠衣出口的因素及对策[J]. 中国动物检疫, 2009,(10)
[6] 陈士忠. 天然肠衣的优势[J]. 农产品加工, 2004,(04)
[7] 刘文斌, 高逢结, 俞忠民. 影响我国肠衣出口的因素及对策[J]. 中国动物检疫, 2009,(10)
[8] 张洪路, 周红翠. 优质猪肠衣的加工方法[J]. 农村百事通, 2006,(07) [9] 胡毓达,高校应用数学学报,1986年,1卷,1期 [10] 胡毓达,运筹学杂志,1986年,5卷,1期
[11] 李仲飞 汪寿阳.多目标规划的整体解[J].系统科学与数学 [12] Linear programming in hazardous waste management
[13] 胡毓达.多目标最优化的弱较多有效解类[J].运筹学杂志 [14] 优化建模与LINDO/LINGO软件
[15] 徐浩.LINGO软件在机械工程离散优化设计中的应用[J].机械研究与应用 [16] GeneAS:a robust optimal design, technique for mechanical component design
天然肠衣搭配问题
摘要
肠衣业是我国传统的民族加工业,具有悠久的历史,出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序,根据原材料的长度将原材料按指定的根数和总长度组装成成品(捆),但在实际组装的过程中要考虑到提高生产效率,为此公司先将所有的原料丈量好,建立一个原料表,根据原料表设计搭配方案,工人在使用时直接根据此方案生产来提高效率。但设计方案时要在公司提出的五个要求的前提下设计,即要满足公司的要求,因此这是一个目标规划问题。
针对要求1:在给定原材料的情况下,要求捆数越多越好。采用目标规划,目标函数(准则函数)是按各目标约束的正、负偏差变量和赋予相应的优先因子而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值。因此目标规划的目标函数只能是minzf(d,d),目标约束条件是每捆成品的总长度Li,总和总根数Ni,总。然后运用Matlab和Lingo求解,得出每捆成品的最优组合,在此基础上,结合表2给出的在原料一定的条件下,确定每类成品的最优捆数,满足了要求2;
针对要求3包含在目标约束条件中,即总长度的变化范围在88.5米和89.5米之间,总根数介于标准根数减1和标准根数之间;
针对要求4是对模型的优化,如果某种规格对应原料如果出现剩余,我们可以放在上一级使用,这样降低成本;
针对要求5如果不对我们的模型进行优化,则模型运行时间大于30分钟,不满足要求,在此基础上对模型进行优化,使其在规定的时间内给出搭配方案。
关键词:肠衣搭配、目标规划、优先级、矩阵、目标约束条件
一、 问题重述
天然肠衣(以下简称肠衣)制作加工是我国的一个传统产业,出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序。传统的生产方式依靠人工,边丈量原料长度边心算,将原材料按指定根数和总长度组装出成品(捆)。
原料按长度分档,通常以0.5米为一档,如:3-3.4米按3米计算,3.5米-3.9米按3.5米计算,其余的依此类推。表1是几种常见成品的规格,长度单位为米,∞表示没有上限,但实际长度小于26米。
为了提高生产效率,公司计划改变组装工艺,先丈量所有原料,建立一个原料表。表2为某批次原料描述:
方抓药”进行生产。
公司对搭配方案有以下具体要求:
(1) 对于给定的一批原料,装出的成品捆数越多越好;
(2) 对于成品捆数相同的方案,最短长度最长的成品越多,方案越好; (3) 为提高原料使用率,总长度允许有± 0.5米的误差,总根数允许比标准少1根;
(4) 某种规格对应原料如果出现剩余,可以降级使用。如长度为14米的原料可以和长度介于7-13.5米的进行捆扎,成品属于7-13.5米的规格;
(5) 为了食品保鲜,要求在30分钟内产生方案。
请建立上述问题的数学模型,给出求解方法,并对表1、表2给出的实际数据进行求解,给出搭配方案。
二、基本符号假设与说明
2.1基本假设
1、假设题中所给的数据真实可靠,数据误差在允许范围内;
2、假设在成品指定规格的前提下,公司的要求是具有优先级的即成品捆数要求最高,其次是方案要求较好,再次是尽可能使原料剩余较少,最后是方案产生时间较短;
3、假设在测量肠衣的长度时,肠衣的弹性可忽略不计; 4、测量肠衣时的误差可忽略不计;
5、假设所有的肠衣具有相同的质量,质量较好即具有较好的阻隔性、稳定的收缩率和较好的膜强度;;
2.2符号说明
Li,min:第i类成品的最短长度(i1,2,3); Li,max:第i类成品的最大长度(i1,2,3);
Li总:第i类成品中每捆成品的总长度(i1,2,3);
Ni,总:第i类成品中每捆成品的总个数(i1,2,3);
d:决策变量的函数;
d0:d的目标值;
d1:总长度超过目标长度的部分;
d1:总长度未达到目标长度的部分;
:总根数未达到目标根数的部分; d2
d3:装出的成品捆数;
:成品捆数相同时,最短长度最长的成品; d4
d5:某种规格对应原料出现剩余; d6:产生方案的时间在30分钟内; w1:总长度的权系数; w2:总根数的权系数;
,优先级为PnPn1; Pn:优先因子即优先等级(n1,2,3,4,5)A:表示表2原料根数的矩阵;
; Xij:表示A中的元素即分档后的每种原料的根数(i1,2,6;j1,28)B:表示分档原料长度的矩阵;
Bij:表示分档原料的长度。
三、问题分析
根据题目中的表1的信息可知,成品的天然肠衣可分为三类:第一类成品的最短长度L1,min为3米,最大长度L1,max为6.5米,每捆成品要数为20根,每捆总长度为89米;第二类成品的最短长度L2,min为7米,最大长度L2,mzx为13.5米,
每捆成品的根数为8根,每捆成品的总长度为89米;第三类成品的最短长度L3,min为14米,最大长度L3,max为26米,每捆成品的根数为5根,每捆成品的总长度为89米。
表2给出了分档后每种原料的根数,为了方便说明和解题,我们将表2当作一个68的一个矩阵A,矩阵A中的元素用Xij表示,Xij表示每类成品每捆中分档的每种原料的根数,如对于第一类成品而言:X11表示每捆中长度为3米的根数,X12表示每捆成品中长度为3.5米的根数等等依此类推,长度大于26的原料不存在,将其根数设为0,于是我们构造一个68的矩阵A。
根据表1对每捆成品的长度和根数的限定,针对不同的成品我们可以根据其长度和根数列出不等式,再用Lingo和Matlab求解,所得的解是一个可行域,可行域越大,解越多,所得的成品捆数就越多,满足公司的第一个要求;针对要求2我们可以这样理解,如有a,b两个解,所得的成品捆数相同,但a中最短长度的成品捆数有4个,b中成品捆数有5个,则b方案较好;要求3是我们列不等式的条件即总长度应该介于88.5和89.5之间,总根数介于标准根数减1和标准根数之间;要求4是我们对方案的调整即对我们模型的优化,某种规格对应原料如果出现剩余,可以降级使用。如长度为14米的原料可以和长度介于7-13.5米的进行捆扎,成品属于7-13.5米的规格;要求5是我们模型运行的时间的优化,使其运行时间小于30分钟即在食品未过期之前运行出方案。
四、模型的建立与求解
4.1模型的建立与求解
将表2看作是一个68的矩阵,矩阵元素Xij表示组成每捆成品的每类原料的根数,我们建立如下矩阵:
X11X21
A
X61B11BB21
B61
X12
X17
X22X27X62B12
X67B17
X18X28,其中X67,X680,因为无原料,根数为0。 X68
B1833.5
77.5B28
B682323.5
6.5
1010.5,为系数矩阵。
00
6
B22B27
B62
B67
根据我们假设的优先级,我们可知:满足成品规格是公司规定的,其优先级最高,故设为P其次是公司利润最大即要求成品捆数越多越好,我们设其优先1;级为P2;再次是方案要较好即成品捆数相同的条件下,要求最短长度最长的成
品最多,我们设其优先级为P3;接着应使公司原料浪费少,即出现某种规格的原料剩余量尽可能的少,降低公司成本,我们设其优先级为P4;最后要求方案产生时间尽量短,不影响食品保鲜,是对方案时间的一个限制,我们设其优先级为
P5,我们知道,目标规划的目标函数(准则函数)是按各目标约束的正、负偏差变量和赋予相应的优先因子而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值,因此目标规划的目标函数只能是minzf(d,d),即目标函数为:
minzP1(w1(d1d1)w2d2)P2d3P3d4P4d5Pd6
目标约束条件是每捆成品的总长度Li,总和总根数Ni,总。
4.1.1第一类成品模型
(1)满足第一类成品规格,总长度L1,总为89米,允许有± 0.5米的误差;总根数N1,总为20根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP(w(dd)wd111122)
由于第一类成品是由3-6.5米规格原料组成的,故我们可以将矩阵A,B中除3-6.5米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下:
X11XA21
X61B11BB21
B61
X12
X17
X22X27X62B12B22B62
X67B17B27B67
X18X11
0X28X680B1833.5
00B28
B6800
X12X1700
00
X180 0
66.500
00
目标约束条件为:
68
BXdd89;ijij11
i1j168
Xij20;i1j168
Xij19;
i1j1
X20,(i1,2,6,j1,2,8);i1j
(i1,2,6;j1,2,8)Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M8/:Length Number; level/1..6/:p,z,goal; variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 3 43 M2 3.5 59 M3 4 39 M4 4.5 41 M5 5 27 M6 5.5 28 M7 6 34 M8 6.5 21; enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
求得的结果如下:
依次对剩余根数运用上述模型,直到所有根数之和小于20或所有原料的长度总和小于89为止,经运算迭代8次,求得结果1如下表:
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,3成
品捆数为16,方案2,4,5成品捆数为18捆;所以在原料限定的情况下,我们认为方案2,4,5符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,我们要求成品数相同的方案具有:
max{d4};
由(1)可知方案2,4,5的成品数相同,但它们最短长度都是3米,方案
2用了40根3米的,其总长度为120米;方案4用了43根3米的,其总长度为129米;方案5用了36根3米的,其总长度为108米,故我们认为方案4较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
然后将剩余原料与上一级组合,得到新的成品,在第一类成品中,剩余原料表分别如上表所示,我们可以看出方案1剩余原料较少,其次是方案4。我们根据优先级目标,选择方案4作为我们第一类成品的方案。
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
由于我们用的是Lingo软件,运行出一个成品所需时间是不到10秒,我们
每个方案运行了八次,五个方案一共产生了87个成品,故产生第一类成品所需时间约为9分钟,满足题目要求。
4.1.2第二类成品模型
(1)满足第二类成品规格,总长度L1,总为89米,允许有± 0.5米的误差;总根数N1,总为8根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级均为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP1(w1(d1d1)w2d2)
与第一类成品类似,由于第二类成品是由7-13.5米规格原料组成的,故我们可以将矩阵A,B中除7-13.5米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下
0000
XXXX11121718XXXX21222728XX22X27X282100 A==X31X36
X61X62X67X680000
B11B21
B=B61
B12B17B22B27B62B67
0000
B1877.51010.5B28
0 =1113.50
B68
0000
目标约束条件为:
68
BijXijd1d189;i1j168
Xij8;i1j168
Xij7;
i1j1
X8,(i1,26,j1,2,8);ij
(i1,26,j1,2,8);Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M14/:Length Number; level/1..6/:p,z,goal;
variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 7 24 M2 7.5 24 M3 8 20 M4 8.5 25 M5 9 21 M6 9.5 23 M7 10 21 M8 10.5 18 M9 11 31 M10 11.5 23 M11 12 22 M12 12.5 59 M13 13 18 M14 13.5 25 enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
计算结果如下表格:
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,3,5
成品捆数为28,方案2品捆数为26捆,方案4捆数为25;所以在原料限定的情
况下,我们认为方案1,3,5符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,我们要求成品数相同的方案具有:
max{d4};
由(1)可知方案1,2,4的成品数相同,但它们最短长度的总长度分别为:
140米,128米和168米,故我们认为方案5较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
然后将剩余原料与上一级组合,得到新的成品,在第一类成品中,剩余原料表分别如上表所示,我们可以看出方案1剩余原料较少,其次是方案4。我们根据优先级目标,选择方案4作为我们第一类成品的方案。
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
由于我们用的是Lingo软件,运行出一个成品所需时间是不到10秒,我们
产生第二类成品所需时间约为14分钟,满足题目要求。
4.1.3第三类成品模型
与第一类和第二类成品模型相似。
(1)满足第二类成品规格,总长度L3,总为89米,允许有± 0.5米的误差;总根数N3,总为5根,允许比标准少1根。由于总长度与总根数具有相同的优先权,故设优先级均为P1,权重设为:w1w20.5,所以第一个目标函数为:
minzP1(w1(d1d1)w2d2)
第三类成品是由14-26米规格原料组成的,故我们可以将矩阵A,B中除14-26米规格的原料外其它原料的长度设为0,根数设为0,便于计算,设置后的矩阵A,B如下:
0000
XXXX11121718XX3738XX22X27X2821A==X41X42X47X48 X51X52X57X58X61X62X67X68X061X620
B11B21
B=B61
B12B17B22B27B62B67
0000
B181414.5B28=1515.51818.5
1919.52222.5B6802323.50
目标约束条件:
68
BXdd89;ijij11
i1j168
Xij5;i1j168
Xij4;
i1j1
X5,(i1,26,j1,2,8);ij
(i1,26,j1,2,8);Xij0,
运用Lingo求解,程序如下:
model:
!第一类成品搭配方案; sets:
Material/M1..M24/:Length Number; level/1..6/:p,z,goal; variable/1..8/:x;
s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c;
obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets !数据部分; data:
Material,Length,Number=M1 14 35 M2 14.5 29 M3 15 39 M4 15.5 30 M5 16 42 M6 16.5 28 M7 17 45 M8 17.5 49
M9 18 50 …………………
enddata
min=@sum(level:p*z); p(ctr)=1;
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j)));
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i
-262-
)=g(i));
@for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal));
End
计算结果如下表格:长度单位:米
(2)根据以上结果,在原料限定的情况下,我们的目标是:
max{d3};
即装出的成品捆数越多越好,根据我们的计算方案我们可知:方案1,2,4
成品捆数为32,方案3,5成品捆数为31捆;所以在原料限定的情况下,我们
认为方案1,2,4符合公司要求。
(3)对于成品捆数相同的方案,选择最短长度最长的成品的方案:即在满足(1)的条件下,方案14 最短长度为14*16=224米,方案2的最短长度为14*35=490米,方案3的最短长度为14*35=490米,故方案1较好。
max{d4};
由(1)可知方案 和方案 的成品数相同,但它们最短长度的总长度分别为:
故我们认为方案较好。
(4)某种规格对应原料如果出现剩余,可以降级使用即要求在满足(1)(2)(3)的情况下,尽量不出现剩余或出现剩余的规格较少,但在原料表一定的情况下出现某种规格原料剩余是不可避免的,所以我们的目标是:
min{d5};
通过比较1,2,4方案 ,我们可知道2方案剩余原料最少,其次是1方案,但考虑到优先级,我们选方案1为本模型的方案
(5)为了食品保鲜,要求在30分钟内产生方案即满足(1)(2)(3)(4)的情况下,要求我们方案产生时间尽的少,即:
min{d6};
于我们用的是Lingo软件,本模型的运行时间为12分钟,满足要求。
4.1.4模型小结
针对三类成品,本文都采用目标规划,将公司提出的五个要求都转化为五个具有优先级别的目标,然后在利用目标约束条件列出不等式,用Lingo求解,得出本题的最优解;
五、模型优缺点
模型的优点:
1. 实用性强。整个过程都可以编制出完整的程序,只需要给出相关参数就可以得出结果。
2. 模型的正确性和稳定性好。根据模型计算出的数据和实验得到的都比较接近证明了模型是很合理的。
3. 计算公式较简洁,编程不复杂。
模型的缺点
1. 本文假设公司要求是具有一个的优先级别的,但实际中或许这们假设的优先级别并不合理。
2. 精确度不是很高。由于用Lingo求解,得出的结果并不是最优的,还要结合公司的要求加上自己的判断,有点繁琐。
六、参考文献
[1] 赵静、但琪,数学建模与数学实验(第3版),北京:高等教育出版社,2008.1
[2] MATLAB the Language of Technical Computing, Mathworks, Inc. 2004 [3] 张德丰,数值分析与应用,北京:国防工业出版社,2007.1
[4] 王国柱. 天然肠衣安全性影响因素及检验检疫措施[J]. 检验检疫科学, 2008,(06)
[5] 刘文斌,高逢结,俞忠民. 影响我国肠衣出口的因素及对策[J]. 中国动物检疫, 2009,(10)
[6] 陈士忠. 天然肠衣的优势[J]. 农产品加工, 2004,(04)
[7] 刘文斌, 高逢结, 俞忠民. 影响我国肠衣出口的因素及对策[J]. 中国动物检疫, 2009,(10)
[8] 张洪路, 周红翠. 优质猪肠衣的加工方法[J]. 农村百事通, 2006,(07) [9] 胡毓达,高校应用数学学报,1986年,1卷,1期 [10] 胡毓达,运筹学杂志,1986年,5卷,1期
[11] 李仲飞 汪寿阳.多目标规划的整体解[J].系统科学与数学 [12] Linear programming in hazardous waste management
[13] 胡毓达.多目标最优化的弱较多有效解类[J].运筹学杂志 [14] 优化建模与LINDO/LINGO软件
[15] 徐浩.LINGO软件在机械工程离散优化设计中的应用[J].机械研究与应用 [16] GeneAS:a robust optimal design, technique for mechanical component design