【发布时间】:2016-02-19 13:38:46
【问题描述】:
我正在编写一个算法来匹配不同群体的学生。每组名额有限。每个学生提供他们的前 5 组选择。然后将学生按预定顺序分组(年龄较大的学生和出勤率高的学生优先级更高)。组不需要完全填满,但不能通过容量填满。
我研究过类似的婚姻问题,例如 Gale-Shapely 稳定婚姻算法,但我遇到的问题是组比学生少得多,每个组可以接受多个学生。
实现这种算法以找到一个完全优化的解决方案的最佳方法是什么,使得学生分组没有更好的安排?在算法复杂度方面,我将大约 600 名学生分成 10-20 个小组。
【问题讨论】:
-
每个小组的学生人数必须相等吗?
-
什么是数学上最完美的?如果学生 A 的优先级高于学生 B,那么 A 的第 2 选择和 B 的第 3 选择的安排是否比 A 的第 1 选择和 B 的第 5 选择更好?
-
没有“数学上最完美的”。您需要一些评估给定安排的功能。也就是说,如果你定义这个函数是线性的,那么这是一个(整体)线性程序:en.wikipedia.org/wiki/Linear_programming 应该有 Java 库。如果您在制定不等式方面需要帮助,我可以提供帮助,但我想先看看您是否对该方法感兴趣。
-
@nafas 每个组都有最大容量,但这些容量因组而异。任何组都不能完全填满,但不能超过其容量。
-
@Aziuth 也许我的措辞并不完全准确,但我的印象是(至少根据稳定的婚姻问题)总有稳定的婚姻存在。我正在寻求一个完全优化的解决方案,以便没有更好的学生安排。
标签: java algorithm optimization stable-marriage