小编use*_*917的帖子

将学生分组的最快启发式算法是什么?

我有 X 名学生,其中 X 是 6 的倍数。我现在想将学生分成 6 人一组。

我有一个函数可以衡量 6 人一组的“好”程度(假设它是一个目前以恒定时间运行的黑匣子)。通过将学生分开,然后对每个组调用我的函数来衡量其优点,然后总结每个组的优点,我就能够衡量一组特定组的“好”程度。

我正在尝试创建一种算法,以某种方式对学生进行分组,以使所有组的总优点最大化,并且没有组的个体优点低于某个值 y。换句话说,将学生分成 6 人一组,以在所有组的优度都高于 y 的约束下最大化总优度。

我预计运行该算法的学生数量 (X) 约为 36 人。

这个问题似乎是 NP 完全的,所以我同意采用启发式算法。我对此没有太多经验,但我认为某种遗传算法或模拟退火甚至贪婪算法可能会起作用,但我不确定从哪里开始我的研究。

有人可以指出我正确的方向吗?我做了一些研究,这个问题似乎与旅行商问题几乎相同(问题空间是学生/节点的所有排列),但我不认为我可以将 TSP 算法应用于此,因为“节点”的数量“(大约 36)对于任何有效的东西来说都是相当大的。

algorithm computer-science simulated-annealing greedy genetic-algorithm

5
推荐指数
2
解决办法
2225
查看次数