因此,在我们学校,我们有一天每个人都参与不同的活动。 每个项目可以有10个成员。整天分成2或3个不同的块,其中分配给活动的学生改变(所以在块1中,学生x参与活动a,在活动d中参与第二块)。 在这一天开始之前,我们给出一份名单,让每个学生可以告诉我们他最喜欢的3件(或4件)活动(他只参加了其中的两件,这些活动再次从大部分“最喜欢的”到最少的)想参加。 现在我们的工作是以这样一种方式分配这些学生,使得我们在学生中获得最好的总体满意度(所以每个人或多或少都会获得他/她所选择的活动)。什么是解决这个问题的好算法?对编程(特别是Java)非常熟悉,所以这种方法也足够了(尽管一些(伪)代码也会很好:)) 除了计算这样的“满意度”之外,是否有任何方法可以做到这一点?每种可能解决方案的价值?通过活动分发成员的算法(带有个人偏好)
一个可选的功能是,如果有人不能进入他/她的项目,他们会进入一个类似的(也这听起来是一种性别歧视,你可以例如评价“女性”/“男性“这个活动是根据这个规模选择类似的活动)
我希望这个问题适合stackexchange,如果它是完全偏离主题我会很乐意告诉我一个更合适的堆栈。
期待您的建议, 约翰
是否有任何最低的项目需要发生的学生或1是足够的 –
将不得不比一个或两个在一个组:) :) – joz