【问题标题】:Genetic Algorithm: Grouping students without knowing exact number of groups遗传算法:在不知道确切组数的情况下对学生进行分组
【发布时间】:2019-10-30 14:43:53
【问题描述】:

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

我想知道遗传算法是否有效。染色体的基因将代表一个学生和他们分配到一个班级。健身功能部分将使用所有约束(最大组大小,最小组大小)。 正如我对应用遗传算法所了解的那样,我需要知道组数,这在我的情况下并不清楚。有什么想法吗?

【问题讨论】:

  • “初始人口的最佳方式”是什么意思?这听起来像是对某些系统设计的要求(题外话)。
  • 我们需要您完全定义问题,以及到目前为止您为开发算法所做的工作。是什么决定了新学生是否加入特定的小组?什么可以强制组建一个新的群体?什么评估决定了最佳分组?
  • 我已经编辑过了。
  • 没有可以确定最佳分组的评估。我们应该有尽可能少的组。

标签: grouping genetic-algorithm


【解决方案1】:

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

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

这个场景中的主要工作是设置一个知道如何拆分组的生成器:当你发现一个新学生需要一个新组时,你必须从其他组中抽取min_group_size-1 个学生。如果您同时拥有所有新生,那么您可以做出全局决策。

这足以让你朝着有用的方向前进吗?


根据用户评论更新:

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

我会从“舒适”的染色体数量开始调查,也许是群体数量乘以 sqrt(新生数量)。根据时间限制,我认为 20 到 200 条染色体对你有好处。您衡量成功的关键指标是它找到出色解决方案的频率,以及您花费了多少时间来寻找它。

【讨论】:

  • 感谢您的回答,是的,它对我帮助很大。还有一个问题。那么在这种情况下,我最初应该创建多少条染色体?确保找到最佳解决方案。
  • 非常感谢!它让我对某些部分有了清晰的了解。
【解决方案2】:

是的,可以在优化的帮助下形成学生组。遗传算法(GA)不是唯一一种应用于特定问题的优化算法,还有粒子群优化(PSO)。在最近的一项研究中,实施了 PSO 以将学生分类为未知数量的组。与 GA 相比,PSO 显示出改进的能力。我认为你所需要的只是具体的研究。

论文是:使用粒子群优化形成学习者的自动组以应用差异化教学

你可以在这里找到论文:https://doi.org/10.1002/cae.22191

也许研究人员可以引导您通过研究之门: https://www.researchgate.net/publication/338078753

正如我所见,研究人员使用每个簇的特征作为解决方案向量(染色体),并结合确定组数的阈值(非常有趣 - 我认为这正是您所需要的)。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多