高分求教算法:一维下料问题(星星们快来,请过路高手留下脚步,分留着也没用,权当散分)

LGYAN 2007-05-24 05:22:16
最近公司有一个关于自动配料方面的软件,由小弟接手,关于算法部分苦思不得其解,望各位大哥大姐赐教。具体如下:
假设:
库存中有4m*3、6.5m*5、7m*5、8m*10、10m*8(4m*3表示4米的材料有3根),
现在用户需要3m*3、3.5m*1、4m*4、5m*3。

问用户该怎么取材,才能使浪费余料最少?

可以认为库存里最长的材料肯定比用户需要的最长的材料长。

浪费余料:就是在本次切割过程中,切割下来的,但没有用在本次用户要求上的材料都算浪费余料

可参见:http://community.csdn.net/Expert/topic/5525/5525732.xml?temp=.0393793

http://community.csdn.net/Expert/topic/5516/5516559.xml?temp=.9682733

http://community.csdn.net/Expert/topic/5516/5516559.xml?temp=.7672846
...全文
1156 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2010-06-24
  • 打赏
  • 举报
回复
学习,帮顶
舉杯邀明月 2010-06-24
  • 打赏
  • 举报
回复
楼上的又在顶超级坟贴…………

-_-b
of123 2010-06-24
  • 打赏
  • 举报
回复

问题的难点在于,当下料数(Order)增长时,切割方案(Pattern)数呈指数增长,使得遍历所有 Pattern 成为不可能。

Gilmore 和 Gomory 在 1960 年代提出了 delayed column generation 方法,主要思想是首先只列出较少的 Pattern,必要时再生成附加的 Pattern。对于一维下料问题,新 Pattern 的引入涉及到“背包难题”。而背包难题已经有充分的研究,一般采用“分支边界方法”或“动态规划”方法来解决。Gilmore 和 Gomory 已经证明,不必预先评估所有的 Pattern,用此方法可以收敛于部分最优解。

你搜一下 one-dimensional cutting-stock problem 会得到更多信息。
of123 2010-06-24
  • 打赏
  • 举报
回复

一维优化下料是许多学者研究的课题,也不断有论文发表,出现了多种优化算法。

其中,研究最充分的,是基于线性规划的算法。这类算法特点是余料最少,但切割量可能高于需求。

在网上搜一下,可以找到许多论文及数学方法。

总的来说,这是一个复杂的问题。公司真的很高看你。
chinaboyzyq 2010-06-23
  • 打赏
  • 举报
回复
先查找等长的,再两个一组组合没有的,用组合的和查找最接近。

我想不用考虑太多的组合(比如两个一组,三个一组,四个一组等都试一遍),那样会很浪费时间。
hequhecong126317 2010-06-23
  • 打赏
  • 举报
回复
晕呀,怎么写这个算法呀,我现在也要弄这个东西
LGYAN 2007-05-31
  • 打赏
  • 举报
回复
?
LGYAN 2007-05-30
  • 打赏
  • 举报
回复
从前回答过?是什么意思?从前解决过?
LGYAN 2007-05-29
  • 打赏
  • 举报
回复
op
fu0212 2007-05-29
  • 打赏
  • 举报
回复
能力有限 从前回答过
LGYAN 2007-05-29
  • 打赏
  • 举报
回复
星星在哪里?
lailuboy 2007-05-28
  • 打赏
  • 举报
回复
UP
LGYAN 2007-05-28
  • 打赏
  • 举报
回复
谢谢你的参与
LGYAN 2007-05-28
  • 打赏
  • 举报
回复
实在不理解你的算法,总数目,与长度无关?
你可以举个简单的例子来描述你算法的思想吗?
或者加QQ:79938938
yunyu97 2007-05-28
  • 打赏
  • 举报
回复
你要仔细看清楚我的算法,C31不是材料的总长度,而是总数目,与长度无关。如果仓库的材料数目,即每一种类型的材料数大于步骤1所计算出来的数,那么仓库的材料总数可以看作以步骤1的11为基数×材料的类型数目。
另:如果你不能理解我的算法,我可以给你讲解,但如果你不相信我的算法,那我就没有说的必要了。我还是那句话,没有试过就不能证明。
LGYAN 2007-05-28
  • 打赏
  • 举报
回复
to:
2、把仓库中所有的材料(即每一根)作为全组合里总数,用步骤1得到的数作为每一组的数字个数。比如总数为3+5+5+10+8=31,那么就要计算C31 11,得到每一种组合。

C31是库存材料的总长度,但实际上库存材料都是上万米的。C10000 11计算时间会是多少??考虑过没。

即使时间可允许,那么你如何去判断一种组合可不可以分解成所需要的长度??你的4、5两步我看不懂
麦田之兔 2007-05-28
  • 打赏
  • 举报
回复
难度大
wdtking 2007-05-28
  • 打赏
  • 举报
回复
这个好象是数学里最优化算法,我不会~~
学习下
fankun 2007-05-27
  • 打赏
  • 举报
回复
我测试了一下,1000万组双色球数据大概在55.6m。
我觉得,如果用yunyu97的方法生成组合,然后筛选,应该是可行的,关键是自己要确立好筛选的条件。。
fankun 2007-05-27
  • 打赏
  • 举报
回复
http://www.vbgood.com/viewthread.php?tid=50194&extra=page%3D1
我写的大概60行左右的代码,测试kpm扫描的,1秒可以扫描比较40-60m的数据。
加载更多回复(27)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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