开放空间坐姿优化算法

时间:2010-06-11 13:01:54

标签: algorithm optimization combinatorics

由于公司的变化,我们必须重新安排我们的坐姿:一个房间有10个办公桌。出于多种原因,一些办公桌比其他办公桌更受欢迎。一种解决方案是从帽子中抽出一个桌号。我们认为有更好的方法。

我们有10张桌子和10个人。让我们为这场比赛中的每个人提供50个假设的代币,以便在桌子上出价。你在一张桌子上出价的数量没有限制,你可以把全部50张,这就是说“我只想坐在这里,期间”。你也可以通过给每张桌子5个代币来说“我不在乎”。

重要提示:没有人知道其他人在做什么。每个人都必须根据他/她的最佳利益来决定(听起来很熟悉?)

现在我们假设我们获得了这些假设结果:

#  | Desk# >| 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 |
1  | Alise  | 30 | 2  | 2  | 1  | 0  | 0  | 0  | 15 | 0  | 0  | = 50
2  | Bob    | 20 | 15 | 0  | 10 | 1  | 1  | 1  | 1  | 1  | 0  | = 50
   ...
10 | Zed    | 5  | 5  | 5  | 5  | 5  | 5  | 5  | 5  | 5  | 5  | = 50

现在,我们需要找到的是一个(或多个)配置可以让我们获得最大的满足感(即,人们可以获得他们想要考虑所有出价的办公桌,并最大限度地提高团队的总数。自然假设桌面越多,他/她想要的就越多。)

由于只有10个人,我认为我们可以强行查看所有可能的配置,但我想知道有更好的算法来解决这类问题吗?

2 个答案:

答案 0 :(得分:3)

您似乎正在查看可以使用Assignment Problem解决的Hungarian Algorithm。这是一个研究得很好的问题,你可能会在网上找到可以使用的代码。

在您的情况下,您可以使用cost = 50 - bid并使用上述(任何分配问题的解决方案)。

答案 1 :(得分:0)

更快,如果你有Excel,你也应该有一个SOLVER版本。只需设置您的出价矩阵(10x10有出价),分配矩阵(10x10和0/1分配),使用sumproduct(出价,分配)来计算分配的值,使其成为您的目标函数,并添加约束,以便有只有一个人分配给办公桌和人们。确保你有选项>检查“线性模型”框并“假设非负面”并解决掉!我只是设置了10x10的样本问题 - 似乎工作正常。

相关问题