论文导读:有关组卷算法的实现目前有很多研究,归纳出各种方法,例如有随机选取法、动态匹配法、回朔法试探、遗传算法(动态优化法)等。这主要由试卷的相关特征决定,例如题型、题量是由算法自动控制还是组卷时指定。
关键词:试题库,组卷,组卷参数,算法
1 引言有关组卷算法的实现目前有很多研究,归纳出各种方法,例如有随机选取法、动态匹配法、回朔法试探、遗传算法(动态优化法)等。这主要由试卷的相关特征决定,例如题型、题量是由算法自动控制还是组卷时指定;每类题型的分数是由算法确定还是组卷时指定;试卷难度是仅控制各试题的平均难度还是进一步要控制各试题难度的分布。下面介绍组卷算法涉及的有关问题和算法的文字描述,并分析了算法的时间效率。
2 综合组卷算法的总体流程本算法采用随机抽取法反复筛选进行抽题组卷,是考虑各种要求的综合组卷算法,该算法一次可以组出三套试卷。
在描述算法前,先解释几个试题属性项的表示。试题表的结构如表1所示,
表1 试题表结构
序号 | 字段名 | 类型 | 宽度 | 说明 |
1 | 课程代码 | 字符型 | 7 | |
2 | 试题号 | 字符型 字符型 | 4 | 试题唯一标识号 |
3 | 题型码 | 1 | 试题类型代码 | |
4 | 难度 | 字符型 | 1 | 试题难度 |
5 | 范围 | 字符型 | 10 | 试题所涉及的章节(知识点) |
6 | 文本内容 | 备注型 | 4 | 试题题面(直接录入的) |
7 | 对象内容 | 通用型 | 4 | 试题题面(通过OLE方式嵌入) |
8 | 文本答案 | 备注型 | 4 | 试题答案(直接录入的) |
9 10 | 对象答案 nr_fg | 通用型 逻辑型 | 4 1 | 试题答案(通过OLE方式嵌入) 题面(试题内容)是文本或对象 |
11 | da_fg | 逻辑型 | 1 | 答案是文本或对象 |
12 | Slct1 | 逻辑型 | 1 | 该题在试卷1中是否抽中 |
13 | Slct2 | 逻辑型 | 1 | 该题在试卷2中是否抽中 |
14 | Slct3 | 逻辑型 | 1 | 该题在试卷3中是否抽中 |
15 | Stxh1 | 数值型 | 2 | 题型中的小题序号(试卷1) |
16 | Stxh2 | 数值型 | 2 | 题型中的小题序号(试卷2) |
17 | Stxh3 | 数值型 | 2 | 题型中的小题序号(试卷3) |
18 | Stxh | 数值型 | 2 | 题型中的小题序号(输出试卷) |
19 | Zrjs | 字符型 | 10 | 责任教师 |
20 | stbg | 数值型 | 2 | 试题曝光度 |
其中“范围”字段表示该试题涉及的知识点,其格式为:“知识点1,知识点1,……”,例如,范围的值可以为“1.1,3.2,5.3”;“难度”字段表示该试题的难度等级(分为1、2、3级);“曝光度”字段表示该试题在规定日期内的抽取次数;“slct1”字段表示该试题是否被第1套试卷抽中(为真即抽中,为假即未抽中),“slct2”、“slct3”字段与此类似;“stxh1”字段表示该试题在第1套试卷中某一题型下的小题序号,“stxh2”、“stxh3”字段与此类似。组卷过程开始要指定一套试卷中每种题型要抽出的题量,该题型的平均难度及分数,并可以指定本套试卷不要求的范围(其格式同“范围”字段)。
本组卷算法每次可以抽出三套试卷,即每道试题是否抽中还要考虑是否被另两套试卷抽中。首先对试题表过滤为指定的课程代码(即只对该课程的试题进行搜索),并且试题顺序按题型排好(使用索引方式,即逻辑排序,速度很快)。设置循环方式是:最外层循环每次定位一种要抽出的题型码,并得到该题型的题量(用变量vtl存储)、平均难度(用变量vnd存储);内循环在试题表中对该题型的所有试题进行搜索,按照确定的抽题策略,最多可能要搜索五遍才能完成一种题型的各试题的抽出。如图3.2所示为满足各种参数要求的综合组卷算法流程图。
|