我必须将一组x人分成3组或4组,最有可能是3.
我希望人们快乐,所以我让每个人从1到(x-1)评价大组的其他成员。
如何优化首选项以创建3个组?
答案 0 :(得分:3)
这是一种很可能得到良好安排的方法,即使它不是最佳安排:
首先创建一个排名函数,可以接受任何一对分组并确定一个是否优于另一个。然后应用以下算法:
<强>更新强>
如果只需要分配18个人,则只需(18选6)*(12选6)/ 6 = 2,858,856个可能的分组。 (或者,在四个组的情况下(18选4)*(14选4)*(10选5)/ 4 = 192,972,780分组。)
你可以尝试每一个并选择最好的。
我猜排名算法本身就是这项任务的难点。
您可以根据所选人员的分数总和给每个人一个分数,然后将每个人的分数加在一起。
问题在于,您最终将与一组中的所有受欢迎的人以及另一组中的所有不受欢迎的人以及另一组中的所有电话听筒清洁工结束。
你应该随意分配人,然后告诉他们你使用了一些非常科学的系统。这样每个人都能得到很好的组合。
答案 1 :(得分:3)
通过计算实际位置与所述偏好之间的距离来测量给定配置的总满意度。从随机的一组组开始。然后使用爬山或模拟退火等方法进行优化。
http://en.wikipedia.org/wiki/Hill_climbing
http://en.wikipedia.org/wiki/Simulated_annealing
模拟退火听起来很复杂,但它实际上只是一个更聪明的登山版本。