在活动中分配成员的算法(具有个人偏好)

计算科学 算法
2021-12-11 12:17:37

所以在我的学校里,我们有一天每个人都参加不同的活动。每个项目可以有大约 10 个成员。全天分为 2 或 3 个不同的块,其中分配给活动的学生会发生变化。(因此,在块 1 中,学生 x 参加活动 a,在第二块中参加活动 d)。在这一天开始之前,我们列出了每个学生可以告诉我们他想要参加的 3(或 4)项最喜欢的活动(他只参加其中的两项,这些活动也是从“最喜欢”到最不喜欢的顺序)参加。现在我们的工作是以我们在学生中总体满意度最高的方式分配这些学生(所以每个人都或多或少地得到了他/她选择的活动)。解决这个问题的好算法是什么?(我' m 非常熟悉编程(尤其是 java),

一个可选功能是,如果有人无法参与他/她的项目,他们将参与类似的活动(这听起来有点性别歧视,例如,您可以评价此活动的“女性”/“男性”程度并根据这个量表选择类似的活动)

我希望这个问题适合这个平台,如果它完全偏离主题,我很乐意告诉我一个更合适的堆栈。

期待您的建议,约翰

1个回答

尽管您可能可以使用某种优化算法来制定和解决这个问题(混合整数公式会立即浮现在脑海中,而且会很昂贵),但您可以首先尝试查看解决稳定婚姻问题变体的算法。您的问题听起来很像医院/居民问题,但如果不问更多问题就很难确定。