计算机自适应题库实现
理员可以根据情况重新计算试题的质量参数。
1.4 数据库表的结构设计
在本系统建立的自适应试题库中,有单选题、多选题、判断题等3类题型。在单选题题型中需要用到单选表single_choice、单选分析表single_choice_analysis。单选表、单选分析表single_choice_analysis以及二表之间的主外键关系如图2所示。
本系统涉及到的人员有教师、管理员、应试者和参加试题参数测试人员,他们的相关信息如图3所示。其中,student_info表用来存放应试者和参加试题参数测试人员的基本信息, login表用来存放所有人员的登录信息。1.5 题库的实现
以经典测量理论(CTT)和项目反应理论(IRT)为基础,使用三参数模式建立了计算机自适应题库,从而能够根据题目的参数及应试者的反应情况估计应试者的能力参数,然后根据“最大信息量原则”从题库中选取符合应试者能力的题目进行测试。
由于篇幅有限,下面只给出其中的几个实现算法。
(1) 计算一阶导数的函数
yijiedaoshu(parameters para[ ],integer j, integer n),返回 double 类型的值。其中parameters{ double a,double b,double c,double ability,double u}是一个结构体,由某试题的三质量参数a、b、c、应试者当前能力值 ability和做题情况u 组成。
该函数的功能是计算对某试题的第j次迭代的一阶导数,用于计算具备初始能力值ability的受测者的真实能力值。实现代码如下:
double result;
int i;
for i=1 to n
result += para[i].a * (para[i].u - calculate(para[i]. a,para[i].b,para[i].c,para[i].ability)) * (calculate
(para[i].a,para[i].b,para[i].c,para[i].ability) - para [i].c)
next i
if (calculate(para[j].a,para[j].b,para[j].c,para[j].ability))
* (1 - para[j].c) > 0 then result = (1.702 *
result) / (calculate(para[j].a,para[j].b,para[j].c,para [j].ability)) *(1 - para[j].c);
else
MessageBox(“错误提示”,“错误编号:005~r~n计算错误!程序终止!”);
halt;
end if
// 第j次迭代一阶导
return result
(2) 计算概率的函数
calculate(double a ,double b, double c,double ability),返回double 类型的值。
该函数的功能是计算某试题被答对的概率。实现代码如下:
double resultnum,mid;
mid= - 1.702*a*(ability - b);
if (1+exp(mid)) > 0 then
resultnum=(1 - c)/(1+exp(mid))+c;
else
MessageBox(“错误提示”,“错误编号:
006~r~n计算 错误!程序终止
!”);
halt;
end if
return resultnum;
(3) 计算信息函数
information(parameters para[],integer j, double ability),返回double类型的值。
该函数的功能是用来计算某试题的信息量,用来为具备ability初始能力值的应试者选择合适的下一道试题。实现代码如下:
double result=0
result = (1.702 * 1.702 * para[j].a * para[j].a) * (1 -
para[j].c);
if ((para[j].c + exp(1.702 * para[j].a * ((1 - (calculate
(para[j].a,para[j].b,para[j].c,ability)) -para[j].b))))* (1 + exp(- 1.702 * para[j].a * (1 -
(calculate(para[j].a,para[j].b,para[j].c,ability)) - para[j].b))) * (1 + exp(- 1.702 * para[j].a * (1 -
(calculate(para[j].a,para[j].b,para[j].c,ability)) - para[j].b)))) > 0 then
result=result/((para[j].c+exp(1.702*para[j].a*((1-(calcu- late(para[j].a,para[j].b,para[j].c,
ability))-para[j].b))))*(1+exp(-1.702*para[j].a*(1 - (calculate(para[j].a,para[j].b,para[j].c,
ability))-para[j].b)))*(1+exp(-1.702*para[j].a * (1 - (calculate(para[j].a,para[j].b,para[j].c,
ability)) - para[j].b))))
else
MessageBox(“错误提示”,“错误编号:007~r~n计算错误!程序终止!”);
halt;
end if
return result
本计算机自适应题库以经典测量理论和项目反应理论为基础,采用Newton-Raphson迭代法,解决了基于IRT的考试系统建设中出现的系统题库建设的最大难题。
- 3DES算法的FPGA高速实现(06-21)
- 基于DSP的Max-Log-MAP算法实现与优化(05-27)
- DSP中DMA操作的无阻塞请求实现(06-18)
- 二维DCT编码的DSP实现与优化(09-08)
- 基于DSP处理器上并行实现ATR算法(01-29)
- 基于DSP的H.324终端设计(05-27)