题目:
用料最省的铁皮罐头
软件学院? 软件工程?? 林维勇 林朝裕 董琦
摘要:
本文针对工厂生产铁罐的实际情况,引入了程序设计、经济学、微积分、工程切割的有关知识,将其与实用数值计算有机地结合起来,切合实际的考虑了如何生产来节省原料,在此基础上建立模型,应用于最优圆料冲压和最优方料切割以及工厂大规模生产。
关键字:
条件极值 最优圆料冲压 最优方料切割 回溯算法 递归算法 帕累托最优
逐层枚举分析
1、问题重述
1.1相关信息
某厂生产容积为1升(1立方分米)的圆柱形铁皮罐。请根据以下情景分别设计下料
。
1.2 需要解决的问题
(1) 做一个铁罐,圆形上盖和下底由外切正方形板材冲压得到,怎样做用料最省?
(2) 现有2米长1米宽的铁皮两张,为方便加工,一张用来冲压上盖和下底,一张用来切割铁罐侧面长方形。问如何下料,可使生产的铁罐尽可能多?此时,铁罐的底面直径和高各是多少?
(3) 如果工厂大规模生产铁罐,铁罐的上盖、下底以及侧面都从规格为2米×1米的铁皮冲压或切割出来(为方便加工,圆料和方料不在同一张铁皮上混合下料),问如何下料,用料较省?此时,铁罐的底面直径和高各是多少?
2、问题分析
在实际的生产生活中,都存在着节省材料的问题,这里我们讨论的就是如何才能最优的使用材料而不必造成不必要的浪费。所以提出“设计用料最省的铁皮罐头”问题。
针对问题一,用铁皮做成一个容积一定的圆柱形的容器,问圆形上盖和下底由外切正方形板材冲压得到,怎样做用料最省? 用几何语言来表述就是: 体积给定的圆柱体, 其表面积最小的尺寸(半径和高)为多少?表面积S是关于r的函数,因此我们用条件极值模型求解该问题。
针对问题二,我们需要两张2米长1米宽的铁皮,一张用来冲压上盖和下底,一张用来切割铁罐侧面长方形来生产尽可能多的铁罐。所以,我们需要从铁皮上切割出尽可能多的圆形和矩形,并且圆形和矩形的比例关系尽可能接近2:1。为考虑实际问题与计算方便,我们把铁罐底面半径限定在一定的范围0.04-0.08内,采用枚举算法,逐步缩小范围,最后得出最优结果。因此我们需要建立两个模型(模型二,模型三)。模型二是切割圆板最优模型;模型三是矩形最优切割模型。
针对问题三,如果工厂大规模生产铁罐,铁罐的上盖、下底以及侧面都从规格为2米×1米的铁皮冲压或切割出来(为方便加工,圆料和方料不在同一张铁皮上混合下料),要使用料较省,在生产一定铁罐的时候,应用较少的铁皮。而要使铁皮较省,则要考虑如何分配圆料和方料的铁皮数。
3、模型假设
3.1 总体假设
假设工厂大规模生产时,生产10000个同等规格的铁罐,冲压与切割工艺不会出现失误,冲压与切割后的铁罐已经经过 1.印刷生产线. 2.马口铁生产线. 3.罐装生产线. 4.密封消毒生产线. 5.包装生产线.即冲压与切割结束后即可出厂,无需考虑后面工艺,铁皮提供无限制。
3.2 具体假设与约定
(1) 所处的环境为常温常压下,外界影响忽略
(2) 生产铁罐所用的铁皮质量较好,即生产过程种没有造成铁皮的损坏
(3) 铁罐不受温度变化影响,不会因为装入的物质而变形或是腐蚀
(4) 生产出的铁罐为同一种型号(均为圆柱体)
(5) 侧面与底面采用的铁皮一致
(6) 忽略铁皮的厚度(实际情况改进时将考虑)
(7) 忽略冲压或切割时对铁皮边缘造成的卷曲破损等影响
(8) 约定圆料和方料不在同一张铁皮上混合下料
4、变量说明
4.1 变量说明见表1
表1
对象
类型
符号
单位
铁罐底面半径
参数
R
m
铁罐高
参数
H
m
铁罐表面积
输出变量
S
铁罐上(下)表面积
输出变量
铁罐体积
常量
V
铁皮长度
输入参数
L
m
铁皮宽度
输入参数
B
m
圆形上(下)盖数量
输出变量
N
整数
铁罐侧面数量
输出变量
M
整数
4切圆数量
输出变量
整数
6切圆数量
输出变量
整数
切割矩形数量
输出变量
整数
利用率
输出变量
W
%
5、模型建立和求解
5.1 问题(1)的模型建立
问题一讨论的是最优化设计问题(用料最省),因此我们建立条件极值模型来求解该问题。
5.1.1铁罐图示化
图1
图2
2πr
h
r
h
图1为铁罐侧面展开图,图2为铁罐立体图。
5.1.2模型一的分析过程
用铁皮做成一个容积一定的圆柱形的容器,问圆形上盖和下底由外切正方形板材冲压得到,怎样做用料最省? 用几何语言来表述就是: 体积给定的圆柱体, 其表面积最小的尺寸(半径和高)为多少?表面积S是关于r的函数,因此我们用条件极值模型求解该问题。
5.1.3 模型一的求解过程
铁罐是一个正圆柱体,则:
5.2 问题(2)
5.2.1 问题的分析
根据题意,我们需要两张2米长1米宽的铁皮,一张用来冲压上盖和下底,一张用来切割铁罐侧面长方形来生产尽可能多的铁罐。所以,我们需要从铁皮上切割出尽可能多的圆形和矩形,并且圆形和矩形的比例关系尽可能接近2:1。为考虑实际问题与计算方便,我们把铁罐底面半径限定在一定的范围0.04-0.08内,采用枚举算法,逐步缩小范围,最后得出最优结果。因此我们需要建立两个模型(模型二,模型三)。模型二是切割圆板最优模型;模型三是矩形最优切割模型。
5.2.2 模型二的建立
(1)假设:
a) 假设铁皮可以高精度地光滑切割,可使圆与圆彼此相切;
b) 每个圆之间接触的形式(除临近铁皮边缘的圆)为:
1) 与4个圆相切
2) 与6个圆相切
(2)建立模型与数学求解:
对与4个圆相切的方式:考虑参数变化的影响。若b>2nr 能得到n列圆,若b增大到(2n+2)r,还可以增多一列。说明列数n是b/2r的整数部分[b/2r].同理可推得行数为[l/2r],故圆板总数为
N=[b/2r] × [l/2r],损耗 W=(lb-[b/2r] ×[l/2r]×
)/lb.
现对l,b和r的一般取值,讨论六点相切的情形。
当铁皮宽度b是r 的奇数倍[(2n+1)r],那么直到b增大到(2n+2)r足以再容纳一个圆板前,每行包括n个圆板。b增大到(2n+2)r时各行交替为n+1个和n个,b再增大到(2n+3)r时每行就能包含n+1个圆板。
若共有x行,则x必须满足2r+
(x-1)r
总结如下:
当(2n+1)r<= b <(2n+2)r时每行都含n个圆板,且 N=x/2([b/r]-1).
当(2n+2)r<= b <(2n+3)r时每行交替含n+1个和n个圆板,且
N=x/2([b/r]-1), x是偶数; N=x/2([b/r]-1)+1/2,x是奇数。
在各种情况下 x=[1+1/
(l/r-2)].
(4)模型说明:
不能断言6点相切与4点相切两种方法哪种更有效,随着参数值的变化,两种方法都可能更有效,应注意的是对同一组参数,两种方法可以切割出相同的圆板个数N,但损耗W却会改变。
5.2.3 模型三的建立
模型的分析:(下面分两种算法进行分析)
算法一的分析:这是寻求最优解的问题,我们可以使用穷举搜索的方法,也称回溯技术。回溯算法可用伪码描述如下:
Proc Search(当前状态);
Begin
If 当前状态等于目标状态 then exit;
For 对所有可能的状态
Search(新状态);
End;
之所以用递归程序设计思想,是因为大多借助回溯技术解决的问题具备两个特点:一是问题本身可以转为几个简单问题;二是最简单的问题可以直接解决。虽然递归算法的效率很低、费时,并且花费内存空间,但鉴于递归算法能使一个蕴含递归关系且结构复杂的程序简洁精炼,增加可读性,采用递归算法编程比较合适。
(方式3)对大矩形纵向切割,对小矩形纵向放置
(方式4)对大矩形纵向切割,对小矩形横向放置
切割方向不外乎两种:横向或纵向。而对每种切割方向,小矩形的放置方式又可以有两种:纵向放置或横向放置,所以共有四种切割方式,如下图所示。
(方式2)对大矩形横向切割,对小矩形横向放置
(方式1)对大矩形横向切割,对小矩形纵向放置
一个大矩形就按照上面四种方式分割,比如对大矩形作横向切割时,小矩形的放置可以纵向或横向,作了一次分割以后,又对剩下的部分作进一步分割,分割方式仍然是前面四种,直到将大矩形分割完毕或剩余的部分不足够一个小矩形为止,分割操作才结束. (代码实现见附录1.)
算法二用C++程序实现.(详细内容见附录2)
5.2.4 问题(2)的求解
6点相切
铁罐底面半径r的范围为0.04m-0.08m (见5.2.1问题分析).
在各种情况下
结合模型三算法二得出表2
表2
r(m)
h(m)
0.040
0.199
300
336
38
0.045
0.157
242
263
42
0.050
0.127
200
209
46
0.055
0.105
162
170
50
0.060
0.088
128
143
58
0.065
0.075
105
119
61
0.070
0.065
98
104
66
0.075
0.057
78
90
74
0.085
0.044
55
65
75
0.090
0.039
55
60
83
以下图3,图4,图5,图6,图7是根据表2的r与h,
,
,
之间的关系描绘出来的离散图示。
图3
可以得出在0.04-0.09范围内铁罐底面半径与铁罐高度的拟合函数为
图4
可以得出在0.04-0.09范围内铁罐底面半径与4切圆的拟合函数为
图5
可以得出在0.04-0.09范围内铁罐底面半径与6切圆的拟合函数为
图6
可以得出在0.04-0.09范围内铁罐底面半径与可切割矩形数目的拟合函数为
图7
0.065
图7为图5和图6的结合函数图像
矩形数量
与圆块数量
(
)的比值等于1:2,所以所取数据应尽可能接近1:2,分析上表和图7可得出当r=0.065m时,
=61,
=119,铁罐数=59个,此时
与
的比值最接近1:2且做出的铁罐的数量也最多.为进一步得出更精确的结果,得下表:
表3
r(m)
h(m)
0.061
0.085
128
135
58
0.062
0.083
128
135
60
0.063
0.080
105
126
60
0.064
0.078
105
119
58
为便于分析,我们由上表得出了下图:
图8
从表3和图8分析可知,当r=0.064m时,
=58,
=119,铁罐数=58个,此时
与
的比值最接近1:2,但与r=0.063m及r=0.062m相比,前者做出的铁罐的数量较少。故我们取r=0.063m或r=0.062m。当r=0.063时,h=0.08m,
=126,
=60;当r=0.062时,h=0.083,
=135,
=60。