我花费了一些时间研究2D装箱算法。虽然我对算法和高级数学没有广泛的经验,但我会编程 :)
完美的例子是这里展示的http://www.cutlistoptimizer.com。它可以工作,但我无法弄清楚它使用了哪个算法。
我尝试了许多方法,其中一些非常简单,例如https://codeincomplete.com/posts/bin-packing/此处有演示,但它不支持旋转,这是必要的。
对我来说最有前途的是https://ssbothwell.github.io/greedypacker-react/。我不确定我是否做错了什么,但它没有为我计算出最佳拟合。我已经尝试了不同算法的不同组合。
演示数据: 纸张大小:w:2655,h: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
? - Nina Scholz