我需要一种算法,根据他们的偏好对表中的人进行分组。每个人都将表格从最喜欢的表格排序到最差。 例如,如果共有4个表,则一个人投票如下:
Alice{ table1 => 2, table2 => 4, table3=>1, table4=>3}
这意味着她希望被放在table3上并且真的不喜欢table2
条件是:
试图解决这个问题我将幸福定义为积分,如果他们将被放在他们喜欢的桌子上,每个人将有幸福10,他们的第二选择有6个,第三个有4个,最后一个有1个。
happiness[10, 6, 4, 1]
全球幸福是每个人幸福的总和。
答案 0 :(得分:1)
解决此问题的一种方法是使用整数线性编程。 ILP有很多解决方案,例如SCIP(http://scip.zib.de/)。
每个分配都有二进制变量,即 如果将i分配给表j,则 = 1(并且0未分配)。
您的目标是最大化总幸福感,即权重总和乘以
现在你已经写了一些条件来确保: