遗传算法在组卷中的应用 遗传算法代码( 二 )
可以自定义终止条件 。例如,本例中定义的终止条件是找到期望的序列,进化的次数或适应度的上限可以根据具体场景的要求来指定 。
"遗传算法在组卷中的应用
选择遗传算法最优解的原则可以应用于许多实际函数,本案例将其思想应用于组卷函数 。算法的基本原理相同,但算法的细节需要根据生成试卷的实际情况进行调整 。算法中的个体是一张试卷,试卷中的题目数量根据不同的题库系统而有所不同 。
其实网上有很多关于生成试卷的应用 。对于组卷来说,共同的属性是知识点的覆盖率和试卷的难度系数 。单项试卷需要按照自定义的RuleBean进行初始化,基本属性包括个人期望难度系数、试卷总分、试卷包含的知识点、选择题数量、选择题分值等 。初始化个体时,根据规则从数据库中随机选取相应的试题,计算试卷的适应度、难度系数和知识点覆盖率 。根据实际问题中个别对象的不同,三者的计算方法也会有所变化 。
![遗传算法在组卷中的应用 遗传算法代码](http://img.jiangsulong.com/221206/0442255926-4.jpg)
文章插图
图6计算个人难度系数的实现代码 。
![遗传算法在组卷中的应用 遗传算法代码](http://img.jiangsulong.com/221206/0442256395-5.jpg)
文章插图
图7个人知识点覆盖率实现代码 。
![遗传算法在组卷中的应用 遗传算法代码](http://img.jiangsulong.com/221206/0442255520-6.jpg)
文章插图
图8计算个体适应度的实现代码 。
个体变异的操作是根据定义的变异概率进行概率变异 。变异对象是试题,个体中的试题有一定概率变异成数据库中其他科目、类型相同的试题 。利用淘汰数组选择种群中的最佳个体,具体操作是从种群中随机选择5个个体组成淘汰数组,并返回淘汰数组中的最佳个体 。
在试卷的开始,你可以定义进化的数量和期望的适合度 。初始化种群后,可以根据试卷规则进行迭代进化 。由于数据库数据的限制,无论进化多少次,都可能达不到预期的适合度 。所以你需要设定一个进化的上限,比如100次 。最初的人口数量不应该太多 。在遗传算法的组卷应用中,个体就是组卷,需要在种群初始化时进行初始化 。在按照定制规则进化的过程中,当种群中有满足要求的个体时,进化就结束了 。这时,最优的个体就是符合我们要求的个体,也就是一套试卷 。
"总结”
这种做法以前在互联网上是零散的研究,也是算法第一次应用到web的开发中 。可以认为对该领域的应用有一定的了解 。算法的设计和原理也是边学边写,主要应用于根据算法原理生成试卷的功能模块 。希望这篇文章能给其他朋友一些思路 。
对IT技术感兴趣的,欢迎关注微信官方账号:白帽同学 。
推荐阅读
- 白敬亭|《卿卿日常》还在热播,白敬亭又一刑侦剧将袭,女主颜值实力不俗
- 早教、启蒙游戏 早教启蒙
- 甄嬛传|在《甄嬛传》中,为何甄嬛刚一进宫就能拥有槿汐姑姑这样高位份的宫女?
- 张红军|“新八级工”,看看你在哪一级?
- 让黄晓明在姐姐们前面一秒变尴尬的“奥利给”用英语怎么说?
- 网络语nice什么意思 nice是什么中文意思
- 谈恋爱凭感觉,即使不了解也会在一起的4个星座
- 周炜|相声名家周炜评汪小菲事件,直言他们在给文艺界抹黑
- 临沂孙伟华,你在哪里?丈夫和孩子盼着你早点回家
- 窈窕淑女|央视主持程前:生父在眼前14年从不知晓,去世后才喊了一声爸