③变异。交叉之后子代经历的变异,实际上是子代基因按小概率扰动产生的变化。依据个体编码表示方法的不同,可以有以下的算法:实值变异、二进制变异。
(2)自动组卷的实现
实现自动组卷是根据教师、学生、管理员不同的需求(考试时间限制、试题难易程度、章节的涉及、题型比例等)来制定,搜索试题库中与特征参数相匹配的试题,从而抽取最优的试题组合。由此可见,自动组卷成最优试卷是该考试系统的的重要环节。
根据具体情况和需求分析要求,对遗传算法进了稍微改进,表现为采用实数编码、分段交叉、有条件生成初始种群。具体解决方案有3.3节介绍。
3.3遗传算子的设计
(1)选择算子。选择算子的作用在于根据个体的优劣程度决定它在下一代是被淘汰还是被复制。通过选择,将使适应度高的个体有较大的生存机会。本系统采用轮盘赌方法,它是目前遗传算法中最常用也是最经典的选择方法。其具体实现为:规模为M的群体P={a1、a2、… am},由于在编码时采用的是分段实数编码,所以在进行交叉时采用分段单点交叉整个染色体就表现为多点交叉。
(2)交叉算子。由于在编码时采用的是分段实数编码,所以在进行交叉时采用分段单点交叉(按题型分段来进行交叉),整个染色体就表现为多点交叉。交叉的实现过程:将群体中的染色体任意进行两两配对,对每对染色体产生一个[0, 1 ]的随机数r,若r≤pc(据经验,pc值取0.6到0.8),则分段随机产生一个交叉点,然后分段进行互换以得到下一代。
(3)变异算子。在遗传算法中,变异概率一般较小。这里不分段进行变异,而是只对某段上的某个基因进行变异。对某个染色体,随机生成一个[0,1]范围内的实数r,若r≤pm(据经验,pm值取0.01到0.02),则对该染色体进行变异,否则不进行变异。变异的操作如下:在[1,n]范围内随机生成一个段号f,设该段的段长为L,则在[1,L]范围内随机生成一个变异位置P,以一定的原则从题库中选择一个变异基因,变异基因的选择原则为:与原基因题型相同的;满足答题时间相同;考试章节相同等要求。
(4)染色体编码及初始群体的设计
编码问题。在传统的遗传算法中采用二进制编码。用二进制编码时,题库里的每一用遗传算法求解问题,首先要将问题的解空间映射成一组代码串,即染色体的道题都要出现在这个二进制位串中,1表示该题选中,0表示该题未被选中。这样的二进制位串较长,且在进行交叉和变异遗传算子操作时,各种题型的题目数量不好控制。采用实数编码方案,将一份试卷映射为一个染色体,组成该试卷的每道题的题号作为基因,基因的值直接用试题号表示,每种题型的题号放在一起,按题型分段,在随后的遗传算子操作时也按段进行,保证了每种题型的题目总数不变[1]。 自动组卷阅卷功能的网络考试系统设计(3):http://www.youerw.com/jisuanji/lunwen_4374.html