5组 于金龙 王超 焦艳彬 快速评卷策略 摘要 本文研究的是快速评卷问题,在保证准确率和公平公正的原则下,使每位评卷人评阅的试卷总数最小,即满足总的工作量最小。为解决该问题,在考虑系统误差的前提下,本文建立了多目标优化模型和圆桌评卷模型,利用计算机仿真,建立了以下两种方案,并验证了方案的合理性。 对于方案一,采取了截至分数线淘汰制,每一轮我们将试卷尽可能的平均分成8份,根据该轮试卷的期望值设定一个截至分数线,淘汰分数线以下的所有试卷,剩下的试卷带编号进入下一轮。当最后的试卷数在2W附近时,停止进行下一轮仿真,将2W左右份试卷分给每一位评卷老师进行评阅打分,然后各试卷取平均分进行排名,取前三名为最终优胜者,并记录这三份试卷的编号进行对应。最后我们通过对上述批卷次数进行统计,一组仿真结果如下: 总阅卷次数 218 平均阅卷次数 27 准确率 97.1% 对于方案二,采用了圆桌评卷模型,将所有试卷尽可能平均分成8份(对应8位带有标号的评卷老师),以第一份试卷为例,首先由第一位老师进行评分,淘汰60%,将余下试卷(含试卷标号)交给右手边的第二位老师进行评分,然后将评分与第一位老师的评分取平均值进行排名,淘汰40%,传给右手边的第三位老师进行评分,按照上一回合的排名制继续淘汰,直至该份试卷只剩下一个则不再淘汰。将这个试卷依次交给右手边未评过此卷的老师,进行平均打分,最后得出此份中的最优试卷分数及标号。同样方法,得到剩余7份试卷各自的最优试卷份数及标号,最后对所得8份试卷进行排名,取成绩较高者前三名为优胜试卷,并记录这三份试卷的标号,统计评卷总次数,一组仿真结果如下: 总阅卷次数 212 平均阅卷次数 26.5 准确率 98.3% 最后对方案进行分析和改进,对于三种变量:试卷数量、评卷人数和优胜者数量,当其中两种变量不变,调整第三变量时,观察各方案准确率的浮动,得出三者变动规律,寻求出最优评卷策略。 关键字:关键字:计算机仿真 圆桌模型 系统误差 多目标优化 1.问题重述 在确定像数学建模竞赛这种形式比赛的优胜者时,常常要评阅大量的答卷,比如说,有P=100份答卷。一个由J位评阅人组成的小组来完成评阅任务,基于竞赛资金,对于能够聘请的评阅人数量和评阅时间的限制,如果P=100,通常取J=8. 理想的情况是每个评阅人看所有的答案,并将它们一一排序,但这种方法工作量太大。另一种方法是进行一系列筛选,在一次筛选中每个评阅人只看一定数量的答卷,并给出分数。为了减少所看答卷的数量,考虑如下的筛选方法:如果答卷是排序的,则在每个评阅人给出的排序中排在最下面的30%答卷被淘汰;如果答卷没有排序,而是打分(比如说从1分到100分),则某个截止分数线以下的答卷被淘汰。 这样,通过筛选的答卷重新放在一起返回给评阅小组,重复上述过程,人们关注的是,每个评阅人看的答卷总数要显著地小于P。评阅过程直到剩下W份答卷时停止,这些就是优胜者。当P=100通常取W=3。 现在需要解决的问题是现在需要解决的问题是: 1、利用排序、打分及其他方法的组合,确定一种筛选方法,按照这种方法,最后选中的W份答卷只能来自“最好的”2W份答卷(所谓“最好的”是指,我们假定存在着一种评阅人一致赞同的答卷的绝对排序)。例如,用所确定的方法得到的最后3份答卷将全部包括在“最好的”6份答卷中,在所有满足上述要求的方法中,最终给出使每个评阅人所看答卷份数最少的一种方法。 2、注意在打分时存在系统偏差的可能,例如,对于一批答卷,一位评阅人平均给70分,而另一位可能给80分。在所给出的方法中如何调节尺度来适应竞赛参数(P,J和W)的变化? 2.模型假设 1、计算机仿真出来的数据具有较好的代表性。 2、存在评委认为的绝对打分,评委的工作能力达一定的较高水准。 3、评委独立工作,互不干扰,评卷结果绝对公平。 4、对于同一份答卷,每个评阅人员只能评阅一次,若再次分到已评阅的试卷,就跳过,重新分配。 5、评阅人在评阅答卷之前经过培训,评阅人按照评阅的得分标准打分; 6、每份试卷都是随机分配给每位评委来评阅的。 7、不同评委的评分是相互独立的,同意评委对不同论文的评分也是相互独立的。 8、评委打的分都为整数,打分是按照百分制进行的。 3.符号说明 符号 P J W 符号说明 评卷开始前总的答卷份数 评委的人数 优胜试卷的数目 第j位评委对第i号试卷评的实际分数 第j位评委对第i号试卷评后修正的分数 第i份试卷被数名老师评后的加权平均分 第n轮第i份试卷被打分的次数 第j位评委打分时的系统误差 第n轮总共有Pn份试卷 所有评卷人评阅试卷的总次数 模型仿真1000次的准确率 xij Xij L(i) Ni Zj Pn Q α 4.问题分析 在确定像数学建模这样的大型竞赛的优胜者时,常常要评阅大量的答卷,对于评阅人来讲是一个很大的工作量,如果分配试卷的方法不够合理,也许还会使工作量加重。对此我们首先从以下两个方面进行分析和考虑。 4.1批阅试卷数量 如果有P份试卷,由J位评阅人组成的小组来完成评阅任务,由于受到竞赛资金、能够聘请的评阅人数量等因素的限制,我们在批阅答卷时不可能达到理想的情况,即每个评阅人员都评阅所有的试卷,并进行一一排序。为了减少阅卷人评阅试卷的数量,将试卷随机平分给评阅人员,然后采用淘汰制将每位评阅人给出的排序中的排在下面的部分答卷淘汰,对于淘汰的答卷我们就不予理会,这样会减少工作量。 题目中要求在从P份答卷中选取W份的优胜答卷时,应当来自于最好的2W份中,所以当最终的试卷数接近2W份时,保证这些试卷每个评委都打分,最后共同在将近2W份答卷内选出最优的W份答卷。 4.2公平性分析 由于像数学建模这样的开放性竞赛答卷,都是由每一个考生按照自己的思维所得到的答案,所以答卷并没有标准的答案,也就是老师的主观因素对答卷的分数起很重要的作用。还有就是每个评阅人对于同一份答卷也会打出不同的分数,这也是我们不能忽视的因素。这些系统误差和一些偶然误差都会导致不公平的发生,所以我们应该尽量减少这种不公平性的发生。这就需要我们对每一个评阅人所打的分数进行修正。最后在从将近2W份答卷内选出最优的W份答卷时,我们也尽量的让优胜者是在尽量多的人都满意的情况下产生,这样我们既保证了优胜者是优秀的,被淘汰的答卷也是在公平的条件下被淘汰的。 4.3模型的确定 基于以上两点的分析,我们采用两种方案,一种是截止分数线淘汰制,一种是圆桌模型理论。 对于方案一,我们画出如下仿真流程图 随机产生100个1~100服从正态分布的整数,作为标准分d作为评委偶然误差的上界,Matlab产生一个服从正态分布的整数,作为评委打分偏差z作为评委偶然误差,Matlab产偏激程度,作为评委打分偏差生成一个举证,该矩阵是每位每位评为对每份试卷的评分是找出剩余答卷的成绩最好的3份为最优第一轮回,把100份卷子分给8位评委打分,淘汰分数小于70分的卷子,看神谕的卷子分数是否大于6份否是找出剩余答卷的成绩最好的3份为最优第二轮回,把第一轮回剩余的卷子分给8位评委,淘汰分数小于80分的卷子,看神谕的卷子分数是否大于6份否是第三轮回,把第二轮回剩余的卷子分给8位评委,淘汰分数小于85分的卷子,看神谕的卷子分数是否大于6否找出剩余答卷的成绩最好的3份为最优是找出分数最优的前6份卷子,让每位评委对其打分,得出平均分,排除名次,找去前三名为最优编程,让程序运行1000次,得出最后选出的三分答卷,是否是在原始成绩的前3名里,算出其准确率得出结果,进行分析 图1 方案一仿真流程图 5.模型的建立 5.1模型的准备模型的准备 5.1.1数据的生成 一般学生成绩的分数是服从正态分布的,所以我们先运用matlab生成(1—100)100个服从正态分布X~N(µ,σ2)的随机数,其中令u=70,σ=10,作为这100份试卷的标准分,并对这100份试卷进行编号(i=1,2,3L100)。 5.1.2评卷误差分析评卷误差分析 由于各种原因,评卷的过程中都会产生误差,我们将误差分为以下两类: 偶然误差 每个评委在打分过程中,由于开始对评阅试卷的不熟或者后期疲惫等原因,会出现偶然出错现象,我们将这时产生的数据误差成为偶然误差,且各评委出现偶然误差的方差可以看作相等,于是可用matlab产生一个服从正态分布N(0,d2)的整数,作为各个评委打分的偶然误差,记为Oi(j)。 系统误差 因评卷人员个人喜好不同,看待问题角度的差异,所造成的评分偏差称为系统误差。 1n1J公式为: ∆xj=∑(xij−xi) 其中xi=∑xij ni=1Ji=1其中∆xj为第j位评委的系统误差,xij为第j位评委对第i份试卷打的分数,xi为第j位评委对第i份试卷打的平均分数。 5.1.3 目标函数的确立 通过分析,可以知道,若要达到快速阅卷的要求,就需要评阅人在评阅试卷过程的工作量尽量小,即所有人所评阅答卷的总份数尽量少,同时为保证公平和公正还要求评委阅卷的准确率足够高,因此我们可以建立目标函数: minQ=∑Zj i=1Js.tα≥95% 其中,Q为所有评阅人批阅试卷的总次数,J是本次评阅答卷所聘请的评阅人员数量,Zj是第j个评阅人评阅答卷的总份数,α为模型的准确率。 5.2方案一 5.2.1评阅分数表达式 由于各个老师的偏好不同,为了减小因系统误差和偶然误差造成的评卷方案的失真,对随机生成的标准分数xij进行修正,则第j位评卷人对第i份答卷的阅卷分数表达式为:Xij=xij+∆xj+Oi(j)。 然后将进行打分的答卷最终分数用L(i)表示,第j位评卷人对第i份答卷的实际阅卷分数为Xij,Ni表示第i份答卷被打分的次数,则第i份试卷的平均分数为: ∑XL(i)=j=18ijNi 5.2.2评卷分配规则 进行n轮评阅,第n轮总共有Pn份答卷(n=1,2,3),J位评阅人员,假设每位评阅人员的评阅速度相等。要使评阅人员的工作量尽量相等,且很快的完成评阅任务,制定了如下分配答卷的规则: 1)如果P刚好是J的整数倍,且若以后每轮答卷的总份数都是J的整数倍,则每轮都进行平均分配答卷。 2)如果从某一轮开始出现答卷的总份数不是J的整数倍,则从这一轮开始先进行平均分配,多出来的答卷份数由编号为1、2、3……等按编号顺序的评阅人员进行评阅,直到评卷完毕。 3)若出现同一位评阅人员,再次分配到他已评阅过的答卷,则上交,给他分配新的答卷,保证他评阅答卷的份数。 5.2.3方案一的建立及求解方案一的建立及求解 根据目标函数 minQ=∑Zj i=1Js.tα≥95% 取P=100,J=8,W=3为例,用计算机进行模拟求解,得到100份试卷的随机分数设为标准分数如下: 表1 生成标准分数及标号 编号 1 2 3 成绩 66 57 96 编号 26 27 28 成绩 67 73 69 编号 51 52 53 成绩 63 76 79 编号 76 77 78 成绩 73 74 72 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 79 74 79 84 70 78 85 65 67 57 56 64 76 83 45 68 46 68 74 71 64 62 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 68 90 84 74 69 61 73 67 57 43 72 67 63 59 68 83 71 63 81 89 75 70 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 65 69 89 81 76 72 80 81 81 86 67 72 77 74 70 66 59 89 77 62 59 68 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 65 75 59 71 60 57 61 52 80 69 68 52 76 77 81 84 78 60 72 76 61 69 评卷过程分3轮进行,前2轮每轮打分淘汰截至分数线以下的答卷。 第一轮:第一轮:现将P1=100份试卷按照评卷分配规则分配给8位评卷人员,1-4号阅卷人每人分得13分试卷,4-8号阅卷人每人分得12分试卷。所有评卷人对这一百份试卷进行打分,对所给分数进行排序后,淘汰分数低于70的试卷,然后将剩余的P2份试卷进行随机分配,准备下一轮评卷工作。 第二轮:第二轮:将第一轮评阅剩余的P2份试卷再次按照评卷分配规则分配给8位评卷人员,对其进行打分后,与第一轮中这P2份试卷的成绩相加后取平均值,得出的最终成绩进行排序,淘汰分数低于80的试卷,剩余P3份试卷,若P3<6,则直接对这P3份试卷进行排序,取前三名即为本次阅卷最终的优胜者;若P3>6,则将剩余的P3份试卷同样进行随机分配,准备下一轮评卷工作。 第三轮:第三轮:将第二轮评阅剩余的P3份试卷再次按照评卷分配规则分配给8位评卷人员,对其进行打分后,与前两轮中这P3份试卷的成绩相加后取平均值,得出的最终成绩进行排序,淘汰分数低于85的试卷,剩余P4份试卷,若P4<6,则直接对这P4份试卷进行排序,取前三名即为本次阅卷最终的优胜者;若P4>6,则将剩余的P4份试卷进行排序后取前六名,然后将这六份试卷再次分给8位评阅人(若评阅人遇到已经评阅过的试卷,则选择跳过处理),最终将这六份试卷的成绩再次进行排序后取前三名,即为本次阅卷的最终优胜者,一组仿真结果如 下: 表2 方案一优胜者分数及标号 试卷标号 得分 22 90 72 89 71 89 由此我们得出前三名的标号依次是:22、72、71,成绩得分分别是:90、89、89。 对于评阅次数及准确率,我们在此列出了其中一组仿真数据,运行结果如下: 表3 方案一部分运行成果 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 阅卷总数 197 215 199 193 170 160 192 205 171 200 145 206 226 161 165 199 206 189 序号 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 阅卷总数 211 178 204 161 206 213 200 205 193 193 194 233 212 197 159 218 170 201 序号 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 阅卷总数 209 155 168 202 167 202 169 202 203 203 217 209 172 210 199 164 190 167 表2表示的是在准确率为0.97的情况下计算机模拟运行得到的部分成果,总的阅卷范围在145-233之间波动,基本满足了本题的要求,在保证公平、公正的前提下,总的阅卷数量不是很多。 5.3方案二 5.3.1评阅分数表达式 由于各个老师的偏好及阅卷能力等的不同,存在着一定的系统误差和偶然误差,为了避免这些误差造成评卷分数的失真,现对各位老师的评卷能力进行测试,算出一个修正系数b(j),则有Xij*b(j)=xij,故阅卷成绩表达式为: Xij=xij/b(j) 对于修正系数b(j)的算法,我们以8位阅卷人为例,首先随机生成10个标准分数xi,其中i=1,2,3,⋅⋅⋅,10;然后让8位阅卷人对这10份卷子进行评阅,得到分数Xij,则有b(j)=(∑5.3.2评卷分配规则 共有P份试卷,J位评阅人员,假设每位评阅人员的评阅速度相等,要使评阅人员的工作量尽量相等,且不能出现评阅同一张试卷的情况,并可以很快的完成评阅任务,制定了如下分配答卷的规则: 1)如果P刚好是J的整数倍,且若以后每轮答卷的总份数都是J的整数倍,Xijxi)/10,其中j=1,2,3,⋅⋅⋅,8。 则每轮都进行平均分配答卷。 2)如果从某一轮开始出现答卷的总份数不是J的整数倍,则从这一轮开始先进行平均分配,多出来的答卷份数由编号为2、4……等偶数编号的评阅人员按顺序进行评阅,直到评卷完毕。 5.3.3方案二方案二的建立及求解的建立及求解 根据目标函数 minQ=∑Zj i=1Js.tα≥95% 取P=100,J=8,W=3为例,用计算机进行模拟求解,得到100份试卷的随机分数我们将其定为标准分数,如下: 表4 生成标准分数及标号 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 成绩 66 57 96 79 74 79 84 70 78 85 65 67 57 编号 26 27 28 29 30 31 32 33 34 35 36 37 38 成绩 67 73 69 68 90 84 74 69 61 73 67 57 43 编号 51 52 53 54 55 56 57 58 59 60 61 62 63 成绩 63 76 79 65 69 89 81 76 72 80 81 81 86 编号 76 77 78 79 80 81 82 83 84 85 86 87 88 成绩 73 74 72 65 75 59 71 60 57 61 52 80 69 14 15 16 17 18 19 20 21 22 23 24 25 56 64 76 83 45 68 46 68 74 71 64 62 39 40 41 42 43 44 45 46 47 48 49 50 72 67 63 59 68 83 71 63 81 89 75 70 64 65 66 67 68 69 70 71 72 73 74 75 67 72 77 74 70 66 59 89 77 62 59 68 89 90 91 92 93 94 95 96 97 98 99 100 68 52 76 77 81 84 78 60 72 76 61 69 应用圆桌模型理论,将8位阅卷人看成围在一个圆桌进行批阅的形式,实际上彼此是相互独立、互不影响的。每个评阅人员在批阅之前,分别拿到按分配规则分得的试卷(比如编号1分得12份,编号2分得13分……),然后通过打分,排序,每个阅卷人手中仅留下排在前5名的试卷,排在后面的全部淘汰,之后将答卷统一轮换,再给下一个人评阅,此时每位评阅人手中有5份试卷,评阅后进行排序取前三名,其余淘汰;将剩下的3份试卷统一轮换,传给下一位阅卷人,评阅后进行排序,取出最好的1份其余淘汰,现将这1份试卷继续向下传递,分别被不同的评阅人打分过后通过求平均值得到这8位评阅人手中的8份试卷的最后分数,进行排序后选出前3名,即为最终的优胜者。 现以从编号为1的阅卷人分得的第一份试卷为例,来说明这一过程: 1号阅卷人首先分得12份试卷,评阅后排序选出前5份试卷传给2号阅卷人(同时也收到从8号阅卷人传来的5份试卷);2号阅卷人将这5份试卷进行评阅后排序选出排在前三名的试卷其余淘汰,并将这3份试卷依次传给3号阅卷人;3号阅卷人收到试卷后再次进行评阅排序,选出最好的一份传给4号阅卷人,其余两份淘汰;4号阅卷人评阅后传给5号阅卷人,5号阅卷人评阅后再传给6号阅卷人,6号评阅后再传给7号,7号评阅后传给8号,保证每位阅卷人都评阅了这份试卷,最后算出这份试卷的平均值。其他七份试卷也如此循环,最终将这8份试卷进行排序后取排名在前三的三份试卷作为本次评阅的优胜者。一种仿真结果如下表: 表5 方案二优胜者分数及标号 试卷标号 得分 42 92 85 91 91 90 22 88 4 87 74 84 37 77 51 75 由此我们得出前三名的标号依次是:42、85、91,成绩得分分别是:92、91、90。 对于评阅次数及准确率,我们在此列出了其中一组仿真数据,运行结果如下: 表6 方案二部分仿真结果 总阅卷次数 212 平均阅卷次数 26.5 准确率 98.3% 5.4方案一、方案一、二的分析二的分析 方案一每轮都进行了细致的打分,这样对每个学生都较公平,就运行结果看,模型及算法还是很合理的,只是评阅试卷总份数的数量有些波动,但准确率还是很高的; 方案二采用圆桌模型的模拟方法,准确得出了前3名优胜者的标号,这样的好处是在一定程度上减少了系统误差,且评阅试卷的总份数较少、运行准确度较高。 5.5对于P、J、W均变化时的讨论 在方案一的基础上,我们讨论了不同情况下的准确率,得到P、J、W中任一元素变化时的不同情况如下表所示: 表7 P、J、W变化对比表 1 2 3 4 5 6 7 8 9 10 11 12 13 P 100 200 300 400 500 400 400 400 400 400 400 400 400 J 8 8 8 8 8 15 20 25 30 15 15 15 15 W 3 3 3 3 3 3 3 3 3 6 8 10 12 准确率 96.8% 92.9% 92.0% 92.3% 91.7% 93.7% 95.0% 93.6% 94.4% 87.0% 84.4% 83.5% 80.4% 根据上表我们利用matlab分别画出了评委数J、优胜者数目W、答卷数P对准确率的影响: 当试卷数量和选取优胜试卷份数不变,评委的人数对该卷准确率的影响如图: 9594.59493.59392.59251015202530 图2 评委人数对准确率的影响 当试卷数量和评委人数不变,选取优胜试卷份数对该卷准确率的影响如下图: 959085803456789101112 图3 选取优胜试卷份数对准确率的影响 当选取优胜试卷份数和评委人数不变,试卷数量对该卷准确率的影响如下图: 0.9350.930.9250.920.9150.910.905100150200250300350400450500 图4 试卷数量对该卷准确率的影响 根据上面三幅图我们可以轻松得出: (1)当P、W一定时,评委人数J的数目越多,准确率越高,对参赛者来说越公平,但所有老师的阅卷总次数也是最高的,这将导致竞赛资金的增加,同时延长了评阅时间; (2)当P、J一定时,最终选出优胜试卷的份数W越多,准确率越高,由于答卷数和评阅人均一定,则每个老师的评卷次数以及所有老师的阅卷总次数始终是一定的,但是W越大,则最后确定的2W越大,最终的优胜者的确定范围就越大,从而准确率越高; (3)当J、W一定时,答卷数目P越多,准确率越低,同时每个老师的评卷次数以及所有老师的阅卷总次数也就越多,由于最终目标相同,评卷人数也一定,显然只有当这个团体的总任务越少的时候完成任务越快越好。 6.模型的评价、模型的评价、改进及推广 6.1模型的评价 6.1.1优点:优点: 1.计算评卷人所看答卷数目时,充分的考虑到评卷老师个人因素对评卷成绩的影 响,即系统误差产生的影响,并提出了修正系数的解决方法,很好的降低了误差对评阅结果产生的影响。 2. 假设成绩服从正态分布,并采用计算机仿真模拟的方式,检验了方案的合理性,具有广泛的代表性和适用性。 3. 模型中采取先松后紧的筛选方案,在保证准确率满足条件的前提下,极大的减少了不必要的评阅次数,从而大大降低了工作量,并缩短了评阅时间。 6.1.2缺点:缺点: 1.由于题目本身的限制,模型只对一小部分试卷进行了排名,评出了W个优胜者,并未对其它试卷进行排名处理,此处有待改进。 2.模型二中采用圆桌理论进行循环评分,没有考虑当出现相同分数的情况,依然采用百分数淘汰法,这样会导致筛选误差。 6.2模型的改进 对模型一,增强其通用性,将譬如试卷数量、评卷老师数量和优胜者数量,用字母代替,这样模型就可以推广应用到其它类似的考试评卷中。 对模型二,增加考虑出现相同分数的情况,此时应将相同分数的试卷交由第二个人进行评分,如果分数依然相同,再交给第三人进行评分,以此类推,直至分出高低分为止;同样也可以参照上一轮的得分情况进行高低排名。 6.3模型的推广 在没有数据的情况下,可利用计算机仿真模型对实际问题进行分析,判断问题的可行性,这样既达到了可行性评价的目的,又大大降低了评价费用,有较大的推广应用价值。 考试成绩一般服从正态分布,可以推广应用到其它类型的竞赛考试;运用计算机随机产生正态分布的一种数据,结果比较精确,这种方法可以应用到很多没有数据的问题,进行仿真模拟,以求得符合实际的优化解。 7.参考文献 [1]李学文.数学建模优秀论文精选与点评. 北京:清华大学出版社,2011。 [2]蔡锁章.数学建模原理与方法.北京:海洋出版社。 [3]岂兴明等.MATLAB程序设计快速入门.北京:人民邮电出版社,2009。 [4]司守奎,数学建模算法与程序,烟台:海军航空工程学院,2007。 8.附录 附录一:附录一:方案一程序 clc,clear; P=100; W=3; J=8; zsum=zeros(1,1000); zaverage=zeros(1,1000);sum=0; for ii=1:1000 d0=1; e=2; x=normrnd(70,10,1,100); d=unifrnd(0,d0,1,8); %%产生J位老师偶然误差的方差 for j=1:8 O(j,:)=normrnd(0,d(j),1,100);%%产生J位老师对P份试卷评分时产生的随机误差 end for j=1:8 z0=[1,0,-1]; a=randperm(length(z0)); z(j)=z0(a(1))*e;%%产生J位老师的系统误差 end for j=1:8 for i=1:100 X(j,i)=x(i)+z(j)+O(j,i);%%产生J位老师对P份试卷的评分 end end [sto0,index0] = sort(x,'descend'); %序号 xuhao1=sto0(1:6); xuhao=[index0(1:6)]; %第一轮 store10=[X(1,1:13),X(2,14:26),X(3,27:39),X(4,40:52),X(5,53:64),X(6,65:76),X(7,77:88),X(8,89:100)]; sum1=0; store11=[]; for i=1:100 if store10(i)<70; store10(i)=0; else sum1=sum1+1; store11(i)=store10(i); end end [sto1,index1]=sort(store11,'descend'); sto11=sto1(1,1:sum1); index11=index1(1,1:sum1); m1=sort(index11);%对序号进行从小到大的排序 X1=X(:,[m1]); if X1>100 X1=100; end if sum1<6 [xxx11,index11]=sort(store11); a1=xxx11(end-2:end); xuhao1=[index11( end-2),index11( end-1),index11(end)]; sum0=100+sum1; end disp(['第一轮淘汰后还有',int2str(sum1),'份答卷']); %第二轮 n2=floor(sum1/J);%每位老师分卷的数的整数 p2=mod(sum1,J);%余数 w21=n2*ones(1,8); for i=1:p2 w21(i)=w21(i)+1; end w21;%每位老师分卷的数 w22=zeros(1,J+1); for j=1:J w22(j+1)=w22(j)+w21(j); end w22=w22(1,2:J+1); store21=(X1(2,1:w22(1))+X1(1,1:w22(1)))/2; store22=(X1(3,w22(1)+1:w22(2))+X1(2,w22(1)+1:w22(2)))/2; store23=(X1(4,w22(2)+1:w22(3))+X1(3,w22(2)+1:w22(3)))/2; store24=(X1(5,w22(3)+1:w22(4))+X1(4,w22(3)+1:w22(4)))/2; store25=(X1(6,w22(4)+1:w22(5))+X1(5,w22(4)+1:w22(5)))/2; store26=(X1(7,w22(5)+1:w22(6))+X1(6,w22(5)+1:w22(6)))/2; store27=(X1(8,w22(6)+1:w22(7))+X1(7,w22(6)+1:w22(7)))/2; store28=(X1(1,w22(7)+1:w22(8))+X1(8,w22(7)+1:w22(8)))/2; store20=[store21,store22,store23,store24,store25,store26,store27,store28];%剩余卷的分数 sum2=0; for i=1:sum1 if store20(i)<80; store20(i)=0; else sum2=sum2+1; end end sum2; [sto2,index2]=sort(store20,'descend'); sto21=sto1(1,1:sum2); index21=index2(1,1:sum2); m2=sort(index21);%对序号进行从小到大的排序 X2=X1(:,[m2]); if sum2<6 [xxx21,index21]=sort(store20); a2=xxx21(end-2:end); xuhao2=[index21( end-2),index21( end-1),index21(end)]; m2=sort(index21);%对序号进行从小到大的排序 g1=m2(1,[xuhao2]);g2=m1(1,[g1]); g=g2;%求出原数据对应的序列号 sum0=100+sum1+sum2; end disp(['第二轮淘汰后还有',int2str(sum2),'份答卷']); %第三轮 n3=floor(sum2/J);%每位老师分卷的数的整数 p3=mod(sum2,J);%余数 w31=n3*ones(1,8); for i=1:p3 w31(i)=w31(i)+1; end w31;%每位老师分卷的数 w32=zeros(1,J+1); for j=1:J w32(j+1)=w32(j)+w31(j); end w32=w32(1,2:J+1); store31=(X2(2,1:w32(1))+X2(1,1:w32(1))+X2(3,1:w32(1)))/3;%第j次阅卷为给出的平均分 store32=(X2(3,w32(1)+1:w32(2))+X2(2,w32(1)+1:w32(2))+X2(4,w32(1)+1:w32(2)))/3;%第j次阅卷为给出的平均分 store33=(X2(4,w32(2)+1:w32(3))+X2(3,w32(2)+1:w32(3))+X2(5,w32(2)+1:w32(3)))/3;%第j次阅卷为给出的平均分 store34=(X2(5,w32(3)+1:w32(4))+X2(4,w32(3)+1:w32(4))+X2(6,w32(3)+1:w32(4)))/3;%第j次阅卷为给出的平均分 store35=(X2(6,w32(4)+1:w32(5))+X2(5,w32(4)+1:w32(5))+X2(7,w32(4)+1:w32(5)))/3;%第j次阅卷为给出的平均分 store36=(X2(7,w32(5)+1:w32(6))+X2(6,w32(5)+1:w32(6))+X2(8,w32(5)+1:w32(6)))/3;%第j次阅卷为给出的平均分 store37=(X2(8,w32(6)+1:w32(7))+X2(7,w32(6)+1:w32(7))+X2(1,w32(6)+1:w32(7)))/3;%第j次阅卷为给出的平均分 store38=(X2(1,w32(7)+1:w32(8))+X2(8,w32(7)+1:w32(8))+X2(2,w32(7)+1:w32(8)))/3;%第j次阅卷为给出的平均分 store30=[store31,store32,store33,store34,store35,store36,store37,store38];%剩余卷的分数 sum3=0; for i=1:sum2 if store30(i)<85; store30(i)=0; else sum3=sum3+1; end end sum3; [sto3,index3]=sort(store30,'descend'); sto31=sto3(1,1:sum3); index31=index3(1,1:sum3); m3=sort(index31);%对序号进行从小到大的排序 X3=X2(:,[m3]); if sum3<6 [xxx31,index31]=sort(store30); a3=xxx31(end-2:end); xuhao3=[index31( end-2),index31( end-1),index31(end)]; m3=sort(index31);%对序号进行从小到大的排序 g1=m3(1,[xuhao3]);g2=m2(1,[g1]);g3=m1(1,[g2]); g=g3;%求出原数据对应的序列号 sum0=100+sum1+sum2+sum3; else n4=floor(sum3/J);%每位老师分卷的数的整数 p4=mod(sum3,J);%余数 w41=n4*ones(1,8); for i=1:p4 w41(i)=w41(i)+1; end w41;%每位老师分卷的数 w42=zeros(1,J+1); for j=1:J w42(j+1)=w42(j)+w41(j); end w42=w42(1,2:J+1); store41=(X3(2,1:w42(1))+X3(1,1:w42(1))+X3(3,1:w42(1))+X3(4,1:w42(1)))/4;%第j次阅卷为给出的平均分 store42=(X3(3,w42(1)+1:w42(2))+X3(2,w42(1)+1:w42(2))+X3(4,w42(1)+1:w42(2))+X3(5,w42(1)+1:w42(2)))/4;%第j次阅卷为给出的平均分 store43=(X3(4,w42(2)+1:w42(3))+X3(3,w42(2)+1:w42(3))+X3(5,w42(2)+1:w42(3))+X3(6,w42(2)+1:w42(3)))/4;%第j次阅卷为给出的平均分 store44=(X3(5,w42(3)+1:w42(4))+X3(4,w42(3)+1:w42(4))+X3(6,w42(3)+1:w42(4))+X3(7,w42(3)+1:w42(4)))/4;%第j次阅卷为给出的平均分 store45=(X3(6,w42(4)+1:w42(5))+X3(5,w42(4)+1:w42(5))+X3(7,w42(4)+1:w42(5))+X3(8,w42(4)+1:w42(5)))/4;%第j次阅卷为给出的平均分 store46=(X3(7,w42(5)+1:w42(6))+X3(6,w42(5)+1:w42(6))+X3(8,w42(5)+1:w42(6))+X3(1,w42(5)+1:w42(6)))/4;%第j次阅卷为给出的平均分 store47=(X3(8,w42(6)+1:w42(7))+X3(7,w42(6)+1:w42(7))+X3(1,w42(6)+1:w42(7))+X3(2,w42(6)+1:w42(7)))/4;%第j次阅卷为给出的平均分 store48=(X3(1,w42(7)+1:w42(8))+X3(8,w42(7)+1:w42(8))+X3(2,w42(7)+1:w42(8))+X3(3,w42(7)+1:w42(8)))/4;%第j次阅卷为给出的平均分 store40=[store41,store42,store43,store44,store45,store46,store47,store48];%剩余卷的分数 [sto4,index4]=sort(store40,'descend'); sto41=sto4(1,1:6); index41=index4(1,1:6); m4=sort(index41);%对序号进行从小到大的排序 X4=X3(:,m4); store51=(X4(1,1)+X4(2,1)+X4(3,1)+X4(4,1)+X4(5,1)+X4(6,1)+X4(7,1)+X4(8,1))/8; store52=(X4(1,2)+X4(2,2)+X4(3,2)+X4(4,2)+X4(5,2)+X4(6,2)+X4(7,2)+X4(8,2))/8; store53=(X4(1,3)+X4(2,3)+X4(3,3)+X4(4,3)+X4(5,3)+X4(6,3)+X4(7,3)+X4(8,3))/8; store54=(X4(1,4)+X4(2,4)+X4(3,4)+X4(4,4)+X4(5,4)+X4(6,4)+X4(7,4)+X4(8,4))/8; store55=(X4(1,5)+X4(2,5)+X4(3,5)+X4(4,5)+X4(5,5)+X4(6,5)+X4(7,5)+X4(8,5))/8; store56=(X4(1,6)+X4(2,6)+X4(3,6)+X4(4,6)+X4(5,6)+X4(6,6)+X4(7,6)+X4(8,6))/8; store50=[store51,store52,store53,store54,store55,store56]; [xxx51,index51]=sort(store50); a5=xxx51(end-2:end); xuhao5=[index51(end-2),index51(end-1),index51(end)]; g1=m4(1,[xuhao5]);g2=m3(1,[g1]);g3=m2(1,[g2]);g4=m1(1,[g3]); g=g4;%求出原数据对应的序列号 sum0=100+sum1+sum2+sum3+3*8; end sum0; %sumsum(ii)=sum0; average=sum0/8; zsum(1,ii)=sum0; zaverage(1,ii)=average; disp(['第三轮淘汰后还有',int2str(sum3),'份答卷']); disp(['总的阅卷数量为',int2str(sum0),'份答卷']); disp(['平均每位老师批阅',int2str(average),'份答卷']); disp(['------------------------']); %如果评出的最好3个出自前6 if size(intersect(g,xuhao))==[1,3]; sum=sum+1; end end xx=zsum; yy=zaverage; disp(['-----------------------------------','仿真1000次得到模型的正确率为','-----------------------------------']); sum/1000 附录二:附录二:方案二程序 clear;clc; s=0; for i=1:1000 d=3; %d为评委偶然误差上界 e=2; %系统偏差变量 result=zeros(2,8); %用于存储结果数据 x=normrnd(65,10,1,100); p1= round(x); %对数组中的数取整数部分(应该取四舍五入) [biaozhunfenshu,biaozhunxuhao]=sort(p1,2); biaozhunfenshu=fliplr(biaozhunfenshu); biaozhunxuhao=fliplr(biaozhunxuhao); biaozhunxuhao1=biaozhunxuhao(1:8) a=p1; [a,xu]=sort(a,2); a=reshape(a,10,10); xu=reshape(xu,10,10); A=zeros(20,10); for i=1:10 A(2*i-1,:)=a(i,:); A(2*i,:)=xu(i,:); end %%对评委的误差调整 b=zeros(1,8); r=normrnd(65,10,1,10); r=round(r); rr=zeros(8,10); %用于记录8位评委的打分记录 for i=1:8 for j=1:10 d1=randint(1,1,[0,d]); %随机产生一个0到d的服从均匀分布的整数 j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); rr(i,j)=r(j)+e*j0+d1*jj; end b(i)=mean(rr(i,:)./r); %确定每个评委的修正系数 end %----------------存储标准结果---------------------- [p0 index0]=sort(p1,2); p0=fliplr(p0); index0=fliplr(index0); j1=p1(1:12); j2=p1(13:25); j3=p1(26:37); j4=p1(38:50); j5=p1(51:62); j6=p1(63:75); j7=p1(76:87); j8=p1(88:100); %对第一份试卷进行处理 for i=1:12 d1=randint(1,1,[0,d]); j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); j1(i)=j1(i)+e*j0+d1*jj; end j1=j1*b(1); [jp,index]=sort(j1,2); %(按行)将j1的每行都按从小到大排序,把排好序的数据存放在数组jp中,并记下现在数组中的数在原数组中的序号,存放在index中 jp=fliplr(jp); index=fliplr(index);%-将 jp、index 数组都倒序 (用函数fliplr()) %-取前5份试卷,舍弃后面的7份 jp1=jp(1:5); index1=index(1:5); % 用index1记下前面5份试卷的序号 %%第二位老师评阅试卷 for i=1:5 d1=randint(1,1,[0,d]); j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp10(i)=p1(index1(i))+e*j0+d1*jj; end jp11=jp10*b(2); jp110=0.5*(jp1+jp11); [jp110,index11]=sort(jp110,2);%按从小到大排序 jp110=fliplr(jp110); index11=fliplr(index11); index11=index1(index11); jp111=jp110(1:3); index111=index11(1:3); %取前3份试卷,舍弃后面的2份 %%给第三位老师评阅试卷 for i=1:3 d1=randint(1,1,[0,d]); j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp100(i)=p1(index111(i))+e*j0+d1*jj; end jp112=jp100*b(3); jp113=0.5*(jp111+jp112); [jp113,index113]=sort(jp113,2); jp113=fliplr(jp113); index113=fliplr(index113); index113=index111(index113); jp114=jp113(1:2); index114=index113(1:2); %%给第四位老师评阅试卷 for i=1:2 d1=randint(1,1,[0,d]); j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp1000(i)=p1(index114(i))+e*j0+d1*jj; end jp115=jp1000*b(4); jp116=0.5*(jp114+jp115); [jp116,index116]=sort(jp116,2); jp116=fliplr(jp116); index116=fliplr(index116); index116=index114(index116); jp117=jp116(1); index117=index116(1); %%给第五位老师评阅试卷 i=1; d1=randint(1,1,[0,d]); %随机产生一个0到d的服从均匀分布的整数 j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp10005(i)=p1(index117(i))+e*j0+d1*jj; jp118=jp10005*b(5); jp119=0.5*(jp117+jp118); %%第6个老师评卷 i=1; d1=randint(1,1,[0,d]); %随机产生一个0到d的服从均匀分布的整数 j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp10006(i)=p1(index117(i))+e*j0+d1*jj; jp120=jp10006*b(6); jp121=0.5*(jp119+jp120); %%第7个老师评卷 i=1; d1=randint(1,1,[0,d]); %随机产生一个0到d的服从均匀分布的整数 j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp10007(i)=p1(index117(i))+e*j0+d1*jj; jp122=jp10007*b(7); jp123=0.5*(jp121+jp122); %%第8个老师评卷 i=1; d1=randint(1,1,[0,d]); %随机产生一个0到d的服从均匀分布的整数 j0=randint(1,1,[-1,1]); jj=randint(1,1,[-1,1]); jp10008(i)=p1(index117(i))+e*j0+d1*jj; jp124=jp10008*b(8); jp125=0.5*(jp123+jp124); %%选出序号 index125=index117(i); jp125=round(jp125); %-同上面第一份的处理方式一样,下面是对第2—8份进行处理,因篇幅所限,此处略。