基于常职院考试题库管理系统自动组卷算法的实现研究
2013-07-22罗雅丽
罗雅丽
(常德职业技术学院现教中心,湖南常德415000)
基于常职院考试题库管理系统自动组卷算法的实现研究
罗雅丽
(常德职业技术学院现教中心,湖南常德415000)
文章从考试系统的核心服务自动组卷算法和考试系统的系统实现的两个方面详细的描述了考试系统的实现过程,分析了系统实现的算法及程序,并给出了部分的核心程序代码及流程图,为系统的实现和数据测试提供了依据.
自动组卷算法;遗传算法;概率密度函数
基于常职院考试题库管理系统在试卷自动组卷方面,提出了应用遗传算法以及概率密度算法的方法和思想.
1 自动组卷的处理方法
考试题库试卷初始种群根据自动组卷方案中的总题数、题型比例、总分等要求然后调用概率密度函数随机产生,这种自动组卷的处理方式使得初始种群一开始就满足了自动组卷方案的基本要求.从而加速了遗传算法的收敛并减少迭代的次数.采用分组实数编码,可以适应以往采用二进制编码搜索空间过大和编码长度过长的缺点,而且同时消除了个体的解码时间,加速了求解速度.适应度函数(Fitness function)是用来评判试卷群体中个体的优劣程度的指标,遗传算法利用适应度值这一参数指标来指导搜索方向,而不需要适应度函数满足连续或可导以及其它辅助信息.
在初始化种群的时候,题数和总分等要求是已知的,所以在初始化种群的时候所需要考虑的只有知识点分布和试题的难度系数.BLL(接口层)与WCF Service层、DAL(数据访问层)算法处理方法如下:
1.1 BLL接口层
接口层实现对WCF服务调用的封装,让Web应用层不再关心通信协议、类型适配、生命周期等错综复杂的问题,只需要按功能需求对接口提供的组件进行组装;接口层对WCF服务的调用采用两种方式为:请求响应模式和单箱操作模式.
请求-响应模式:所谓的请求-响应模式如述,此种模式中由客户端发送模式请求,服务端返回操作结果,如果请求-响应模式中服务器没有在预期的时间内响应请求,此种模式的客户端就会产生异常信息.
单向操作模式:客户端发送请求,服务端会将请求调用放入队列,不给客户端返回任何消息,并按先进先出执行;队列存储是有限的,当超出了队列存储的设置值,则会阻塞请求通道,执行完成时从队列中移除此请求,当队列有新的空间时,解除阻塞.
接口层通过ServiceHost或ChannelFactory这两个类通过服务契约与WCF服务建立通信通道,例如在本系统中在实现查询学生成绩单中使用ServiceHost以请求-响应模式与服务层建立通信通道.
1.2 WCF Service层
本层灵活的借用三层架构和WCF服务的特性,实现对业务逻辑处理的封装,完成数据的访问、运算、存储,并为BLL接口层提供服务契约(ServiceContract)、消息契约(MessageContract)、数据契约(DataContract)、操作契约(OperationContract),供接口层绑定协议实现对服务的调用.下面以自动组卷实例来说明本层的技术实现:
1.2.1 创建服务契约(ServiceContract)和操作契约
(OperationContract)
为BLL接口层的调用准备相应的试卷服务契约和操作契约,服务合约(Service Contract),订定服务的定义,示例代码如下:
///
///WCF服务层试卷接口
///
[ServiceContract]//定义服务合约
public interface ITestPaper_Service
{
[OperationContract]//操作合约
bool Generate(int planID,ref int tID);
[OperationContract]//操作合约
public bool Delete(int tID)
[OperationContract]//操作合约
public bool Update(M_TestPaper model)
[OperationContract]//操作合约
DataSet GetTestPaper(int tID);}
1.2.2 创建数据契约(DataContract)
本实例依赖于自动组卷方案与方案详情、试题、试卷、操作员、课程等对象,所以需要创建相应的数据契约,数据合约(Data Contract),订定双方沟通时的数据格式,示例代码如下:
///
///数据契约:自动组卷方案
///
[DataContract]//数据契约
public class Plan{
[DataMember]
public int ID;
[DataMember]
public string Name;
[DataMember]
public int CoursesID;
[DataMember]
public int Factor;
[DataMember]
public int Number;
[DataMember]
public int Fraction;}
1.2.3 实现服务契约
具体来说是实现服务契约定义的接口中的方法,本示例将按指定的自动组卷方案生成试卷,算法如下:
1.2.3.1 根据自动组卷方案ID(PlanID)通过DAL层得到数据对象自动组卷方案(Plan)和方案详情(PlanList),如图1所示.
图1 自动组卷方案的生成图
1.2.3.2 根据数据契约对象Plan的课程ID(CoursesID)和数据契约对象PlanList的题型(QType)得到初始种群(筛选符合条件的试题),如图2所示.
图2 生成初始种群
1.2.3.3 根据数据契约对象Plan的试题总数(Number)、总分(Fraction)和数据契约对象PlanList的每个题型的试题总数(Number)人初始种群,再通过利用概率密度函数随机生成初始遗传基因,如图3所示.
1.2.3.4 根据数据契约对象Plan的难度系数(Factor)和试题(Questions)数据契约对象的难度系数(Factor)、知识点分布(KnowledgeID)利用适应度函数、遗传算法、概率密度函数找到最优个体并记录到试卷表,最优试卷的生成流程如图4所示.
图3 生成初始基因
图4 最优试卷的生成
2 自动组卷的实现
采用遗传算法的组卷方法,考试题库试卷初始种群根据自动组卷方案中的总题数、题型比例、总分等要求利用遗传算法中的各项参数以及各个子程序来实现自动组卷.遗传算法组卷方法的实现包括目标函数的确定,试卷相关的指标有试卷难度、题型、知识点分布等;个体编码的确定,在试卷的组卷问题中必须对试卷等问题进行编码,组卷的问题就是解决组成试卷的组成问题;初始种群的产生,遗传算法中将会以一代种群为基础,采用随机法生成试卷;适应度函数的设计;组卷算法的选择操作;遗传算法的交叉操作;遗传算法的变异操作等;遗传算法以其相当明确的操作步骤而显得非常的有条理,容易用程序实现,基于遗传算法的程序流程图如图5所示.
图5 遗传算法流程图
〔1〕Richard McCarthy,Bruce White,Martin Grossman.Object O riented Analysis and Design:Do We Need More UML in the Classroom.Information SysteMEducation Journal, 2005,3(46):3-7.
〔2〕SMith,Keith.Simplifying AJAX-style Webdevelopment.Computer,2006,39(5):8-101.
〔3〕AbderrahiMGhadi,Driss Mammass,Maurice Mignotte.Hierarchical Role Graph Model for UNIX Access Control.International Journal of Future Generation Communication and Networking,2009,2(2):59-68.
〔4〕Jennings N R,Sycara K,Wooldridge MJ.A roadmap of agent research and-7 5-development Journal of Autonomous Agents and Multi-Agent Systems,2007,1(1):275-306.
〔5〕Robert K.Branson.The Florida Schoolyear 2000 initiative:Redesigning Public Education.Education Technology,2006,37(6):115-133.
〔6〕Digital Forensic Research Workshop.“A Road Map for Digital Forensic Research”,2001.
TP391.6
A
1673-260X(2013)07-0025-03
院级青年专项资助课题(zy1230)