【发布时间】:2021-01-04 13:34:47
【问题描述】:
是否有直接的方法(例如带有常用求解器的某些模块)来解决 Python 中众所周知的装箱问题(例如参见 https://en.wikipedia.org/wiki/Bin_packing_problem)衍生的问题?
详细来说,装箱问题,其中 s(i) 是物品的重量
minimize K = sum_j y_j # use as less bins as possible
s.t. sum_i s(i)x_i,j <= B*y_j for all j # bin capacity B must not be exceeded
sum_j x_i,j = 1 for all i # all items have been fit in exactly one bin
x_i,j, y_j being integer variables in {0,1}
应扩展到以下目标函数 K_nonlinear
minimize K_nonlinear = sum_j (y_j + Std({s(i)}) for all x_i,j =1)
s.t. # the same constraints as the bin packing problem (above)
因此,不仅要尽量减少使用的 bin 数量,还要尽量减少共享 bin 的选定项目的标准偏差(这通常会导致一些必要的妥协)。因此,我认为这个问题是非线性的。
感谢任何关于如何使用 python 解决这个问题的建议(python api 就足够了,算法本身也可以用任何其他语言实现)。
到目前为止,我已经尝试扩展现有的装箱求解器(基于 Coin-or 分支和切割求解器)关于目标函数中的附加部分,但失败了。这可能是由于诱导的非线性。
在此先感谢
【问题讨论】:
标签: optimization constraints bin-packing non-linear discrete