我写作是因为我有一个离散的优化问题需要解决,而且我认为可能已经有一些理论结果,甚至是 Python 中实现它的库(例如来自 Google 的 OR-Tool)。
问题如下:我有使用不同模具打印的不同对象。你可以把物体想象成小士兵或其他任何东西。每种物体都有不同的模具。我总共有 3 台不同的打印机,其中 2 台可以(同时)使用 8 个模具,1 台可以使用 10 个模具。当不同对象的订单到达时,我必须打印所有对象以尽量减少打印数量。还有一个侧面约束,很重要,但不必直接进入问题的理论表述:每次换模具,都会有巨大的印刷材料损耗。因此,尽量减少模具更换次数甚至比尽量减少打印次数更重要(换句话说,最好打印比所需相同对象更多的次数,
这是一个可能有助于理解的示例:
- 订单:
- 对象 A:80
- 对象 B:95
- 对象 C:101
- ……
- 对象 Z:71
- 模具:
- 答:1
- 乙:2
- C: 3
- ……
- Z:1
- 可用的打印机(他们处理的模具数量):
- P1:8
- P2:8
- P3 10
注意:打印机总是需要装满模具。
我想了一个简单的算法来解决单个打印机的问题,利用每个对象的顺序/模具数量的比率,但我相信有更好的方法,甚至可以同时考虑多个“打印机”。在某种意义上,它类似于装箱问题,但它更复杂一些,条件更多。