基于MATLAB的遗传算法自动组卷问题实现

这篇博客介绍了如何使用MATLAB实现遗传算法自动组卷,包括选择轮盘赌法、随机单点交叉和变异算子。作者用一维数组表示题目,并通过随机数模拟题库,最终实现难度、知识点和曝光时间等条件下的组卷。文章提到未解决早熟问题,且代码已上传至GitHub。
摘要由CSDN通过智能技术生成

介绍

  • 去年年底写遗传算法组卷问题时,网上也看到了不少资料,但是大部分都是讲理论,少见有讲具体实现的,本文主要介绍自己当时完成遗传算法自动组卷问题编程的实现思路,SGA,组卷实数编码、轮盘赌等基础知识在此不做赘述,用作个人回顾,分享,同时如有错误或更好的思路希望指出

实现说明

  • 采用基础遗传算法(SGA)
  • 选择算子:轮盘赌
  • 交叉算子:随机单点交叉
  • 变异算子:随机单点不重复变异
  • 语言:Matlab
  • 结果:实现 难度、知识点、曝光时间 三个维度满足条件的自动组卷,并未着手去解决早熟等问题,题库通过随机数模拟

建模

  • 自动组卷问题数学模型即为多维约束条件下求最优解,即从题库抽取满足诸如:题型、难度、知识点章节、曝光时间、总分 等多个条件的试题组卷,因此题目必须具备以上属性用以判断,可用使用对象或者数组实现,本人选择偷懒,通过一维数组来描述题目,那么题库即为二维数组,组卷问题即为从二维数组抽取部分数组(初始种群)对他们进行打分(计算适应度),选取高分试卷的过程;
    在这里插入图片描述

  • 具体实现

  • 题目:一维数组,[id、type、score、difficult、section、interval],id为题目编号,用于区分题型确定题目分数,difficult为题目难度系数,section为题目所在章节,interval为题目曝光时间,即最近一次被抽到是几次前,避免高频题出现;
  • 题库:通过for循环生成题库,其中id即为index,为简化问题&
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值