我正在寻找一种方法来根据个人偏好将人分类。基于偏好的分组算法
例如,假设有100名学生,其各自将被分配五类之一:
- 科学 - 40席
- 数学 - 15席
- 历史 - 15席
- 电脑 - 20席
- 写作 - 10席
每个学生都有三个首选的班级,按照偏好排序。最好的办法是分开学生,让尽可能多的人获得他们的第一和第二选择课程,同时确保没有班级的学生太多。
我想过通过下面的方法接近它:
- 集团所有的学生通过他们的第一选择类
- 看哪个班有太多的学生和具有太少
- 检查到查看超额预定班的任何学生是否有已预订的第二选择课程
- 相应地移动这些学生
- 重复2-4与第三选择课
虽然我觉得这是一个合理的实现,但我想知道是否有其他算法可以更好地解决这个问题。我试过了所有的搜索,但是我找不到任何能解决这类问题的东西。
一个“问题”与这些种类的算法是,它很容易“骗”选择流行的(小)课程作为第二和第三选择,迫使一个1选择位置。我对于解决这个问题的解决方案会非常感兴趣(尽管我目前没有直觉去接近它)。 – Joost 2016-03-24 14:32:34