安梦生, 吴克力
(1.南京理工大学 计算机科学与工程学院, 江苏 南京 210094;2.淮阴师范学院 计算机科学与技术学院, 江苏 淮安 223300)
基于Moodle平台的组卷模块设计与实现
安梦生1, 吴克力2
(1.南京理工大学 计算机科学与工程学院, 江苏 南京210094;2.淮阴师范学院 计算机科学与技术学院, 江苏 淮安223300)
摘要:针对Moodle原生测试模块学生不能自主测试、组卷不够智能化、成绩反馈不全面等问题,给出一种基于遗传算法的自动组卷方案.设计遗传算法的染色体编码方案以及算法的选择算子、交叉算子和变异算子.对Moodle进行二次开发,使用PHP语言实现了自动组卷模块,扩展了Moodle平台测试模块的功能.
关键词:遗传算法; 智能组卷; Moodle
0引言
Moodle(modular Object-Oriented Dynamic LearningEnvironment)是由澳大利亚教师Martin Dougiamas开发的一个免费、开源的课程管理系统(CMS),是一种模块化的、面向对象的、动态学习环境[1].目前已经成为全球应用最广泛、最受一线教师喜爱的网络教学平台之一.
Moodle经过多年的发展,其源代码已超过160万行,成为功能较为强大的网络教学管理系统.目前最新版Moodle 3.0提供了大部分在线学习和课程管理的功能(课程设计、作业发布、在线测试、教学反馈等)[2].虽然Moodle已具网络课程所需的大部分功能,但在实际教学过程中,由于课程之间的差异性和个性化需求,常常需要基于Moodle平台进行二次开发.Moodle二次开发的重点不是对Moodle的核心代码和模块的修改,而是针对其外部功能模块的设计和开发以满足特定的需求,即围绕Moodle的核心代码进行的模块开发[3].本文在Moodle原有测试模块的基础上,基于遗传算法设计并实现了具有模拟测试功能的组卷模块.该模块可依据题型、章节重点、难度系数等因素进行智能组卷,供学习者进行反复练习与测试,进而提高学习效果.
1智能组卷模块需求分析
1.1Moodle测试模块简介
Moodle平台原有的测试模块工作流程是教师先上传题库,然后创建一个测试,设置好时间,导入题目,通知学生开始测试.不难发现,Moodle平台具有的测试模块的功能非常简单,存在如下局限性:首先,测试只能由教师创建,学生不能进行自主选择章节进行练习和测试,不利于学生的学习;其次,虽然提供了随机选题的功能,但不具有根据学生的个体差异进行有针对性的组卷,智能程度低;最后,学生测试完后只能看到自己的成绩,无法获知全班综合得分和自己排名情况.综上,Moodle平台原生测试模块存在不能自主选择测试、组卷智能程度低、成绩呈现欠完整等问题.
1.2需求分析
通过对 Moodle平台原有的测试模块进行分析,自主测试模块需要包括三个部分:一是章节练习模块;二是基于遗传算法的自动组卷模块;三是成绩反馈模块.在章节练习模块中学生需选择相应的章节,系统从题库中调出所有本章题目.组卷模块的主要功能是根据学生输入的参数,如考试章节知识点、题目数量、难度系数组卷.成绩反馈模块是综合全班同学的得分情况并以图表方式呈现.
模块主要研究内容: ①实现学生自主模拟测试; ②实现智能组卷; ③反馈学生成绩统计信息.
2开发环境及技术简介
2.1开发环境
Moodle二次开发环境[4],在Windows 7或者Windows 8系统下,后台数据库为MySQL,由于占用空间比较小、运行也非常快、性能稳定的特点而在全球范围内都被大量应用. 服务器为闻名全球的 WEB 服务器之一 Apache,几乎可以在全部的计算机平台运行.它的优势有很多,比如非常容易操作,运行速度快,不易出现问题等.开发语言选用了 PHP 通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法,它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多.PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快.
2.2相关技术
模拟测试的关键技术之一就是自动组卷技术,目前较为流行的组卷方法[5]有随机法、回溯法、遗传法等.随机组卷算法结构简单,对于单道题的抽取运行速度较快,但是对于整个组卷过程来说成功率低,无法确定目前条件下哪些区域能够抽取合适的试题.回溯法是有条件的深度优先算法,对于题型和出题量都较少的题库而言,组卷成功率高.但在实际应用过程中,内存占用量大,算法实现比较困难.遗传算法[6](Genetic Algorithm,GA)是根据生物界中的进化规律,模拟生物遗传进化过程来求得问题最优解的一种计算模型.主要特点有并行性、通用性、自适应性、全局优化性和收敛速度快等.本模块采用的是基于遗传算法的自动组卷技术.
3模块设计与实现
3.1设计思想
Moodle模拟测试模块其核心部分是基于遗传算法的自动组卷.组卷的目标就是从试题库中找出一个试题集合,使这个集合满足如下条件:一是时间分配、题量及分值分配合理;二是题型分布、知识点章节比(覆盖面、重难点等)合理;三是难易程度合理等.从而生成一份科学合理的试卷.依据上述条件,可以将试题组的属性值构成一个矩阵Mn×6.
其中n为试卷的总题数,每行代表一个试题,每列代表试题的一个属性,分别为分值、题型、知识点章节、时间、难度系数和题目区分度.遗传算法数学模型首先要解决的问题是个体进行编码,而编码和解码的复杂度、运算时间、运算量等都将影响到之后的交叉、变异和选择操作的效率.
1) 编码方案.采用自然数分段编码[7]的方式.即用试题库中试题的题号直接进行编码,为了减少解码过程,采用分段编码方式每一段代表一种题型,且各段的编码是独立的.其中,试题的编号代表组成染色体的基因,而一条染色体就代表了一份试卷.染色体的长度就是试卷中试题的个数.如表1中描述了一张试卷染色体的编码情况.
表1 试卷染色体编码表
2) 产生初始种群.根据用户输入的难度系数及各种题型的题目数,从相应题型表中随机抽取试题.将被选中的试题的编号组成染色体,按照设定好的种群规模生成若干个染色体,就形成初始种群.假设初始种群规模为m,初始种群用T来表示,则一个初始种群可描述为下面的形式:T(αl,α2,…,αm)其中,αi(i=1,2,…,m)表示种群中的一个个体,即代表一份试卷.而遗传算法执行的目的,就是从这个群体出发,按照遗传进化的规则进行演化,最终找出最符合条件的一个个体,即最优解.
3) 适应度函数.适应度值越大,个体越优秀.在组卷中往往采用个体对应的试题属性与成卷要求之间的误差作为用目标函数f(x),其值越小,成功率也就越高,即f(x)值反映了组卷结果的优劣.因为在初始种群产生之前,也就是在设计染色体编码方案时,已考虑题型、题量、知识点等约束条件,因此只要考虑难度系数.试卷难度系数公式:
(1)
其中,n是试卷所含的题目数(i=1,2,…,n),Di,Si分别是第i题的难度系数和分数.用户的期望难度系数EP与试卷难度系数P之差f越小越好.
f=|EP-P|
(2)
将目标函数f(x)转化为适应度函数F(x),主要有线性变换法、幂函数变换法、指数变换法.本文采用的是指数变换法,变化公式为:
F(x)=e-af(x)
(3)
指数变换方法的思想来源于模拟退火过程(simulatedannealing,SA),其中a取值0.02.
4) 选择操作.选择即从当前群体中选择适应度高的个体以生成交配池(matingpool)的过程.目前,主要有适应值比例选择、Boltzmann选择、排序选择(rankselection)、联赛选择(tournamentselection)等形式.本算法采用轮盘赌选择法[8](roulettewheelselection),这是最简单的一种选择方法.对于给定的规模为m的群体T={α1,α2,…, αm},个体αi∈T的适应度值为F(αi).选择过程如下:
① 分别计算群体中每个个体的适应度值F(αi);
③ 将个体按照累积概率升序排序;
④ 每一轮产生一个[0,1]均匀随机数s;
⑤ 每次将s与ci进行比较,若s≪ci,则1个个体被复制到下一代,若ci
⑥ 重复第④、第⑤步骤,直至产生需要的个体数.
5) 交叉操作.是种群中任意两个个体按照交叉概率Pc从染色体串中的某个位置开始逐位互换的过程.由于本设计中采用的是分段自然数编码的方式,在形成初始种群时,每个个体已经满足了试卷的知识点分布和题型、题量的要求.为了在执行交叉操作时,不破坏这些条件,故采用段内单点交叉的方式进行.即在同种题型内选择一个交叉位置开始交叉.
6) 变异操作.对个体进行自然数编码,随机选择染色体中的一个或者多个值,并改变这个值,这样可以降低算法的复杂度,因此本文采用这种变异方法.
3.2模块总体框架
根据需求分析,学生模块测试系统主要由三部分组成:自主测试、自动组卷和成绩反馈.其模块结构如图1所示.
图1 测试模块结构图
1) 自主测试. 自主测试模块学生可以随机做题,也可以每学完一章,复习一章.这样不仅达到巩固知识点目的,同时也能够发现这个章节哪里掌握的还不够好,需要加强练习.
2) 模拟组卷. 模拟组卷主要是测试学生总体水平,可以根据学生输入的参数进行组卷,如难易程度、章节知识点、题目数量等.基于遗传算法的组卷能够很好的出一份符合学生要求的试卷.
3) 成绩反馈. 在学生测试完成后能够分析出每一章的成绩,算出所有学生的平均成绩,调用highcharts以图表方式直观的显示出来.
3.3算法实现
遗传算法中的参数设定: ①种群规模:m; ②最大迭代次数:max-len; ③演化的代数:gen-len.
算法描述:接受学生的组卷条件,存入相应的变量中;从试题库中抽取满足题型、题量和章节知识点的题目生成m份试卷,即初始化种群:
T=(αl,α2,…,αm);
gen-len=0;
计算种群的难度系数
foreach($this->zhongqun as $v){
$defen+=$v[‘difficulty’] * $v[‘score’]; $zongfen+=$v[‘score’];
} $ndxs=$defen/$zongfen;
while(gen-len { 根据个体适应值及选择策略从当前群体中选择生成下一代的父体; 执行交叉操作,若交叉后的个体已经出现过,则更换题号(该段没有出现过); 随机选择两个个体进行杂交产生新个体 $rand=array-rand($this->zhongqun,2); 杂交开始 $individuality=substr($rand[0],0,$cross-len); $individuality.=substr($rand[1],$cross-len); 如果新个体在种群中已存在,则重新杂交产生新个体,新个体纳入到种群中 $this->zhongqun[$individuality]=$this->tiku[to-decimal($individuality)]; $this->hybrid-num+=1; 执行变异操作,产生新一代个体; foreach($vriants as $v){ $i=$this->change-something($v); if($i===false){return false;} $this->zhongqun[$i]=$this->tiku[to-decimal($i)]; unset($this->zhongqun[$v]); } 重新计算新一代个体的适应度函数值,将其中最优个体与上一代最优个体进行比较,若适应度函数值降低,则用上一代最优个体替换当前群体中的最差个体; 输出当前迭代次数、当前群体的平均适应度函数值以及最优个体的适应度函数值; 生成下一代种群:gen-len=gen-len+l } 输出最优个体. 4结束语 针对现有Moodle网络课程管理平台中测试模块的不足,设计了一个基于遗传算法的自动组卷模块,根据实际问题设计编码方案和有效的选择、交叉、变异算子,提高了遗传算法的搜索能力,取得了良好的组卷效果.通过对组卷模块的设计与实现,使Moodle平台更好的应用到实际教学中,充分发挥了Moodle平台的优势. 参考文献: [1]叶虹, 田兴彦. Moodle二次开发——智能化[J]. 微计算机信息, 2011(9):123-124. [2]蔡爱平. Moodle教学平台的二次开发研究[J]. 数字技术与应用, 2013(10):56-56. [3]张贺雯, 宋军, 陈明辉,等. 基于Moodle平台的网络课程管理系统二次开发研究与设计[J]. 科技资讯, 2012(22):13-14. [4]叶海松, 季隽. Moodle的二次开发与设计[J]. 电化教育研究, 2007(4):50-55. [5]周艳丽. 基于改进遗传算法的自动组卷问题研究[J]. 计算机仿真, 2010, 27(9):319-322. [6]陈国彬, 张广泉. 基于改进遗传算法的快速自动组卷算法研究[J]. 计算机应用研究, 2015, 32(10):2996-2998. [7]王玉芬, 贾燕茹, 郭晓娟. 遗传算法的改进及在自动组卷系统中的应用[J]. 信阳师范学院学报:自然科学版, 2009, 22(1):130-133. [8]潘正君,康立山,陈毓屏. 演化计算[M]. 北京:清华大学出版社, 1998. [责任编辑:蒋海龙] Design and Implementation of Test Paper Module based on Moodle (1.College of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing Jiangsu 2100014, China) (2.College of Computer Science and Technology, Huaiyin Normal University, Huaian Jiangsu 223300, China) Abstract:As the test module of Moodle does not prove students independent testing, intelligentautomatic generating test paper, and feedback score is not comprehensive. It presented a scheme of automatic generating test paper based on genetic algorithm. What’s more, it designed chromosome coding scheme of genetic algorithm as well as the selection operator, crossover operator, mutation operator. By doing secondary development of the Moodle platform, it realized the automatic generating test paper module with the PHP language and expanded the function of Moodle test module. Key words:secondary development; intelligent test paper; Moodle 收稿日期:2015-12-16 通讯作者:吴克力(1963-),男,江苏金湖人,教授,博士,硕士生导师,主要从事信息安全、密码学等研究. E-mail: hysywkl@126.com 中图分类号:TP311 文献标识码:A 文章编号:1671-6876(2016)01-0038-05
AN Meng-sheng1, WU Ke-li2