注册 登录
编程论坛 VB6论坛

求图片中的算法代码!在excel中运行!

zhaoyin 发布于 2022-05-30 14:47, 2345 次点击
只有本站会员才能查看附件,请 登录
9 回复
#2
约定的童话2022-05-30 15:06
VBA都不一定好使,计算量巨大,有多线程的一维钢筋下料软件,百度上找找看
#3
daitq70182022-05-30 16:54
网上有给定的钱买不同的商品组合的vba例子,搜索一下可以得到解答
#4
风吹过b2022-05-30 21:14
用 EXCEL 表格想了下,变量太多了,表格不好做,还是写程序吧!!
程序,按每种原料都是去截一下,我觉得应该是计算剩余料的来计算吧,剩的越少越好。

我想到的想法:
先按每种最大截多少,找到剩料最少的,然后最后的需要零头,再看看哪种剩的最少。
如,第1个 1350,一、用 3000 截,每根可以截2根,多300*2,差1根
                二、用4500截,每根可以截3根,多 450,差2根
                三、用6000截,每根可以截4根,多 600,差1根
然后,一、1根,用3000截,多1650,前面退一根,3根,用4500截,多450 。得到二种方案
          方案一:3000*2+3000*1,多600+1650 , 方案二:3000*1+4500*1,多300+450
      二、2根,用3000截,多300,退一根,5根,无法直接截。得到一种方案
          方案三:4500*1+3000*1,多450+300
      三、1根,用3000截,多1650,退一根,5根,无法直接截。得到一种方案
          方案四:6000*1+3000*1,多600+1650
然后比较剩余料,得到方案二和方案三,剩料最少。OK就它们了。
然后这个方案,根据原料长度排序,得到的结果是一样的,去重,就剩方案二了。

.....................

  
#5
wmf20142022-05-30 21:26
这应该用贪心算法就可以吧,最优算法当然是动态规划。常规练习,不难的。
#6
zhaoyin2022-05-30 22:59
回复 2楼 约定的童话
问题是这个是配合表格其他功能用的,这个是铝材,跟钢筋不一样,要最小浪费的方案,可以做固定单一材料长度!
#7
zhaoyin2022-05-30 23:02
回复 3楼 daitq7018
那个是可以累加,这个是不能累加的,要分条分类!
#8
zhaoyin2022-05-30 23:05
回复 4楼 风吹过b
那跨种类的要怎么搞,比如全部用6米的开,开了两条1.4米的,又开了一条2米的,还可以开一条1米的,这样的组合计算又要怎么算?
#9
zhaoyin2022-05-30 23:10
回复 5楼 wmf2014
你说的太深奥,我菜鸟不懂,我感觉你说的有点像python
#10
hmj07452022-06-01 01:39
回复 楼主 zhaoyin
    你这个题目,用代码的话也可以实现,要以最优化组合代码写起来也是比较麻烦的。
目测用笔在纸上画一下组合一下更简单(用量庞大的话还是要计算出最优化的方案,因为一套料省一根就能省很多了)
估算用6000的料比较省,
思路就是最大用料需求算起,余料是最相近的下级规格,优先取余数最小。(4500和3000的料不能满足这个条件比较费料)

一,5800  的需求 ,用6000料,8根,(余料长度200不可用)
二. 3800 的需求, 用6000料,4 根 ,(余料长度刚好产生 2200 4根)
三. 3420  的需求,用6000料,7根,(余料长度2580, 匹配2540 规格的6根,多1根 锯成 2200)
四,3200 的需求,用6000料,9根,(余料长度2800 共9根。锯开2根,做(1350+ 1250 )两款料, 7根锯 2200规格的
 rem  2580 规格已够
rem   1250规格已够

至此: 2200差4根,1700 差 4 根  ,1350 差 3 根。如果从这里选  用4500原料,尾料会省一些。

五    用4500料  5 根, 取4根锯2200 和 1700 规格, 余料长 600 共4根
                       取1 根锯1350 的 3份,余料长  450  共1 根

用料:6000的 28根, 4500的 5 根, 这是目测估算的组合。 哪位大侠能否码测算一下,我也好验证一下,这个估算是否比较接近。
1