天然肠衣搭配问题
一、摘要
肠衣加工企业对原材料应制定合理有效的方式来搭配,使得企业的收益最大化,同时基于保鲜的需要,也要求搭配方案能够尽可能快速。因此肠衣的搭配问题是个很有实际意义的研究课题。
在本问题中,给出了2组数据,我们需要根据这2组数据设计搭配的方案。显然,肠衣分配问题是一个整数规划问题。所以本文都采用Lingo软件进行编程求解,求解这个整数规划问题本文都选择单纯形法。
对于每一个题设的要求,我们都单独考虑。对于第一个问题:我们将问题分为3个小块,对于长度在[3,6.5]的长度,由于题设限制了一捆要求满足20根肠衣并且一捆最短要89米,所以我们通过构建线性方程组,来到满足条件的结果;对于其他长度的肠衣,我们也是类似于[3,6.5]的方式进行。对于第二个问题,题设要求最短长度的尽量多,所以我们在第一问的基础上,给较短长度的肠衣较大的权系数,最后通过Lingo软件求得全局最优解。关于第三个问题的求解,
我们参照求解问题一的方法使用不等式约束。对于问题四,我们运用贪心算法来求解,即对于剩余的肠衣,我们通过贪心准则来进行降级,使得每次的贪心选择都是当时的最佳选择。
由于原材料已定,按照题设,分别讨论每个要求,解得第一问中肠衣最多只能做出130捆;第二问中对剩余的肠衣加权,也得到了比较理想的结果;第三问最多可以生产183捆合格成品;第四问中我们通过贪心算法对降级问题进行处理,最终得到剩下的肠衣可以组成 183 捆。对于第五问,我们每个程序的时间都仔分钟内就可以得到结果,所以能够在30分钟内得到分配方案。
关键词:搭配问题、LINGO软件、整数规划、全局最优、加权
二、问题重述
天然肠衣(以下简称肠衣)制作加工就是我国的一个传统产业,已有百余年的历史,出口量占世界首位,为我国创造了可观的经济价值。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序。传统的生产方式依靠人工,边丈量原料长度边心算,将原材料按指定根数和总长度组装出成品(捆)。
原料按长度分档,通常以0.5米为一档,如:3-3.4米按3米计算,3.5米-3.9米按3.5米计算,其余的依此类推。表1是几种常见成品的规格,长度单位为米,∞表示没有上限,但实际长度小于26米。
为了提高生产效率,提高产品的市场竞争力,公司计划改变组装工艺,先丈量所有原料,建立一个原料表。并按照公司对原料搭配的具体要求,设计一个原料搭配方案,使工人按其“照方抓药”进行生产,以提高生产效率。
其搭配要求如下:
(1) 对于给定的一批原料,装出的成品捆数越多越好;
(2) 对于成品捆数相同的方案,最短长度最长的成品越多,方案越好;
(3) 为提高原料使用率,总长度允许有± 0.5米的误差,总根数允许比标准少1根;
(4) 某种规格对应原料如果出现剩余,可以降级使用。如长度为14米的原料可以和长度介于7-13.5米的进行捆扎,成品属于7-13.5米的规格;
(5) 为了食品保鲜,要求在30分钟内产生方案。
三、模型假设及符号说明
1、模型的假设
(1) 假设所有选定的肠衣原料都能组装为成品;
(2) 假设所生产的成品肠衣都为合格产品;
(3) 假设该公司提供的原材料均能符合国家标准,为合格的新鲜肠衣原料;
(4) 假设肠衣在搭配过程中除去无法组成整捆的原料,均无浪费现象;
2、符号说明
: 每种肠衣原料的总数;
: 第捆成品使用的第种原材料的数量;
: 为每种原材料的长度。
: 假设的最多捆数
四、问题分析
本题共有五个要求:
(1)对于给定的一批原料,装出的成品捆数越多越好;针对本题,因为原料已定,也就是说原料的总长度一定,我们认为要想装出的成品捆数增加,就必须尽量让所有的原料都被利用,争取浪费最少,采用线性规划的方法来解决问题。
(2)对于成品捆数相同的方案,最短长度最多的成品越多,方案越好;这里涉及到一个最优化问题,即在成品中原材料最短长度最多。因此使用LINGO编程求其全局最优方案。
(3)为提高原料使用率,总长度允许米的误差,总根数允许比标准少1根;对于这个要求来看,误差为,即成品的合格范围是米之间,在误差范围内,比原定根数少一根也算是合格成品。
(4)某种规格对应原料如果出现剩余,可以降级使用;与上一要求类似,在提高效率方面,
不对原料进行多次切断组装加工处理,直接归类,可以缩短工人产生方案的时间,同时也就提高了效率。
(5)为了食品保鲜,要求在30分钟内产生方案。在前四个要求都满足的情况下,要对模型进行简化,方便工人在生产加工时,能够在最短时间内对原料的组合搭配进行规划,并且到最优方案。
五、模型的建立及求解
(一):对第一个要求进行探究:
要求对于给定的一批原料,装出的成品捆数越多越好,则首先对该公司部分成品规格表进行分析,并对举出的三种规格命名,如下表:
规格名称 | 最短长度 | 最大长度 | 根数 | 总长度 |
规格1 | 3 | 6.5 | 20 | 89 |
规格2 | 7 | 13.5 | 8 | 89 |
规格3 | 14 | ∞ | 5 | 89 |
在此表格中能得到成品总长度为89米,由此来规定本文中合格成品肠衣的标准为每捆肠衣总长度为89米。
原料的相关信息基于表2:
长度 | 3-3.4 | 3.5-3.9 | 4-4.4 | 4.5-4.9 | 5-5.4 | 5.5-5.9 | 6-6.4 | 6.5-6.9 |
根数 | 43 | 59 | 39 | 41 | 27 | 28 | 34 | 21 |
长度 | 7-7.4 | 7.5-7.9 | 8-8.4 | 8.5-8.9 | 9-9.4 | 9.5-9.9 | 10-10.4 | 10.5-10.9 |
根数 | 24 | 24 | 20 | 25 | 21 | 23 | 21 | 18 |
长度 | 11-11.4 | 11.5-11.9 | 12-12.4 | 12.5-12.9 | 13-13.4 | 13.5-13.9 | 14-14.4 | 14.5-14.9 |
根数 | 31 | 23 | 22 | 59 | 18 | 25 | 35 | 29 |
长度 | 15-15.4 | 15.5-15.9 | 16-16.4 | 16.5-16.9 | 17-17.4 | 17.5-17.9 | 18-18.4 | 18.5-18.9 |
根数 | 30 | 42 | 28 | 42 | 45 | 49 | 50183组合 | 64 |
长度 | 19-19.4 | 19.5-19.9 | 20-20.4 | 20.5-20.9 | 21-21.4 | 21.5-21.9 | 22-22.4 | 22.5-22.9 |
根数 | 52 | 63 | 49 | 35 | 27 | 16 | 12 | 2 |
长度 | 23-23.4 | 23.5-23.9 | 24-24.4 | 24.5-24.9 | 25-25.4 | 25.5-25.9 | ||
根数 | 0 | 6 | 0 | 0 | 0 | 1 | ||
先来研究第一种规格:
最短长度 | 最大长度 | 根数 | 总长度 |
3 | 6.5 | 20 | 89 |
由于在本题要求根据题中所给信息处理,建立出初始模型
首先要满足题中对每捆成品肠衣所使用原料根数的要求列出式(1), 如下:
…………………………………………………….(1)
然后根据题意对每捆成品标准长度进行限制,每捆肠衣的总长度为89米,列出式(2) 如下:
…………………………………………………(2)
生产成品所使用的每种档次原料数量不能超过该原料的总数,因此得出式(3)如下:
…………………………………………………….(3)
第捆成品使用原料的个数记为:
是整数………………………………………………………(4)
;.
要使得捆数最大,需要下面的最大目标约束:
;
LINGO 11.0求解得到第一种规格的最优解,此时(程序解题代码见附件一第一要求规格1):
X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | 根数 | |
组合1 | 1 | 11 | 0 | 0 | 2 | 1 | 1 | 4 | 20 |
组合2 | 6 | 0 | 2 | 0 | 6 | 6 | 0 | 0 | 20 |
组合3 | 2 | 0 | 0 | 17 | 0 | 0 | 0 | 1 | 20 |
组合4 | 0 | 0 | 2 | 18 | 0 | 0 | 0 | 0 | 20 |
组合5 | 0 | 4 | 2 | 6 | 8 | 0 | 0 | 0 | 20 |
组合6 | 4 | 6 | 3 | 0 | 1 | 0 | 0 | 6 | 20 |
组合7 | 3 | 3 | 8 | 0 | 1 | 0 | 0 | 5 | 20 |
组合8 | 3 | 9 | 0 | 0 | 0 | 0 | 7 | 1 | 20 |
组合9 | 0 | 9 | 1 | 0 | 7 | 0 | 2 | 1 | 20 |
组合10 | 7 | 0 | 3 | 0 | 2 | 4 | 4 | 0 | 20 |
组合11 | 0 | 5 | 8 | 0 | 0 | 5 | 2 | 0 | 20 |
组合12 | 10 | 0 | 0 | 0 | 0 | 3 | 6 | 1 | 20 |
组合13 | 7 | 4 | 0 | 0 | 0 | 1 | 7 | 1 | 20 |
组合14 | 0 | 3 | 10 | 0 | 0 | 7 | 0 | 0 | 20 |
以上结论共14种材料组合,在规定条件下,是捆数最多的结果。
接下来同理对表1中另外两个规格进行讨论:
名称 | 最短长度 | 最大长度 | 根数 | 总长度 |
规格2 | 7 | 13.5 | 8 | 89 |
规格3 | 14 | ∞ | 5 | 89 |
按照规格一的计算方式,计算规格二和三。
我们发现36捆是在规格二能生产出最多的数量,也就是说在组装成品最多的条件下,36捆是最符合题目要求的数量(程序解题代码详见附件一第一要求规格2、可行组合见附件二第一要求规格2)
因此对于规格二,生产36捆的方案最合理。
而第三规格的生产捆数,与前两种规格的产生不同,按照原料长度、成品长度与最大生产捆数的关系求解,类似于规格一的方式,我们得出第三规格在仅考虑做出成品的情况下,最多
可以生产80捆成品肠衣。
最后我们将得到的这三个结果进行求和,,即第一问的最终结果为:最大成品的捆数为130捆。
(二):由于要求(2)中,对于成品捆数相同的方案,最短长度最多的成品越多,方案越好。
在解决第一个要求时,我们所得到都是可行方案。但是我们要求是最短长度最多的成品越多越好,即最短长度剩余的长度越少越好,因此我们需要增加目标函数使得最短长度剩余的长度越少越好。在这里我们对剩余长度进行加权,给较短的长度较大的权重。这样就能得到我们新的目标函数。
由表1中给出的数据,先来研究第一种规格:
……(5)
为第种肠衣原料的长度,因为要求取的是最短长度的原料,将这个长度作为我们的权重。即在捆数相同的方案中,优先考虑最短长度原料,即尽可能使得最短长度的原料剩余尽可能少。然后在结合原是模型于是我们得到了下面这组整数线性规划列式:
………………………………………………………(6)
带入数据,在保证了每捆成品肠衣都为标准的89米的情况下,用LINGO求解得到了三种规格的全局最优解(由于篇幅原因,以下只列出了第一种规格的具体组合方案,程序解题代码详见附件一第二要求、组合方案见附件二第二要求运算结果)。
第一种的规格:
x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | 根数 | |
组合1 | 3 | 0 | 3 | 10 | 1 | 1 | 1 | 1 | 20 |
组合2 | 2 | 0 | 0 | 16 | 0 | 2 | 0 | 0 | 20 |
组合3 | 1 | 0 | 15 | 0 | 0 | 0 | 0 | 4 | 20 |
组合4 | 8 | 0 | 1 | 1 | 1 | 7 | 0 | 2 | 20 |
组合5 | 10 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 20 |
组合6 | 7 | 0 | 3 | 0 | 0 | 9 | 0 | 1 | 20 |
组合7 | 0 | 13 | 0 | 0 | 0 | 2 | 0 | 5 | 20 |
组合8 | 0 | 1 | 3 | 13 | 3 | 0 | 0 | 0 | 20 |
组合9 | 0 | 13 | 0 | 1 | 0 | 0 | 0 | 6 | 20 |
组合10 | 0 | 8 | 0 | 0 | 11 | 0 | 1 | 0 | 20 |
组合11 | 0 | 0 | 14 | 0 | 0 | 6 | 0 | 0 | 20 |
组合12 | 10 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 20 |
组合13 | 0 | 12 | 0 | 0 | 1 | 0 | 7 | 0 | 20 |
组合14 | 0 | 12 | 0 | 0 | 1 | 0 | 7 | 0 | 20 |
按照规格一的计算方式,计算规格二和三。同理可以得到我们的最优搭配方案。
(三):在前面的计算中,并没有将原料使用率放在首要因素考虑,为了提高肠衣原料使用率,该公司提出了米每捆的误差与成品中使用原料总跟数允许比标准少一根的合理评定标准。
发布评论