您的位置:首页 > 其它

详细需求与分析

2006-09-12 11:32 281 查看
我们公司的求最优化问题可能与其它求最优化问题有些差别,因为它无论是输入数据还是输出数据,都是在Excel电子表格上进行的,表格如下:
序号 长度 合计 切割数 实用长 源料长 用料数 余料 处理
1 1058 57
2 1028 1311
3 989 684
4 1040 513
5 1180 57
6 1233.5 57
7 1311 57
8 875 114
9 837 57
10 978 57
11 866 57
12 50 4212
“长度”与“合计数量”例的数据是已有的,“源料长度”是用户输入的,其它4个例要用程序来计算。每一例与每一例之间都有一一的对应关系,也有优先级。当用户输入源料长度后,程序先计算"切割数",求切割数的公式是:切割数=INT(源材料长度/(长度+切割锯缝))(切割锯缝等于5),假设当用户输入源材料长度为5350,那么序号1的切割数是 {INT(5350/(1058+5))=5}(取整,忽略小数位),切割数求出来后,就接着求"实用长"。{实用长=((长度+5)*切割数)};实用长后是"用料数"。{用料数=合计数量/开料数};求出用料数后是求“余料”。{余料=源料长度-实用长}。所以它们的求解顺序是:切割数->实用长->用料数->余料。人工求解很简单,但如果是在程序里来计算,那就难了。因为在人工的运算过程中,开料人员不断判断、不断优化,以求最优的开法,但程序却无法像人那样,所以开发这样的程序有很大的难度。上面的求解关系很简单,但却有种种的限制:(1),要求余料是浪费得最少的,一般是在50或100之间;(2),对于“用料数”不足一支的情况下,可以忽略余料,比如下表的长度为1200的那一行,用5950的源料长度来开,但因为用料数为0.50小于1,所以那怕余料为1110也可以忽略不计。(3),“合计”例数量最多的要优先求解,因为这是一个关于最优化的问题,当需求的数量很大的时候,它所用到的材料就需求很多,如果不把余料控制好,将会造成很大的浪费。(所以公司的要求是:把合计数量最多的(比如100支以上的)优先计算,剩下的数量需求不多的用“多级套料法”。注:多级套料法在下文解释)(4),对源材料长度的种类限制,一般是限制4种(种类限制的意思是:比如6000为一种,5000为一种,4500为一种,4000为一种,总共是4种)。(5),程序根据用户限制的种类优先计算合计数量最多的长度,然后把数量少的用多级套料法,所谓的多级套料法只是我们在开发过程中的一个代名词,它真正的原理是组合。在多级套料中用户规定一种源料长度,用它来开所有“合计数量”少的长度,它原理是这样的:上表有长度1233.5,如果用5000来开它,余料是46,所以它是最优的,但此时却不能用5000来开它,因为用户已经规定了只能用6000来开它,用6000开了以后它的余料是1046。为了不造成浪费,把余料1046拿来开上面与它最接近或少于它的长度,比如1040。用式子表示的话可以如下表:
(1233.5+5)*4+(1040+5)*1=5999(余料是6000-5999=1)
(1127+5)*4+(539+5)*1+(839+5)*1=5916 (6000-5916=84)
(924+5)*6+(343+5)*1=5922 (6000-5922=78)
(1192+5)*5=5985 (6000-5988=12)
(539+5)*11=5984 (6000-5984=16)
(6),当所有的长度都得到最优解后,还要一一对应的输到Excel表格中去。至于采用多级套料法的,把组合的那些都写到“处理”例去。如下表
长度 合计 切割数 实用长 源料长度 用料数 余料 处理
1450 2 4 5840 5950 0.50 110
1085 12 4 4380 5950 1.50 1570 1450=1
1085 8 4 4380 5950 2.00 1570 1500=2
1200 2 4 4840 5950 0.50 1110
1630 18 2 3280 5950 9.00 2670 650=36
1630 12 2 3280 5950 6.00 2670 650=24
1630 4 2 3280 5950 2.00 2670 650=8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: