第 19 卷第 8 期
Vol.19 No.8
铁路
计 算 机 应 用
R A I L W A Y C O M P U T E R A P P L I C A T I O N
计算机辅助设计
C O M P U T E R A I D E D D E S I G N
文章编号:1005-8451(2010)08-0049-04
基于遗传算法智能组卷的 J2EE 考试系统的设计与实现
拓守恒
(陕西理工学院 计算机系,汉中 723003)
摘 要:分析目前网络考试系统发展的现状,提出基于 Flex 与 J2EE 多层架构的 RIA 智能网络考试系
统的技术解决方案,应用Flex作为表示层实现, Hibernate作为持久层实现,并结合Spring技术作为业务层
搭建富英特网应用(RIA)系统模型。采用遗传算法智能组卷,设计出一套多层次、高性能、智能化的网络
考试系统。
关键词:遗传算法;J2EE;英特网;智能;考试系统
中图分类号:T P 3 9
文献标识码:A
Design and implemetation of J2EE Examination System for intelligent generating
test paper based on Genetic Algorithm
TUO Shou-heng
( Dept. of Computer Science & Technology, Shanxi University of Technology, Hanzhong
723003, China )
Abstract: This paper analyzed the present situation of development of Network Examination System. It put forward the
solution for RIA Intelligent Network Examination System based on Flex and J2ee,applied the Hibernate framework technology
to the persistence layer, Flex technology to the presentation layer, Spring technology to the business layer to put up rich
internet application model. It was intelligent generating test paper by Genetic Algorithm. It was designed an multi-hierarchy,
high performance and Intelligent Network Examination System.
Key words: Genetic Algorithm; Java2 enterprise edition; Internet; intelligence; Examination Sytem
随着网络技术的高速发展,Internet已经日益
成为应用程序部署运行的默认平台。传统基于B/S
在考试系统的算法设计中,最重要也是最难
的就是系统抽题组卷了。抽题中希望能够更加合
或C/S模式的考试系统逐渐暴露出功能单一、接口
专用、不易部署、不易升级、安全性低等缺点。本
文采用 Adobe Flex 与 J2EE 多层架构作为 RIA 智
能网络考试系统的技术解决方案。网络考试系统
的智能抽题策略是智能试题库研究的一个重点和
难点。智能抽题策略的效率与质量直接取决于抽
理、全面地考察学生的综合能力,所以在抽题过程
中题型应该尽可能涉及到所有类型,如选择、填
空、判断、回答、计算和证明等;同时,考察内容
也应该尽可能涉及到所有的章节,而且由于不同
题型及章节在考试中占的比重有所不同,即相对
重要性有所差别,所以在抽题时应予以考虑。
题算法的设计。智能抽题是典型的约束问题的求
解过程。本文在建立智能抽题的数学模型的基础
为了合理评价抽题的效果,需要用户事先给
出理想试卷的评估标准,因此引入期望题型分布
上,采用遗传算法(Genetic Algorithm, GA)对
系数以及期望内容分布系数的概念。
模型进行优化求解,为开发更加有效的智能抽题
定义1: 期望题型分布系数是用户希望试卷所
组卷系统提供了一条新途径。
包含不同题型分布与该题型在整个试卷中相对重
1 智能组卷算法
要度的加权求和。
(1)
1.1 试卷的期望题型及期望内容分布系数
收稿日期:2010-01-11
基金项目:受陕西省教育厅科研项目(08J K241);陕西理工学院科研项
目基金(SLG0818)资助。
作者简介:拓守恒,讲师。
式中:h 为不同题型的期望分布;ω为题型的
相对重要度;n 为题型的总数。
定义2:期望内容分布系数是用户希望试卷所
涵盖的章节分布与内容在试卷中相对重要度的加
权求和。
RCA
2010.8 总第 161 期
49
计算机辅助设计
铁 路 计 算 机 应 用
第 19 卷第 8 期
(2)
染色体,按一定的概率进行基因交换,交换位置的
选取是随机的。简单的交叉(即一点交叉)可以分
式中:l为考察不同内容(章节)的期望分布;
ξ为内容的相对重要度;m 为内容的总数。
为两步进行:首先对配对库中的个体进行随机配
对;然后在配对个体中随机确定交叉处,配对个体
由于期望题型分布及期望内容分布本身是定
彼此交换部分信息。
性的指标,无法直接参与运算。在此,采用专家经
验评判的方法将其转换为定量指标,作为评价抽
题效果的指标。
1.2 基于遗传算法的智能组卷
遗传算法(Genetic Algorithm, GA)[5]是近几
年发展起来的一种崭新的全局优化算法,它借用
了生物遗传学的观点,通过自然选择、遗传、变异
等作用机制,实现各个个体的适应性的提高。
1.2.1 遗传算法的核心内容
(1)编码设定
编码由于遗传算法不能直接处理解空间的数
据,因而需要将解空间的数据表示成遗传空间的
数据格式,即通过编码将表现型数据映射为基因
型串结构数据,形成基因码链,每一个码链代表一
个个体,表示优化问题的一个解。
c.变异(mutation)从种群中随机选择一个染
色体,按一定的变异概率 P m 进行基因变异;G A
的搜索能力主要是由选择与交叉赋予的,变异算
子则保证了算法能搜索到问题空间的每一点,从
而使算法具有全局最优,它进一步增强了 GA 的能
力。变异操作是按位进行的,即把染色体中的某一
位的内容进行变异。对于常用的二进制编码的个
体来说,若某位原为 0,则通过变异就变成 1,反
之亦然。对于十进制编码个体来说,随机选择某位
进行变异,再随机产生一个十进制数,然后用这个
十进制书来替换原来这个位置上的十进制数。变
异操作是随机进行的。变异概率一般都取的很小。
模拟结果,遗传算法一般需要通过几十甚至几百
次地重复上述过程来求解问题。通常的方法是在
实验中预先指定遗传算法的迭代次数或设定迭代
(2)初始群体设定
终止的条件。
产生初始群体由于遗传算法是群体型的操作,
(5)参数控制
所以在进行遗传操作前,都需要产生一个由若干
初始解组成的初始群体,种群的大小(规模)就是
指种群中的个体数目。初始群体也称为进化的初
始代,即第1代(first generation)。进行初始化
时,随机产生一个规模为 P 的初始群,其中每个个
体为一定长度的码链,该群体代表优化问题的一
些可能解的集合。
(3)适应度函数
计算适应度可以直接引用目标函数作为适应
度函数,也可以将目标函数进行变换后作为适应
度函数。利用适应度函数将基因型个体译码成表
现型个体,即搜索空间内的解,并计算出个体的适
应度值。适应值为群体进化选择提供了依据,一般
来说适应值越高,解的素质越好。
(4)遗传操作
遗传算法优化时,参数的控制决定算法收敛
的快慢、优化的精度等,主要参数有交叉概率、变
异概率、种群大小、选择策略和迭代终止条件等。
1.2.2 遗传算法组卷
组卷中决定一道试题,就要决定 n 项指标,这
里考虑 n 维向量(题号 a1,题型 a2、章节 a3,难度
a4...),ai相当于第i项指标,决定一份试卷,就决
定一个 m * n 的矩阵。其中,m 是试卷所含的题目
数,n 为试题控制指标的数目。
a11 a12 a13 a14 ………… a1n
S =
a21 a22 a23 a24 ………… a2n
………………………………………
am1 am2 am3 am4 ………… amn
上述的矩阵应满足以下条件:试卷的分数约
a.选择(selection)亦称再生,根据每个个体
束 。
的相对适应值,计算机每个个体的再生次数,并进
行再生操作,产生新的个体加入下一代群体中。一
下面将对自动出卷过程是如何运用遗传算法来
实现的问题作详细的介绍。智能组卷流程如图 1。
般再生的概率与其适应值成正比。
在具体实现该遗传算法时,每个步骤都可以
b.交叉(crossover)从种群中随机选择两个
有不同的实现方式。因此主要技术有:基于数据库
50
2010.8 总第 161 期 RCA
第 19 卷第 8 期
基于遗传算法智能组卷的 J 2 E E 考试系统的设计与实现
计算机辅助设计
录 入
扫 描
试 题 编 辑 器
添 加 科 目
添 加 试 题
修 改 试 题
删 除 试 题
试 题 库
题 库 备 份
题 库 恢 复
结束;若试卷群体中最好的一个个体的适应度值
大于 0.1 时,就继续进行遗传算法的循环匹配。
备 份 库
while( f>0.1) do
参 数 设 置
出 卷 参 数
组 卷
生成试卷 / 答卷
预 览
编 辑
打 印
存 储
图 1 智能组卷流程图
技术的试题库建立和维护;遗传算法中染色体的
编码方案,初始群体的选择,适应函数的选择,交
叉、变异的操作定义,最优保存策略,根据用户的
组卷要求确保遗传算法收敛。具体的遗传算法实
现过程如下:
(1)在实现过程当中,每种题型单独进行组
卷程序,不同题型之间互不影响。
begin
……
交叉;
变异;
计算个体的适应度值;
……
end。
(8)交叉操作。采用单点交叉算子,首先随
机选择两个个体进行交叉,然后随机选择交叉位
置,对交叉点后面的内容进行交叉。
for itestpap:=1 to 10 do select_or_not
[itestpap]:=false;
repeat
cross:=rnd(selenum-1)+1; //选择交
(2)直接采用十进制编码方案,无需再进行
叉位置
二—十进制编码的转换。
(3)首先确定初始种群(分试卷种群和试卷
难度种群)的大小,本系统采用的种群大小为 10,
每个个体最多有 30 个基因。即采用 10 套试卷作为
t:=rnd(9)+1; //交叉试卷(个体)1
m:=rnd(9)+1; //交叉试卷(个体)2
if (select_or_not[t]=false)and(select_or_not
[m]=false) then //两个个体交叉
遗传算法的群体,每套试卷中最多可以包含 30 个
题目。
begin
if t<>m then
(4)对群体进行初始化,每初始化一个试卷
个体,会相应地初始化试卷难度个体。初始化群体
过程采用随机算法,即每个个体中的题号都是随
标志
begin
select_or_not[t]:=true; //设置选择
机选择的。
(5)计算每个试卷个体的整体平均难度 p。p
的计算公式如下: P=(∑ pi*qi)/(∑ qi)(i=1,
2,…,k);其中k是试卷所含的题目数,pi,qi分别
是第 i 题的难度值和分数。
select_or_not[m]:=true;
for itno:=q to selenum do
begin
交换两个个体的题号;
交换两个个体的难度;
(6)试卷定制时设定的试卷难度是用户期望
end;
的试卷整体难度(这里用 EP 表示)。适应度函数
end;
为试卷整体难度的期望值与实际试卷整体难度平
end;
均值之差的绝对值,即:f=abs(EP-P)。若某个体
until (//结束条件)。
绝对值越小,意味着此个体的平均难度越接近试
卷整体难度的期望值,那么此个体就越优秀。
(9)变异操作。采用的变异算子是实数编码
的均匀变异。即随机选择一个个体,然后随机选择
(7)设置遗传算法的出口条件。其出口条件
一个位置进行变异。
是:试卷群体中最好的个体的适应度值f≤0.1。也
begin
就是说如果试卷群体中最好的一个个体的适应度
……
值小于或等于 0.1 时,就跳出遗传算法,迭代过程
随机选择变异个体;
RCA
2010.8 总第 161 期
51
计算机辅助设计
铁 路 计 算 机 应 用
第 19 卷第 8 期
随机选择变异位置;
随机选择变异后的题目;
用选择好的题目替换原来
的题目;
……
end。
(10)若出口条件满足(f ≤ 0.1),则跳出遗
传算法的循环过程,输出群体中适应度值最小的
一个个体,即群体中最优的个体。
2 基于Flex和J2EE多层架构的网络考试系统
体系结构设计
随着 W e b 应用需要更复杂的表现和逻辑处
理,本文提出了基于Flex+Spring+Hibernate框架
的 J2EE 多层架构模型[3~4],如图 2。
客 户 层
Web浏览器/flash player
H T T P
H T T P
立刻反映在Client View中。
Spring 的职责:(1)处理系统应用程序的业
务逻辑和业务校验。(2)管理事务。(3)提供与
其它层协同工作的接口。(4)管理业务层级别的
对象的依赖。(5)在表示层和持久层之间增加了
一个灵活的机制,使得他们不直接的联系在一起。
(6)通过揭示从表示层到业务层之间的Context来
得到business services。(7)管理程序的执行(从
业务层到持久层)。
Hibernate的职责:(1)查询对象的相关信息
的语句。(2)存储,更新,删除数据库记录。(3)
支持大部分主流数据库,并且支持Parent/child关
系,事物处理,继承和多态。
数据持久层的实现:由于Spring对Hibernate
提供了良好支持,实现了对Hibernate的Session-
Factory进行整合,并采用面向Hibernate的事务
管理器,实现 HibernateTransactionManager 对
Hibernate会话进行基于容器的、统一的事务管理。
表 示 层
Flex MVC (模型,视图,控制器)
HttpService,WebService, RemoteObject
3 结束语
H T T P
S O A P
A M I
业务逻辑层
Spring事务处理/Sesssion管理
业务逻辑Service Classes,EJB
数据持久层
Hibernate
数据源 / 连接池,查询语言
DAO Classes
域
模
块
业
务
对
象
数 据 库 层
数 据 库
数 据 库
图 2 基于 Flex 和 J2EE 的多层体系结构
本文设计出了一种基于 Flex+J2EE 多层架构
的 RIA 智能网络考试系统,采用遗传算法智能组
卷,通过对框架模型主要层次的功能分析,提供了
一种实现多层RIA Web应用系统开发的解决方案。
将 Flex 技术与 J2EE 集成,不仅可以利用 Flex 提
供的各种优秀功能,而且利用了 J2EE 平台的强大
功能,以创建个性化的丰富的多媒体 Web 应用程
序,极大地提高用户体验,彻底革新用户与 Web
的交互关系。
Flex 的职责:(1)提供用户界面 View(学生
在线考试界面、老师试题库维护界面、管理员系统
参考文献:
管理界面等),管理用户的请求,做出相应的响应。
(2)提供一个Cnortoller,委派调用业务逻辑和其
它上层处理。(3)UI 验证。
Flex 作为表示层,决定采用 MVC 设计模式实
现,Controller控制器组件负责接受用户请求,调
用Remoting-config.xml中合适的业务对象来执行
相应的业务逻辑,然后将业务逻辑执行结果返回
到Controller,Controller将必要的数据存放在
Model 中,由于在 Flex 中,View 组件采用绑定
Model 中的数据,当 Model 中的数据发生变化后,
[1] 张爱文,樊红莲.自适应遗传算法用于自动组卷中的数学
模型设计[J]. 哈尔滨理工大学学报,2006,11(5).
[2] 阎 峰,安晓东.基于粒子群优化算法的智能抽题策略研
究[J].中北大学学报(自然科学版),2008,4(8).
[3] 拓守恒. 基于Flex和J2EE多层架构的RIA教学质量评价
系统的研究与实现[D]. 成都:电子科技大学,2008.
[4] 拓守恒. 基于Flex+Spring+Hibernate框架技术的RIA教学
测评系统的设计与实现[J]. 电脑开发与应用,2009(9).
[5] 覃 晓,元昌安. 基于遗传算法和自组织特征映射网络的
文本聚类方法[J]. 计算机应用,2008,3 (3).
52
2010.8 总第 161 期 RCA