我有定义级别的学生。一些学生是前一周的小组成员,其中有些是新来的。前一周的学生应该分组。小组的水平由包含学生水平的平均值计算得出。如果学生水平和组水平的差异小于定义的限制(例如3),则可以将新学生添加到组中。还有最小和最大组大小。如果组中没有足够的空间,我们应该创建一个新的空间。我试图用聚类算法(分层和非分层)来解决,但是它们都不适合我的情况。我需要创建最小数量的组。
我想知道遗传算法会起作用。染色体的基因将代表一个学生,并将其分配给班级。适应度函数部分将使用所有约束(最大组大小,最小组大小)。据我了解,在应用遗传算法时,我需要知道在我的情况下尚不清楚的组数。有什么想法吗?
是的,遗传算法可以工作。我不确定您从哪里知道必须知道组的数量。遗传算法所需要的只是生成孩子的生成器,判断哪个孩子最优秀的适应度函数以及一些数量参数(要为下一代保留多少父母,要生产多少孩子,...等)在生成器中)。
我建议您的个人(“染色体”)列为新一代的群体。为了节省时间,您的生成器应该只生成可行的子代:满足组大小要求的子代。任何不满足要求的孩子都应跳过并更换。
在这种情况下,主要工作是建立一个生成器,该生成器知道如何拆分组:当您发现一个新学生需要一个新组时,则必须从其他组中吸引min_group_size
-1个学生。如果您一次拥有全部新生,那么您可以做出全球决策。
这足以使您朝有用的方向发展吗?
每个用户的评论更新:
我将开始研究“舒适的”染色体数目,也许是组数目乘以sqrt(新学生的数量)。根据时间的限制,我认为20至200条染色体对您有益。成功的关键指标是找到一个好的解决方案的频率,以及花费多少时间来找到解决方案。