有没有什么算法可以解决这个像装箱这样的问题?

Is there any algorithms I can look into for this bin-packing like problem?

我正在尝试找到一种方法来解决我认为与装箱类似的问题,但据我所知,它略有不同。在我的例子中,目标是将尽可能多的袋子放入每个垃圾箱,而不是使用最少的垃圾箱。也许这是最合适的算法?

在我的示例中,我有多个箱子可以容纳多个袋子,每个箱子只容纳包含特定属性的袋子。每个包都可以有多个属性。目标是尽可能多地利用袋子。我觉得可能有更好的术语来描述我的问题,但我不确定。

就我而言,每当我需要对它们进行分类时,我都完全了解可用的垃圾箱和袋子。

一个简单的例子

bin 1 allows attribute X with 1 slot
bin 2 allows attribute Y with 1 slot
bin 3 allows attribute Z with 1 slot

1 bag has attribute X, Y and Z
2 bags have attribute X and Y

在这个例子中,很明显Z包应该去bin 3。我最初的想法是循环遍历属性最少的bin,先填充它们。

我想知道是否有解决像我这样的问题的既定算法。

我不确定具有 X、Y 和 Z 属性的袋子是否应该放入 Bin Z。如果您有 50 个只有属性 Z 的袋子怎么办?可能我没有完全理解问题...

假设我理解正确,您希望垃圾箱之间均匀分布。

Sort by number of attributes

if (1 attribute) 
    place in matching bin
else
    place in matching bin with lowest count

虽然这不是一个完美的解决方案,但我认为它可以帮助您入门...也许对每个垃圾箱再次使用相同的算法,将垃圾箱从最高计数到最低计数排序。

当然可以。查看:

您希望 maximum cardinality matching in the bipartite graph between bags and slots where they can be placed. Hopcroft--Karp 能够高效地完成工作。