关于裁料算法的优化

KingSunSha 2003-01-06 07:45:31
简化的问题:
1、已知多种预定尺寸的材料(比如长度分别为1米、2米、5米等的木料),每种材料的单位价格不同(通常小尺寸的材料单价比较高)
2、已知某个或者多个订单中的材料需求(比如需要0.3米的材料m根,0.5米的材料n根等等)
如何求得最佳的裁料结果?该结果通常是成本最低的结果。

如果采用遍历法,那程序写法不难,但是当订单中需求数量非常大的时候,效率就很成问题了。不知各位有没有什么好的办法。谢谢!
...全文
131 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
Riemann 2003-01-15
  • 打赏
  • 举报
回复
原来这贴跑到这儿来了,还得我好找,偶一般知在算法版闲逛。
to KingSunSha(弱水三千):
你的思路是正确的,不过用回溯的方法求解却不是一种好办法。正如偶在前面所说的,我觉得用分枝定界法可以大大提高求解的效率。分枝定界法可以参考: http://202.113.96.10/ini/arithetics/No55.htm


link800 2003-01-15
  • 打赏
  • 举报
回复
运筹学,我学过,学的自以为还不错.
运筹学,真的挺有用
KingSunSha 2003-01-14
  • 打赏
  • 举报
回复
不好意思,最近几天很忙,没有空研究这个问题,等稍空下来再深入。谢谢大家的热心讨论!
colin666 2003-01-13
  • 打赏
  • 举报
回复
up
imports 2003-01-13
  • 打赏
  • 举报
回复
又上了一堂《数据结构》的课!

HellMaster 2003-01-13
  • 打赏
  • 举报
回复
up
chenbinghui 2003-01-13
  • 打赏
  • 举报
回复
最近稍微看了一下遗传算法(ga),觉得还是模拟退火法解决上面的问题比较好一点,
悟空师傅来了 2003-01-13
  • 打赏
  • 举报
回复
这么多星星啊!学习!
benbencatrabbit 2003-01-12
  • 打赏
  • 举报
回复
up
qiujoe 2003-01-09
  • 打赏
  • 举报
回复
我觉得TheAres(班门斧) 提出要不要考虑锯木头的费用是一个实际的问题,如果不考虑就一直用单价低的材料好了:-)
我想应在材料数量不同时采用不同的算法
1。当单价低的材料很多时,优先使用单价的材料
2。当所有材料尺寸与材料需求的尺寸相差不大时采用尺寸匹配算法
(基于一个假设,5米的材料锯成一米以后和预定尺寸1米的材料差不多,我想也应该差不多,否则肯定有一种材料会很少用:-)

学习
qqchen79 2003-01-09
  • 打赏
  • 举报
回复
一般对于这样的NP问题,解决的思路是:
1) 采用启发性的算法(背包问题的解法通常已经包含了启发性)。
2)限定算法执行时间,仍然采用穷举,返回给定时间内找到的最好结果。
qqchen79 2003-01-09
  • 打赏
  • 举报
