羅雅麗
(常德職業(yè)技術學院現教中心,湖南常德415000)
基于常職院考試題庫管理系統(tǒng)自動組卷算法的實現研究
羅雅麗
(常德職業(yè)技術學院現教中心,湖南常德415000)
文章從考試系統(tǒng)的核心服務自動組卷算法和考試系統(tǒng)的系統(tǒng)實現的兩個方面詳細的描述了考試系統(tǒng)的實現過程,分析了系統(tǒng)實現的算法及程序,并給出了部分的核心程序代碼及流程圖,為系統(tǒng)的實現和數據測試提供了依據.
自動組卷算法;遺傳算法;概率密度函數
基于常職院考試題庫管理系統(tǒng)在試卷自動組卷方面,提出了應用遺傳算法以及概率密度算法的方法和思想.
考試題庫試卷初始種群根據自動組卷方案中的總題數、題型比例、總分等要求然后調用概率密度函數隨機產生,這種自動組卷的處理方式使得初始種群一開始就滿足了自動組卷方案的基本要求.從而加速了遺傳算法的收斂并減少迭代的次數.采用分組實數編碼,可以適應以往采用二進制編碼搜索空間過大和編碼長度過長的缺點,而且同時消除了個體的解碼時間,加速了求解速度.適應度函數(Fitness function)是用來評判試卷群體中個體的優(yōu)劣程度的指標,遺傳算法利用適應度值這一參數指標來指導搜索方向,而不需要適應度函數滿足連續(xù)或可導以及其它輔助信息.
在初始化種群的時候,題數和總分等要求是已知的,所以在初始化種群的時候所需要考慮的只有知識點分布和試題的難度系數.BLL(接口層)與WCF Service層、DAL(數據訪問層)算法處理方法如下:
1.1 BLL接口層
接口層實現對WCF服務調用的封裝,讓Web應用層不再關心通信協(xié)議、類型適配、生命周期等錯綜復雜的問題,只需要按功能需求對接口提供的組件進行組裝;接口層對WCF服務的調用采用兩種方式為:請求響應模式和單箱操作模式.
請求-響應模式:所謂的請求-響應模式如述,此種模式中由客戶端發(fā)送模式請求,服務端返回操作結果,如果請求-響應模式中服務器沒有在預期的時間內響應請求,此種模式的客戶端就會產生異常信息.
單向操作模式:客戶端發(fā)送請求,服務端會將請求調用放入隊列,不給客戶端返回任何消息,并按先進先出執(zhí)行;隊列存儲是有限的,當超出了隊列存儲的設置值,則會阻塞請求通道,執(zhí)行完成時從隊列中移除此請求,當隊列有新的空間時,解除阻塞.
接口層通過ServiceHost或ChannelFactory這兩個類通過服務契約與WCF服務建立通信通道,例如在本系統(tǒng)中在實現查詢學生成績單中使用ServiceHost以請求-響應模式與服務層建立通信通道.
1.2 WCF Service層
本層靈活的借用三層架構和WCF服務的特性,實現對業(yè)務邏輯處理的封裝,完成數據的訪問、運算、存儲,并為BLL接口層提供服務契約(ServiceContract)、消息契約(MessageContract)、數據契約(DataContract)、操作契約(OperationContract),供接口層綁定協(xié)議實現對服務的調用.下面以自動組卷實例來說明本層的技術實現:
1.2.1 創(chuàng)建服務契約(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 創(chuàng)建數據契約(DataContract)
本實例依賴于自動組卷方案與方案詳情、試題、試卷、操作員、課程等對象,所以需要創(chuàng)建相應的數據契約,數據合約(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)利用適應度函數、遺傳算法、概率密度函數找到最優(yōu)個體并記錄到試卷表,最優(yōu)試卷的生成流程如圖4所示.
圖3 生成初始基因
圖4 最優(yōu)試卷的生成
采用遺傳算法的組卷方法,考試題庫試卷初始種群根據自動組卷方案中的總題數、題型比例、總分等要求利用遺傳算法中的各項參數以及各個子程序來實現自動組卷.遺傳算法組卷方法的實現包括目標函數的確定,試卷相關的指標有試卷難度、題型、知識點分布等;個體編碼的確定,在試卷的組卷問題中必須對試卷等問題進行編碼,組卷的問題就是解決組成試卷的組成問題;初始種群的產生,遺傳算法中將會以一代種群為基礎,采用隨機法生成試卷;適應度函數的設計;組卷算法的選擇操作;遺傳算法的交叉操作;遺傳算法的變異操作等;遺傳算法以其相當明確的操作步驟而顯得非常的有條理,容易用程序實現,基于遺傳算法的程序流程圖如圖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)