我听起来像是典型的装箱问题: x 不同尺寸的产品需要装入不同容量的 y 容器中,最大限度地减少容器数量使用,以及尽量减少浪费的空间。
我可以简化问题,因为产品尺寸和容器容量可以减少到标准的1维单位。即这个产品是1个单位大,而那个是3个单位,这个盒子有6个单位,一个12个。想想鸡蛋和纸箱,或啤酒箱。
但还有一个额外的限制:每个容器都有一个特定的属性(我们称之为 color ),每个产品都有一组与之兼容的颜色。颜色和产品/容器尺寸之间没有相关性;一种产品可能与整个调色板颜色兼容,另一种产品可能只与红色容器兼容。
此问题变体是否已在文献中描述过?如果是这样,它的名字是什么?
答案 0 :(得分:0)
最有可能是2d装箱或经典背包问题。
答案 1 :(得分:0)
我认为此变体没有特殊名称。虽然着色约束首先给人的印象是它的图形着色相关,但它并非如此。它只是对变量值的限制。
在典型的求解器实现中,每个产品(= item)都有一个变量,它被分配给哪个容器。颜色约束只会减少特定变量的值范围。因此,不要指定所有变量使用相同的值范围,而是使其变量具体。 (例如,在OptaPlanner中,这是提供by the solution generally or by the entity specifically的值范围之间的差异。)因此着色约束甚至不需要成为约束:它可以是大多数模型的一部分解算器。强>
任何能够处理垃圾箱包装的解算器都应该能够处理这种变体。您的问题实际上是Roadef 2012 Machine Reassignment problem的放宽,这是关于将进程分配给计算机。简单地删除所有约束,除了1个资源使用约束和将某些进程排除到某些机器的约束。该用例在许多求解器中实现。 (尽管实际上从Cloud Balancing这样的基本bin包装示例开始可能更容易。)