回复
Backpack is a classic NP problem, which means the complexity of finding the best solution is at least O(N*N). When N gets bigger, theoretically there is no way to solve the problem within an accepable time. Not mention that here we want to extend the problem into 3 dimensions (It's still NP, though).

On the other hand, there are always many heuristic algorithms which may give some acceptable results (may or may not be the best) in a reasonable time.
KingSunSha 2003-01-08
  • 打赏
  • 举报
回复
下面是我的一些思路:
已知条件:
1、n种材料,长度(或者容量)分别为m_len(i),成本为cost(i),1<=i<=n
2、x个订单,每个订单需要的长度为o_len(i),1<=i<=x,其中max(o_len)<max(m_len)
要求结果:
1、每种材料所需的数量m_qty(i),1<=i<=n。并使sum(m_qty(i)*cost(i))趋近最低
2、基于以上方案对订单的分组,使得以上方案是可行的

解题思路:
1、根据每个订单的长度,可以获得所有订单长度的总和m_ttl_len=sum(o_len)。

2、现在问题变成了类似于背包问题,但不是简单的(1/0)背包问题,而是较为复杂的(y/0)背包问题。因为在我的实际问题中,n不是很大,所以即使采用穷举法,性能也不是很大的问题(当然我相信看了新的提示,应该有更优化的算法)。假定现在得到了一个结果集:
方案 材料1数量 材料2数量 ... 材料n数量 总成本
1 a1 b1 ... c1 cost1
2 a2 b2 ... c2 cost2
3 a3 b3 ... c3 cost3
...

3、根据上面获得的结果集,从最小成本方案开始验证该方案是可行的(即至少有一种方法来对订单进行分组),对此采用回溯算法中类似的解决方案(谢谢TheAres(班门斧)给出的文章)进行判断。如果方案被证实是可行的,那就采用该方案,否则继续判断下一个方案。。。

还没来得及具体写代码测试,有任何结果我会和大家共享。
yarshray 2003-01-08
  • 打赏
  • 举报
回复
思归的思路是对的,

这确实应该象背包问题靠拢

应该按这个出发点来思考.
yarshray 2003-01-08
  • 打赏
  • 举报
回复
下料算法,也许这篇文章有点用

如下;

http://chenxs.cn.gs/paper2.doc

我觉得大家应该把自己的观点阐述出来这样回对问题

的实质有帮助.希望大家来讨论.(我本人对算法不厉害,所以更多的是

来学习的,希望得到各位的提协)
houjianxun 2003-01-08
  • 打赏
  • 举报
回复
关注
yarshray 2003-01-08
  • 打赏
  • 举报
回复
http://soft.km169.net/soft/html/1606.htm

这个希望对你有些帮助

里面的算法很全面.有破解文件.
KingSunSha 2003-01-08
  • 打赏
  • 举报
回复
正在学习和尝试中,欢迎大家继续讨论。
KingSunSha 2003-01-08
  • 打赏
  • 举报
回复
to TheAres(班门斧):
犬子名孙昂,一者因慕陈子昂高才,二者纪念我与太太的母校。现蜗居瑞典,日日寒风酷雪,然妻儿在侧,虽寒冷而犹感温馨。

蒙saucer(思归, MS .NET MVP)兄眷顾,荣宠无比。
saucer 2003-01-07
  • 打赏
  • 举报
回复
sound like you are looking for a backpack algorithm, search on google.com:
http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=backpack+algorithm&btnG=Google+Search

A Fast and Efficient Solution to the Backpack Problem
http://www.edm2.com/0601/backpack.html
加载更多回复(9)
SmartNest套料软件旗舰店,http://smartnest.taobao.com 热忱欢迎您的光临! 诚信经营,价格实惠,货源充足。诚信对待每一个客户,稍有疏忽或者怠慢的地方,请亲见谅! 本网店刚刚开业,只为信誉,价格实惠,欢迎购买! 旺旺:winter393629362 QQ:393629362 电话:18948723725 SmartNest是武汉智格科技有限公司历经十余年不懈努力、精心研发的一款具有自主知识产权的切割套料编程软件,该软件的核心技术指标已达到国际先进水平! (1)全自动高速优化套料——利用率提高1%~5% (2)全自动智能共边切割——切割效率提高10%~50% 专业的研发团队、持续的改进完善、长期的应用实践将SmartNest打造成中国最优秀的专业级产品,被用户誉为“中国目前最好的切割套料编程软件”! SmartNest是武汉智格科技有限公司历经十余年不懈努力、精心研发的一款具有自主知识产权的切割套料编程软件,该软件的核心技术指标已达到国际先进水平!专业的研发团队、持续的改进完善、长期的应用实践将SmartNest打造成中国最优秀的专业级产品,被用户誉为“中国目前最好的切割套料编程软件”! SmartNest是一套用于板材切割下料的计算机软件系统,具有强大的优化套料与自动编程功能,适用于火焰/等离子/激光/水射流等各类数控切割机。SmartNest软件的功能覆盖了板材下料及其生产管理的各个方面,包括切割零件库管理、板材及其余料库管理、自动套料、交互套料、切割轨迹优化、数控自动编程及切割模拟、数据汇总与统计报表等,并可与企业PDM、ERP等信息系统集成,为企业板材切割下料生产提供集成解决方案。实践表明:应用SmartNest系统可明显提高下料企业的板材利用率和编程、操作自动化水平,有效降低产品成本、规范生产管理、提高经济效益。 SmartNest产品特色 1、 功能齐备 提供多种套料算法(真实形状/矩形包络/通裁通剪/阵列式) 支持多种套料模式(单张/批量/复制/余料/局部填充/交互式) 集成化数据管理(零件库/钢板库/统计报表) 2、技术先进 全自动高速优化套料(材料利用率提高1%~5%) 全自动智能共边切割(提供多种共边切割方法,切割效率提高10%~50%) 3、操作简便 10分钟学会基本操作! 3分钟输出切割代码! 4、自主版权 具有完全自主知识产权,是中国自己的套料软件 以著名高校为技术依托,提供优质的本地化服务 SmartNest主要功能: 1、切割零件库管理 2、切割钢板库管理 3、自动套料 4、交互套料 5、切割路径优化 6、自动编程与切割模拟 7、数据汇总与统计报表 8、集成解决方案 www.nestcut.com

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