我正在尝试在R中创建笔友对,问题是我不知道如何循环,这样一旦我将一个人配对,这个人和他们的对就会从池中被淘汰,循环会继续下去,直到每个人都有一对。
我已经对配对的标准进行了评级,并为每个人找到了他们与另一个人配对的程度的分数。我认为将每对得分相加,可以了解这对得分总体上有多好(不是很完美,但对于这些目的来说已经足够好了)。然后我找到了每个人的理想配对,并按最挑剔的人到最不挑剔的人(基本上是从最低的最佳配对分数到最高的最佳配对分数的人)排序。我还找到了他们的第二到第八个最佳匹配(数据中可能有大约300人)。
最佳匹配的测试如下:
indexed_fake apply.fin_fake..1..max. X1 X2 X3 X4 X5 X6 X7 X8
14 14 151 3 9 8 4 10 12 2 6
4 4 177 9 5 8 7 11 3 10 12
9 9 177 4 11 3 6 10 7 12 5
5 5 179 7 4 11 3 12 10 8 5
10 10 179 12 10 2 9 3 5 6 4
13 13 182 8 1 12 11 10 5 3 2
1 1 185 7 1 3 8 6 13 2 11
7 7 185 1 12 5 7 4 6 9 11
3 3 187 12 3 8 5 9 1 2 10
8 8 190 8 12 13 3 4 11 1 6
2 2 191 6 12 11 10 3 4 5 1
6 6 191 2 11 7 1 6 9 10 8
11 11 193 12 6 9 5 2 8 11 4
12 12 193 11 3 8 7 12 10 2 5列X1-X8是第一列中列出的人员的8个最佳配对。在这个例子中,每个人都会理想地与他们的前8名中的某个人配对,理想情况下,就像另一位用户提到的那样,最大化配对兼容性。每个人都会得到一双。
如有任何帮助,我们不胜感激!
发布于 2020-12-19 07:31:30
这不是一个具体的答案。但是在这个空间里写起来更容易。你有一个典型的赋值优化问题。这些问题可以使用R中的包来解决。您必须为可行的配对分配偏好权重。例如,14-3可以分配8分,14-9;7分,14-8;6分...14-6;1分。请注意,3-14不会被分配任何分数,因为14喜欢3,3不喜欢14。任何x-y,y-x配对的偏好得分可以是x-y偏好的权重加上y-x偏好的权重。
优化模型将选择加权对,以最大化所有配对之间的总体满意度。
如果你有300个人,我想不出一个简单实现的替代算法。
https://stackoverflow.com/questions/65364629
复制相似问题