Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于偏好的人群分组算法_Algorithm_Grouping - Fatal编程技术网

Algorithm 基于偏好的人群分组算法

Algorithm 基于偏好的人群分组算法,algorithm,grouping,Algorithm,Grouping,我需要一个算法来根据人们的喜好在表格中分组。每个人都投票将表格从最喜欢的到最差的排序。 例如,如果总共有4个表格,则一人投票如下: Alice{ table1 => 2, table2 => 4, table3=>1, table4=>3} 这意味着她想被放在第三张表上,而实际上她不喜欢第二张表 条件是: 每个人都必须在一个小组里 所有组别的人数必须相同(容忍度为1) 最大化全球“幸福” 为了解决这个问题,我将幸福定义为分数,如果每个人都被放在他们最喜欢的桌子上,他

我需要一个算法来根据人们的喜好在表格中分组。每个人都投票将表格从最喜欢的到最差的排序。 例如,如果总共有4个表格,则一人投票如下:

Alice{ table1 => 2, table2 => 4, table3=>1, table4=>3}
这意味着她想被放在第三张表上,而实际上她不喜欢第二张表

条件是:

  • 每个人都必须在一个小组里
  • 所有组别的人数必须相同(容忍度为1)
  • 最大化全球“幸福”
为了解决这个问题,我将幸福定义为分数,如果每个人都被放在他们最喜欢的桌子上,他们会得到10分的幸福感,第二个选择是6分,第三个选择是4分,最后一个选择是1分

happiness[10, 6, 4, 1]

全球幸福感是每个人幸福感的总和。

解决这个问题的一种方法是使用整数线性规划。 ILP有很多解决方案,例如SCIP()

每个赋值都有二进制变量,即。 =1,如果将人员i分配给表j(0表示未分配)

你的目标是最大化总体幸福感,即权重之和乘以

现在您已经编写了一些条件,以确保:

  • 每个人只分配到一个表中,即每个i的和等于一
  • 所有表格都有相似的人数(您可以事先确定人数的可能范围),即每个j的部分人数在定义的范围内

我明白你的观点,但我仍然不知道如何编写此类条件和一些编辑,但我建议阅读一些关于整数线性规划的教程。比如:谢谢你给我指出了正确的方向,我会好好看看这些为什么我会被否决?如果有人看到类似的问题,请告诉我