ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: wangyuwy

求救一道经典算法问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-10-15 21:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用f_qc在2003-10-14 11:17:00的发言: 我想如果用程序实现确实不管对于多少不同方法,都是无法减少计算工作量的,对于100个不同长度,总计算量确实是相当大的.30楼的方法是先将所有的组合列在表中,然后再进行判断,计算量一点也不会少.而且从程序来看,计算量应该是刚好一倍,如果在放置所有可能时直接判断,与嵌套的计算量刚好一样
[此贴子已经被作者于2003-10-14 11:26:20编辑过]
试用了一下30楼的程序,发现资源占用太大,实际的例子就无法计算了(跟踪了一下,程序生成了一个320000元素的数组)。 其实,改变一下算法就可以占用很少的资源了。我按照人工求方案的算法,编写了VBA程序,自动根据输入的数据生成切割方法,然后用规划求解得出最后方案。可惜EXCEL的规划求解有200个的变量限制,不过我想在实际的日常应用中应该也够了。 Npb244oV.rar (12.37 KB, 下载次数: 130)

TA的精华主题

TA的得分主题

发表于 2003-10-16 16:14 | 显示全部楼层
谢谢jackal,看了你的文件,我对规划求解有了一定的认识,也知道了楼主提出的这个问题是解决此类问题的第一步.我考虑了一下,不过想的不全,用程序将整个过程实现确实很困难,我还没有想到更好的办法,我初步按常规思路做了一段程序,可以实现,但不是最优的方案.在当前的条件下,也是85根,但我知道这个算法有问题.不知你有没有更好的方案? 帖子太长了影响观看,我将程序删了,不过我不知道如何上传文件?
[此贴子已经被作者于2003-10-16 16:47:52编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-16 16:17 | 显示全部楼层

这是一个好主意 A good idea

Jackal 的算法确有精妙之处,不过却难以理解,请Jackal 详细说说解决思路。

TA的精华主题

TA的得分主题

发表于 2003-10-16 17:44 | 显示全部楼层
以下是引用f_qc在2003-10-16 16:14:00的发言: 谢谢jackal,看了你的文件,我对规划求解有了一定的认识,也知道了楼主提出的这个问题是解决此类问题的第一步.我考虑了一下,不过想的不全,用程序将整个过程实现确实很困难,我还没有想到更好的办法,我初步按常规思路做了一段程序,可以实现,但不是最优的方案.在当前的条件下,也是85根,但我知道这个算法有问题.不知你有没有更好的方案? 帖子太长了影响观看,我将程序删了,不过我不知道如何上传文件?
[此贴子已经被作者于2003-10-16 16:47:52编辑过]
不要用快速回复,用每个帖子上面的回复,然后:文件上传=>浏览=>上传。 我的VBA代码因为写的仓促,可读性不是很好,也没有结构化,以后有时间了再重新写一下,否则到时候连自己都可能弄不明白了。[em12]

TA的精华主题

TA的得分主题

发表于 2003-10-16 21:55 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-17 07:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我还是希望jackal详细解释一下算法思路。请Spide注意,我给出的题目,只是一实例,实际工程中情况是复杂的,它的切法长度需要远不止几十种,而且多变。如果Spide先生对“回溯”算法比较了解或精通,也诚恳邀请你给大家上一课。

TA的精华主题

TA的得分主题

发表于 2003-10-17 10:15 | 显示全部楼层
看来这是一个最热的主题了,我每天都上来看一看.我想知道,在没有用规划求解之前,是如何解决此类问题的? 按照一般人的思维,我想应该是让每一根都是最小的余料量,但我们知道,这肯定不是最剩料的方法,但在许多情况下,这往往也是最省料的一种方案. 规划求解有法得到多组解吗?另外,如果可变单元数量超过200怎么办呢? spide :在多重循环的每一重循环的循环参数的最大值是“动态变动的”,也就是余料整除本层循环切割长度?我没明白?能否解释一下?循环确实可以节约不少工作量,我认真考虑一下,因为尺寸可以按大小顺序排列.谢谢spide 楼主的问题与初始问题确实有很大的不同,我开始也不明白,后来看了jackal的文件我才明白,他要用vba替代的是一根材料对不同尺寸的切法,然后,再用规划求解. 一高兴,就输入了这么多,手都有点累了.我干脆把程序也附上,请大家共同想一下有没有更好的办法.这个程序可以将所有的所有的根数一次输出,如果无法用规划求解倒可以直接替代一下
[此贴子已经被作者于2003-10-21 14:55:22编辑过]

TA的精华主题

TA的得分主题

发表于 2003-10-17 14:06 | 显示全部楼层
回溯算法 http://202.113.96.10/ini/arithetics/No44.htm

TA的精华主题

TA的得分主题

发表于 2003-10-23 11:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用wangyuwy在2003-10-17 7:35:00的发言: 我还是希望jackal详细解释一下算法思路。请Spide注意,我给出的题目,只是一实例,实际工程中情况是复杂的,它的切法长度需要远不止几十种,而且多变。如果Spide先生对“回溯”算法比较了解或精通,也诚恳邀请你给大家上一课。
“回溯”算法看的我头都大了,这几天没怎么上网.这个问题怎么不更新了?实际工作中还有更复杂的问题,再给一个更实际的实际的实例.另外,我想知道,如果用规划求解无法处理(超过200个可变单元)怎么办呢?原先不借助此类工具怎么做呢?

TA的精华主题

TA的得分主题

发表于 2003-10-23 12:57 | 显示全部楼层
据我所知,商业下料(套裁表)软件一般原理,不是使用穷举法,而是使用矩阵算法。记得曾经查阅过一本小小的书——《最优化算法》,作者是日本人,对最优化有精辟的论述,有志者不妨去参考一下。 在这里,本人想提醒楼上各位,线材下料套裁表是最简单的,数据运算量也相对要小,板材下料是一个二维的问题,难度更大。其实,这两个问题,在数据库领域得到了很好的解决。建议有志者用VBA操纵ACCESS来解决这类问题。(不要再去用EXCEL的规划求解了!)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-7-1 06:40 , Processed in 0.045667 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表