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-8 17:37 | 显示全部楼层
TO:goots兄 好像不完整,不能运行,能否告知一下。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-8 20:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很感兴趣

TA的精华主题

TA的得分主题

发表于 2003-10-9 15:28 | 显示全部楼层
不好意思,太专业了,没看懂,那些下料方式里面的用量如30,23,1,6等等用什么公式得到的?能举个例子吗? 此外最佳方案指的是什么?哪些应该是变量那些是常量?

TA的精华主题

TA的得分主题

发表于 2003-10-10 11:31 | 显示全部楼层

线材下料、板材下料例子

线材下料(百页料) 不要去用规划求解了,因为EXCEL的规划求解对变量的数量有限制。 0jgdyrWX.rar (3.84 KB, 下载次数: 117)
[此贴子已经被作者于2003-10-10 11:35:39编辑过]

TA的精华主题

TA的得分主题

发表于 2003-10-10 11:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

铝板下料例子

UG94ILzl.rar (100.71 KB, 下载次数: 140)

TA的精华主题

TA的得分主题

发表于 2003-10-10 16:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我用一个VBA试了一下,在对2000进行切分,分成101,201,301,401的情况下,共有方案94种,不知道全不全,我觉得应该是全的,你如果有兴趣,我可以给你一份。

TA的精华主题

TA的得分主题

发表于 2003-10-10 17:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不知楼上的兄弟如何用VBA实现?

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-10 18:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没有错,用我以下的程序可以列出94种切分方案: Sub ccc() Dim 元素数() As Integer, 最大列, 总行, i, j, k0, k, maxcell As Integer Dim 单元数() As Integer Dim 单元大小() As Integer Dim 单元重复系数() As Integer Dim 单元() As Integer Dim 总表() As Integer Dim 子表() As Integer Dim zs, s0 As String Dim xialiao Dim zuiduan Dim sz 总行 = 1 dingchi = 2000 s = "101,201,301,401" xialiao = Split(s, ",", -1, vbTextCompare) 最大列 = UBound(xialiao) ReDim 元素数(最大列) ReDim 单元数(最大列) ReDim 单元大小(最大列) ReDim 单元重复系数(最大列) zuiduan = xialiao(1) For j = 0 To 最大列 元素数(j) = Int(dingchi / xialiao(j)) + 1 总行 = 总行 * 元素数(j) Next ReDim 总表(1 To 总行, 0 To 最大列) For i = 最大列 To 0 Step -1 If i = 最大列 Then 单元重复系数(最大列) = 1 Else 单元重复系数(i) = 单元重复系数(i + 1) * 元素数(i + 1) End If 单元大小(i) = 单元重复系数(i) * 元素数(i) If maxcell < 单元大小(i) Then maxcell = 单元大小(i) 单元数(i) = 总行 / 单元大小(i) If zuiduan > xialiao(i) Then zuiduan = xialiao(i) Next ReDim 单元(0 To 最大列, 1 To maxcell) For i = 0 To 最大列 k0 = 0 For j = 1 To 元素数(i) For k = 1 To 单元重复系数(i) k0 = k0 + 1 单元(i, k0) = j - 1 Next Next Next For i = 0 To 最大列 k0 = 0 For j = 1 To 单元数(i) For k = 1 To 单元大小(i) k0 = k0 + 1 总表(k0, i) = 单元(i, k) Next Next j Next Rem 求符合条件的子集 k = 0 For i = 1 To 总行 k0 = 0 k = k + 1 ReDim Preserve 子表(最大列, k) For j = 0 To 最大列 子表(j, k) = 总表(i, j) k0 = k0 + 总表(i, j) * xialiao(j) If k0 > dingchi Then k = k - 1 ReDim Preserve 子表(最大列, k) GoTo logo1 End If Next If k0 <= dingchi - zuiduan Then k = k - 1 ReDim Preserve 子表(最大列, k) End If logo1: Next For x = 1 To k s = "" For i = 0 To 最大列 Cells(x, i + 1) = 子表(i, x) Next Next End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-10 19:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请大家想象,若何从这94种方案中选出最优的方案?规划求解——刀钝了吧。

TA的精华主题

TA的得分主题

发表于 2003-10-10 19:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在30楼兄弟提供的方法中只是将2000分成101,201,301,401时所取的方案,实际中各种数量是一定的,要根据这长度、数量、原量长去列出各种方案,所以上面还没有达到目地。不过从这94种方案中求最优的可能还得用规划求解。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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