论文部分内容阅读
摘 要:为了保证每个评委拿到手里的试卷具有随机性和公平性,本文结合了概率的思想提出了解决随机性和公平性的算法。首先对试卷和评委分别进行编号,将试卷编号作为矩阵的行指标,将随机产生的评委的编号作为矩阵的列指标,这样我们就可以建立数学模型,设计算法,将每份试卷按行随机分发给三位评委。最后通过Matlab软件对算法的模拟,我们可以在尽量均匀的交叉次数下,将试卷按照要求合理分配。
关键词:交叉数 随机分发 标准差
1 问题描述
在竞赛的评卷工作中,试卷能够合理分配既是竞赛规则的需求也是竞赛公平性的重要保证。因此,解决试卷分配的合理性有很强的实际意义。然而试卷份数庞大的时候,人工很难合理分配试卷,因此我们需要寻找一种有效的算法来解决合理分配试卷问题。本文所考察的是200份试卷和10位评委,每份试卷要等概率地发到3位评委手中评阅,每位评委评阅60份试卷。在分发试卷的过程中,尽量避免相同的评委判过多或过少的试卷。经过多次试验,我们选取其中评价最好的一次分发的任务单进行均匀性评价。
2 问题分析
征对上述问题,建立一个初始化零矩阵result200×10(行代表试卷编号,列代表随机的评委编号),从第一行开始,逐行按本文给出的算法随机产生三个列位置,即将一份试卷随机分发给三个评委。如果某一行的三个位置处发到试卷,那么将该位置处标记为1。反之,在没有试卷分配到的位置处,标记为0。这样的分配方法是否为最优呢?这就需要我们进行均匀性评价。我们希望任何两位教师交叉共同评阅一份试卷的情况也尽量均匀,即尽量不要出现交叉次数过多或过少的情况。所以我们要随机分发多次,得到多次分配任务单,分别计算每次分配任务单中任意两个评委阅卷交叉数的标准差,我们希望得到交叉数标准差最小的我们认为比较优的任务单。
3 建立算法
首先对200个试卷进行编号1:200,对10个评委随机编号1:10,建立一个200行10列的result矩阵,行对应着试卷的编号,列对应着评委的编号。这样我们可以根据如下算法对试卷进行随机分配,我们得到的结果正好每位评委分到60份试卷,每份试卷由三位评委来评阅。
算法1. assignTask 程序算法(求随机分配一次的任务单)
step 1:创建60*10的matric矩阵,该矩阵用来记录任务是否分配
step 2:创建60*10的personTask矩阵,该矩阵用来记录任务分配目标
step 3:i=1,tagn=0,i记录某个人的任务个数,最多为60; tagn标记n是否加1的标记
step 4:m=1:1:200,m为任务编号,共200项任务
step 5:tag=0;tag为任务分配的次数,一个任务分配给三个人,共三次
step 6:当i小于60时,执行下面步骤:
(1)如果tagn为0,则n=0;
(2)当n<10时;
(3)随机生成1-10的一个数;
(4)如果i=1;
(5)当第r个人的第i个任务已经分配;
(6)重新随机生成1-10的一个数,直至满足条件(5);
(7)(4)不满足时,当第r个人的第i个任务已经分配或者第r个人已经做过此项任务;
(8)随机生成1-10的一个数,直至满足条件7;
(9)把第r个人的第i项任务标记为1,表示任务已经分配;
(10)把任务m赋给存放任务的矩阵personTask(i,r);
(11)n=n+1;tag=tag+1;
(12)判断tag是否大于等于3;
(13)tag如果大于3,判断n是否大于等于10;
(14)如果n大于等于10,任务i加1,跳出循环;
(15)如果n不大于10,tagn=1,跳出循环;
(16)如果tag小于3,tagn=1,不要跳出循环;
step 7:判断tag是否大于等于3,如果大于等于3,跳出循环;否则i加1;继续执行step 4 to step 7。
算法2. jiaochadu(person)交叉数的计算:(person为分配任务单矩阵) ;
step 1:将20个人分为同时放到第一组和第二组;
step 2: 将第一组中的每一个人的每一个任务分别与第二组中除了本人的其他人的所有任务作比较,如果任务相同,交叉度加1;
step 3: 输出每一个人的交叉度。
算法3. minsig函数(随机分配time次求的最小交叉数标准差下的任务单)设置迭代次数time; for i=1: time;
执行算法1;
记录任意两人的交叉数;
求解交叉数标准差,和分发任务单;
End:找到最小标准差分发方法。(标准差越低随机性越好,任务分配的也越好)。
4 分发试卷
我们希望得到交叉数均匀的任务单,即任务单中的交叉数标准差接近最小的情况。通过对算法3进行MATLAB编程,设置不同的迭代随机次数得到交叉数标准差,运算时间如下表1:
表1. 不同迭代次数下计算时间和最优标准差
从表1中可以看到在迭代次数为300时,运算时间将近6分钟,得到的分配任务单最优。
5 结论
本文提出的问题是在现实生活中反映的问题,我们将其问题转换成数学问题,用数学思维及数值算法解决问题。本文给出了一种合理随机分发试卷的算法,该算法保证了试卷随机地分发到教师的任务单中。而且每份试卷分给每位教师的概率是等可能的,另外任何两位教师交叉共同评阅一份试卷的情况也尽量均匀,即尽量不要出现交叉次数过多或过少的情况。
参考文献:
[1]袁卫, 庞皓, 曾五一等. 统计学[M].北京: 高等教育出版社. 2004.
[2]魏宗舒. 概率論与数理统计教程[M].北京: 高等教育出版社. 2004.
关键词:交叉数 随机分发 标准差
1 问题描述
在竞赛的评卷工作中,试卷能够合理分配既是竞赛规则的需求也是竞赛公平性的重要保证。因此,解决试卷分配的合理性有很强的实际意义。然而试卷份数庞大的时候,人工很难合理分配试卷,因此我们需要寻找一种有效的算法来解决合理分配试卷问题。本文所考察的是200份试卷和10位评委,每份试卷要等概率地发到3位评委手中评阅,每位评委评阅60份试卷。在分发试卷的过程中,尽量避免相同的评委判过多或过少的试卷。经过多次试验,我们选取其中评价最好的一次分发的任务单进行均匀性评价。
2 问题分析
征对上述问题,建立一个初始化零矩阵result200×10(行代表试卷编号,列代表随机的评委编号),从第一行开始,逐行按本文给出的算法随机产生三个列位置,即将一份试卷随机分发给三个评委。如果某一行的三个位置处发到试卷,那么将该位置处标记为1。反之,在没有试卷分配到的位置处,标记为0。这样的分配方法是否为最优呢?这就需要我们进行均匀性评价。我们希望任何两位教师交叉共同评阅一份试卷的情况也尽量均匀,即尽量不要出现交叉次数过多或过少的情况。所以我们要随机分发多次,得到多次分配任务单,分别计算每次分配任务单中任意两个评委阅卷交叉数的标准差,我们希望得到交叉数标准差最小的我们认为比较优的任务单。
3 建立算法
首先对200个试卷进行编号1:200,对10个评委随机编号1:10,建立一个200行10列的result矩阵,行对应着试卷的编号,列对应着评委的编号。这样我们可以根据如下算法对试卷进行随机分配,我们得到的结果正好每位评委分到60份试卷,每份试卷由三位评委来评阅。
算法1. assignTask 程序算法(求随机分配一次的任务单)
step 1:创建60*10的matric矩阵,该矩阵用来记录任务是否分配
step 2:创建60*10的personTask矩阵,该矩阵用来记录任务分配目标
step 3:i=1,tagn=0,i记录某个人的任务个数,最多为60; tagn标记n是否加1的标记
step 4:m=1:1:200,m为任务编号,共200项任务
step 5:tag=0;tag为任务分配的次数,一个任务分配给三个人,共三次
step 6:当i小于60时,执行下面步骤:
(1)如果tagn为0,则n=0;
(2)当n<10时;
(3)随机生成1-10的一个数;
(4)如果i=1;
(5)当第r个人的第i个任务已经分配;
(6)重新随机生成1-10的一个数,直至满足条件(5);
(7)(4)不满足时,当第r个人的第i个任务已经分配或者第r个人已经做过此项任务;
(8)随机生成1-10的一个数,直至满足条件7;
(9)把第r个人的第i项任务标记为1,表示任务已经分配;
(10)把任务m赋给存放任务的矩阵personTask(i,r);
(11)n=n+1;tag=tag+1;
(12)判断tag是否大于等于3;
(13)tag如果大于3,判断n是否大于等于10;
(14)如果n大于等于10,任务i加1,跳出循环;
(15)如果n不大于10,tagn=1,跳出循环;
(16)如果tag小于3,tagn=1,不要跳出循环;
step 7:判断tag是否大于等于3,如果大于等于3,跳出循环;否则i加1;继续执行step 4 to step 7。
算法2. jiaochadu(person)交叉数的计算:(person为分配任务单矩阵) ;
step 1:将20个人分为同时放到第一组和第二组;
step 2: 将第一组中的每一个人的每一个任务分别与第二组中除了本人的其他人的所有任务作比较,如果任务相同,交叉度加1;
step 3: 输出每一个人的交叉度。
算法3. minsig函数(随机分配time次求的最小交叉数标准差下的任务单)设置迭代次数time; for i=1: time;
执行算法1;
记录任意两人的交叉数;
求解交叉数标准差,和分发任务单;
End:找到最小标准差分发方法。(标准差越低随机性越好,任务分配的也越好)。
4 分发试卷
我们希望得到交叉数均匀的任务单,即任务单中的交叉数标准差接近最小的情况。通过对算法3进行MATLAB编程,设置不同的迭代随机次数得到交叉数标准差,运算时间如下表1:
表1. 不同迭代次数下计算时间和最优标准差
从表1中可以看到在迭代次数为300时,运算时间将近6分钟,得到的分配任务单最优。
5 结论
本文提出的问题是在现实生活中反映的问题,我们将其问题转换成数学问题,用数学思维及数值算法解决问题。本文给出了一种合理随机分发试卷的算法,该算法保证了试卷随机地分发到教师的任务单中。而且每份试卷分给每位教师的概率是等可能的,另外任何两位教师交叉共同评阅一份试卷的情况也尽量均匀,即尽量不要出现交叉次数过多或过少的情况。
参考文献:
[1]袁卫, 庞皓, 曾五一等. 统计学[M].北京: 高等教育出版社. 2004.
[2]魏宗舒. 概率論与数理统计教程[M].北京: 高等教育出版社. 2004.