介绍
- 去年年底写遗传算法组卷问题时,网上也看到了不少资料,但是大部分都是讲理论,少见有讲具体实现的,本文主要介绍自己当时完成遗传算法自动组卷问题编程的实现思路,SGA,组卷实数编码、轮盘赌等基础知识在此不做赘述,用作个人回顾,分享,同时如有错误或更好的思路希望指出
实现说明
- 采用基础遗传算法(SGA)
- 选择算子:轮盘赌
- 交叉算子:随机单点交叉
- 变异算子:随机单点不重复变异
- 语言:Matlab
- 结果:实现 难度、知识点、曝光时间 三个维度满足条件的自动组卷,并未着手去解决早熟等问题,题库通过随机数模拟
建模
- 自动组卷问题数学模型即为多维约束条件下求最优解,即从题库抽取满足诸如:题型、难度、知识点章节、曝光时间、总分 等多个条件的试题组卷,因此题目必须具备以上属性用以判断,可用使用对象或者数组实现,本人选择偷懒,通过一维数组来描述题目,那么题库即为二维数组,组卷问题即为从二维数组抽取部分数组(初始种群)对他们进行打分(计算适应度),选取高分试卷的过程;