我正在尝试使用匈牙利算法根据学生的喜好将学生分类。
在我的数据集中,大约有 550 名学生,每个学生都有一个排名前 5 的偏好列表。每个首选项都是一个对应于一个类的 ID。每个班级都有最小和最大容量(在我的例子中,最小上限为 15 人,最大上限为 27 人),数据集中有 21 个班级。
这是每个学生的示例数据集:
电子邮件 | 第一选择 | 第二选择 | 第三选择 | 第四选择 | 合适的选择 |
---|---|---|---|---|---|
电子邮件@gmail.com | 4 | 7 | 1 | 8 | 21 |
email2@gmail.com | 6 | 9 | 14 | 17 | 2 |
这是每个类的示例数据集:
班级名称 | 班级号 | 最小帽 | 最大上限 |
---|---|---|---|
班级标题1 | 1 | 15 | 27 |
类标题2 | 2 | 15 | 27 |
班级标题3 | 3 | 15 | 27 |
我需要将学生分类到他们喜欢的班级,同时还要遵循最小容量和最大容量。为此,我打算使用匈牙利算法。
因为有大约 550 名学生和 21 个班级,并且为了让匈牙利算法起作用,我打算制作这些班级的“副本”。我会首先为每个班级(如班级 1.1、1.2、1.3、1.4、2.1、2.2、2.3 等)制作 15 个副本,以满足班级的最低要求,然后将更多副本添加到其中最受欢迎的班级直到有相同数量的学生和班级副本。
然后,根据学生的副本和偏好,我正在考虑制作一本字典并使用该算法的实现。
我有几个问题:
- 这个计划是一个好的计划还是有更好的解决方案来解决我遇到的问题?
- 如何制作所有链接回原始 ID 的类的副本?
- 在将其实现到算法中时,我应该将学生的偏好放入字典中(如 GitHub 链接所示),但如果现在有 1.1 之类的 ID,人们的选择是 1,并且没有像这样的实际类算法,我应该如何解决?
提前谢谢您,如果您需要任何澄清,请告诉我