开料多向性程式方案研究-何保辛
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 程序人生


开料多向性程式方案研究

发表时间:2012/8/21 10:07:33 评论(6) 浏览(5526)  评论 | 加入收藏 | 复制
   
摘 要:多年开发心得
正 文:

不知道大家有没有开发过这类型的程序,这里就是开发网,我们就在这里研究下这种任务吧!


开料任务定义

开料就是用原材料切割成为订单需求的规格,目的就只有一个,省料!没错的,广义的“开料”就是一个目标的,不过我就给大家介绍下实际的情况。

“开料”就是生产用的词语,在生产管理上,流程里都会用到开料的就是:

1. 定义 MI(manufacturing instruction或process flow) 和 BOM (Bill of material, 物料清单或成分清单),这里就会有一个计算计算最起码一种的原材料原尺寸的规格怎么切成为生产单元(一块儿多个成品在一起生产,然后到切割单元的工序把成品成形的),这个计算就是最起码用来给成本中心区评估这个成品主原材料的成本的);

2. 当多个订单同时投产的时候,就需要综合多个需要相同规格的原材料,来分析用什么原尺寸的材料来投产;

3. 当这些主原材料是用不完一个原尺寸时就会剩下余料;投产时负责生产前准备(pre-production)的部门便需要考虑用不用余料(或称碎料)来投产,或者用原始尺寸投产,该留下多大作为未来的余料。


因为这些因素我们就能推论,开料=“尽量省料”,而尽量省料就就包含了以下几目标:
1. 尽量最大使用率(或者 最低损耗率)
2. 尽量使用长宽高最小规格的材料(原尺寸的或者余料,避免余料囤积)
3. 尽量符合订单需求(有时候可以“偷料”,就是把需求的规格缩小1mm或者0.5%等)
4. 尽量效率最高,意思是让切割出来的规格在生产线上的瓶颈工序效率最高(大一点的生产单元,在印刷、电镀、漂染等工序的手工操作就会少一点)
5. 尽量少错。生产有种情况是当两个型号差不多规格的时候,采用不同长宽高的生产单元让生产过程不会用错模具、菲林等的配套工具的)

基于这些原因,我们不难发现第5是认为因素,而1-4都有机会用计算方式判断的。


是否只有唯一答案的的计算?

深蓝,作为IBM公司要与人脑对抗下象棋,就是总要判断出走下一步的决定,只有一个结果;而开料呢?能不能呢?

当有多向性的计算要兼顾的时候,趋向目标1时,就远离目标2 时怎么决策?

冲突一例:
用小一点的余料可以有效防止余料囤积,用大一点的余料或原尺寸材料使用率更高,大家都明白了,但是有当几个小余料的使用率只是95%,而用一个更大的余料是99%,遇到这个冲突的时候,那该用哪个材料?这个是用户环境因素决定的,可行方法是:

1. 我们以让用户选择优先权。
   可是其实用户每次运算都会看看不同优先级会有什么结果,用户就得找个地方记下,然后再重新点计算又比较下,3个目标就用 123,132,213,231,312,321共六个尝试,再用脑袋肉眼做比较了!这可是非常不人性化的方案哦!
2. 添加判断条件。原来系统要求使用率要99%,但是
   用小一点的规格使用率是95%但是损耗只是多少长宽高以下,而
   大一点的规格余料是超过多大(能作为余料),损耗率定义为0了!

   解决方法A)就是定义了“损耗规格”,意思是 小于某个长宽高规格 就是 损耗,大于这个规格就是余料;

   这样也能得出唯一答案的机会。可是用户还是会试试看,定义为3时,算一次;定义为5时又算一次;定义为20又算一次,自己不停的找关键点!

   解决方法B)定义“替换时最低使用率”,意思是 在替换更小规格的余料时,可以接受低于另外一个使用率,譬如95%为接受的,才替换;
   不过这样其实用户也会在不停尝试95%,93%,90%,看看会不会有“显著”的用余料或更省料的变化。

   解决方案 C,D,E...Z 就是设置更多的组合参数去判断从两个方案中选更优的,也是会让用户点击重算机会更多,让整体计算时间更久的方案。


当同时超过两个目标也成了冲突了,又怎办?
包括上面提及的“偷料”计算,也是每个订单需求都点击下重算;
或者其他瓶颈工序的使用率高,但开料率低?

整体的判断时间就是看多少个无了期的尝试完结了

所以我20年的编程生涯里面,是没有出现过一个开料计算程式是只允许一个答案的!同时符合多个目标都最高的情况,只是计算中的一个特例。

把最聪明的判断留给用户自己,他才清楚知道他当前的情况什么最重要,余料多了就选用余料多得方案,订单要快了,不用余料了,开料部门的工具的设置都固定在一个尺度;程式里也不会需要用户不停的尝试不同的尺度来尝试,

要用户 99%,98.5%,98%,97.5% 不停的尝试,不如
我列出所有的可能性只是有 98.366,和96.2333 两个,用户更好判断!


所以,人性化的开料程序结果都应该不止有一个最优方案的。至少,相同的分值都是由不同的参数生成出来的,而这些不同的参数就是对用户有决定性的影响的。而且电脑的说服力也是在于因为我们有大量的尝试过的数据让人看见,可以让人质疑的,这就是我们的一个为人的态度,allows for their doubting too,由我们的作品上展现出来。


就以线材为例

这个算最简单的计算的了,没有其他的工序,就是切,就成了成品了。能满足订单的情况下,切法多少个?最高使用率的,一般只有一个;可是,如果考虑要多使用囤积余料的情况下,就会考虑高点点的损耗率了! 而这个高点点的损耗率是多少?不算过是不会知道的,让用户输入限制的话,就会变成不停尝试的了。

所以如果结果是这样列出来的话,就比较人性化了(关键只是蓝色3个数,后面只是参考的):

这就是使用率高一点(99.89%),但是损耗反而更大( 85)的特例,其实 使用率,余长度,段数分值 是没有连带关系的数据,只是不同的组合的结果。还是需要用户自己去判断他想要的是什么结果的。

段数分值就是用越用的多短的分数越高的,会有更多的特例会看到 用段数多,但是损耗更高的,使用率也许只是在90%左右,但是用户是会选择的。因为4条1KM左右的余料可以替代1条4KM左右的99.5,如果损耗的只是在4条的使用率在99.6%的话。这些判断,就需要用户的参数支持的了!

还有如果仓存料不足以交货的话,不同的方案还是要列出来的。

品茶兄在 【Access小品】韬光养晦--线型材料开料优化示例     中我看到图片中只有一个结果的话,就知道他做的就是一个雏形版本,还是有待改进的。当开发多一点类似的智慧性计算应用,慢慢就会知道怎么才会人性化一点的了。

电脑的说服力也是因为我们有大量的尝试过的数据让人看见,可以让人质疑的。这应该是我们的一个为人的态度,allows for their doubting too,由我们的作品上展现出来。

可以的话,我们可以多些人一起研究怎么做一个唯一答案的方案,让自动化再下一步飞得更高!


Access软件网交流QQ群(群号:198465573)
 
 相关文章
【Access小品】韬光养晦--线型材料开料优化示例  【煮江品茶  2012/8/19】
常见问答
技术分类
相关资源
文章搜索
关于作者

何保辛

文章分类

文章存档

友情链接