Javascript 二维装箱算法

Javascript 二维装箱算法,javascript,node.js,algorithm,bin-packing,Javascript,Node.js,Algorithm,Bin Packing,我花了一些时间研究二维装箱算法。我在算法方面没有丰富的经验,尤其是在高等数学方面,但我会编写代码:) 这里展示了我需要实现的完美示例。它可以工作,但我不知道它使用什么算法 我尝试过很多方法,其中一些非常简单,但它不支持旋转,这是必不可少的 对我来说最有希望的是 不确定我是否做错了什么,但这并不算是最适合我的。我用不同的算法尝试了不同的组合 演示数据: 板材尺寸:宽:2655,高:2100 { w: 900, h: 320 }, { w: 320, h: 900 }, { w: 900, h:

我花了一些时间研究二维装箱算法。我在算法方面没有丰富的经验,尤其是在高等数学方面,但我会编写代码:)

这里展示了我需要实现的完美示例。它可以工作,但我不知道它使用什么算法

我尝试过很多方法,其中一些非常简单,但它不支持旋转,这是必不可少的

对我来说最有希望的是 不确定我是否做错了什么,但这并不算是最适合我的。我用不同的算法尝试了不同的组合

演示数据: 板材尺寸:宽:2655,高:2100

{ w: 900, h: 320 },
 { w: 320, h: 900 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 900, h: 320 },
 { w: 386, h: 310},
 { w: 386, h: 310},
 { w: 386, h: 310},
 { w: 386, h: 310},
 { w: 386, h: 310},
 { w: 860,  h: 320},
 { w: 860,  h: 320},
 { w: 564,  h: 310 },
 { w: 452,  h: 293},
 { w: 720,  h: 530},
 { w: 720,  h: 530},
 { w: 696,  h: 530},
 { w: 696,  h: 100 }
这些零件应放在一张纸内

参考图像


经过一段时间的研究,我发现我应该使用遗传算法来进化这些启发式方法。这有什么意义吗?

为什么不提前旋转项目以获得
w>=h
?我可以这样做,但不确定这是否会优化包装。我会试着让你知道。@NinaScholz不可能达到最好的结果,因为有些零件应该有不同的旋转,如w