Arbiter评测系统指北

dingyuxiao99

2018-10-19 22:26:55

Tech. & Eng.

0x00 前言

NOIP又要到了,你还在为比赛后批量评测代码而发愁吗?你还在为校内组织模拟赛没法统一评测而苦恼吗?Cena用户当我什么都没说你还在对着没有任何文档的Arbiter评测系统发愁吗?现在好了,有了这篇教程,让你轻松完成大量代码评测顺带偷瞄一眼其他大佬的成绩.

Arbiter预装于NOI Linux,可以用于比赛代码的批量离线评测,适用于希望完全重现NOIP评测机的比赛评测,以及希望组织比赛时断网后统一评测,是非常优秀的解决方案(虽然提供独立安装包跨平台提供文档).当然你也可以选择替代品Project Lemon和Cena,使用起来也很得心应手.

0x01 准备工作

  1. 实体机(对于代码评测来说,如果有条件的尽量将NOI Linux安装在实体机上,因为虚拟机运行的时候会产生一定的时间误差,但是如果要求不那么严谨,安装在虚拟机上也是OK的)
  2. 待评测选手代码和输入输出数据(后文会讲到正确的存放要求)
  3. 选手信息(后文会讲到如何格式化选手信息等相关操作)

    0x02 创建比赛

  4. 点击New,新建比赛;(此处以NOIP 2017为例)
  5. 右击试题概要下的空白,新建考试;(我们为了偷懒,就把day1和day2合并到一个考试里面了) 完成后就像下图这样。
  6. 编辑题目信息.按照题目要求设置包括名称、分值、测试点数量、比较方式、编译器等等,请按照实际情况配置,难度不大,不再赘述,直接上一个配置好的截图吧;

Hint:在比较方式的选择上,建议采用字符串比较-多行单字符串,这种比较方式通常可以应对绝大多数OI题目,如果题目有特殊要求可以选择其他方式,当然Arbiter也提供自己编写比较方式的功能,大家可以自行造轮子百度了解比较方式.以及编译选项中一定要跟上-lm以保证和NOIP完全一致.下图以phalanx为例,介绍如何配置一个可以正常评测的题目:

到这里,我们已经完成了Arbiter题目的配置了,保存一下比赛后,开始将评测数据、选手代码以及选手信息放在正确的地方.

这里图片有点模糊我自己差点都看不清楚了,介绍一下目录下所有文件/文件夹的功能:

  1. 配置选手信息并写入player.info文件中:建议不要在文件中包括中文,格式为username@ID,如为了省事可以保存为ID@ID,最后导出csv的时候可以直接使用vlookup()完成合并.

切记,完成以上操作前后都必须保证Arbiter已经关闭,否则可能带来一些不可预料的后果

再次打开Arbiter,打开比赛,会让你去选择setup.cfg文件,Arbiter自动读取所有配置,以及你添加进来的选手信息、代码以及测试数据.

Hint:开始大规模评测之前,强烈建议再次检查相关配置是否正确,并选择一个选手进行试评测,得到结果后与手动编译测试后的结果进行对比,如果评测日志中没有出现与手动结果差异太大的结果则可开始.

0x04 评测&&处理结果

全选选手,点击评测,泡一杯茶并打开崩崩崩静候评测结束.之后导出csv,获取最终结果.

如果对评测结果有任何疑问,可以去Contests/result/dayX/PlayerX/对应题目下查看评测日志,Arbiter针对每一个点的评测都有详细的日志记录.

到这里整篇教程就结束了,但是我还是要强调的是,因为NOI Linux是基于Ubuntu 14.04 LTS x86进行的魔改,精简过程中删除掉了部分驱动以及运行库,如果在虚拟机中使用可能会遇到OpenVM Tools无法安装的情况,建议使用SCP或者其他方法进行文件传输(在VMware Workstation Pro v14上把U盘挂载到虚拟机中无法识别,至少在写这篇文章的机器上挂载失败了,未验证后续版本是否修复).

顺便预祝各位RP++