遗传算法:在不知道确切组数的情况下对学生进行分组

问题描述 投票:-1回答:1

我有定义级别的学生。一些学生是前一周的小组成员,其中有些是新来的。前一周的学生应该分组。小组的水平由包含学生水平的平均值计算得出。如果学生水平和组水平的差异小于定义的限制(例如3),则可以将新学生添加到组中。还有最小和最大组大小。如果组中没有足够的空间,我们应该创建一个新的空间。我试图用聚类算法(分层和非分层)来解决,但是它们都不适合我的情况。我需要创建最小数量的组。

我想知道遗传算法会起作用。染色体的基因将代表一个学生,并将其分配给班级。适应度函数部分将使用所有约束(最大组大小,最小组大小)。据我了解,在应用遗传算法时,我需要知道在我的情况下尚不清楚的组数。有什么想法吗?

grouping genetic-algorithm
1个回答
0
投票

是的,遗传算法可以工作。我不确定您从哪里知道必须知道组的数量。遗传算法所需要的只是生成孩子的生成器,判断哪个孩子最优秀的适应度函数以及一些数量参数(要为下一代保留多少父母,要生产多少孩子,...等)在生成器中)。

我建议您的个人(“染色体”)列为新一代的群体。为了节省时间,您的生成器应该只生成可行的子代:满足组大小要求的子代。任何不满足要求的孩子都应跳过并更换。

在这种情况下,主要工作是建立一个生成器,该生成器知道如何拆分组:当您发现一个新学生需要一个新组时,则必须从其他组中吸引min_group_size -1个学生。如果您一次拥有全部新生,那么您可以做出全球决策。

这足以使您朝有用的方向发展吗?


每个用户的评论更新:

  • 您不能保证通过遗传算法找到最佳答案。
  • 染色体的数量取决于最适合您的染色体。您需要处理各种可能的组分配以及新的组。这是您必须尝试的地方;欢迎使用机器学习。

我将开始研究“舒适的”染色体数目,也许是组数目乘以sqrt(新学生的数量)。根据时间的限制,我认为20至200条染色体对您有益。成功的关键指标是找到一个好的解决方案的频率,以及花费多少时间来找到解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.