一. 背景信息
随着信息社会的进步,对网络传输的要求也越来越高,在带宽固定的情况下,数据如何被更好的压缩显得尤为重要。
合理的压缩算法能够用有限的空间,携带更多的信息。
本次赛题以对战双方对虚拟资源争夺的方式,来体现数据压缩在当今信息社会的重要性。
二. 游戏概述
游戏分为两个阵营,双方通过调度各自的资源机器人装载虚拟资源兑换金币,同时累计积分,比赛结束时累计积分更多的一方阵营胜利,若积分相同则平局。资源机器人将装载后的资源,运回到己方基地后,会自动触发资源卸载,并累计积分。每场比赛由调度系统与资源机器人配合完成,调度系统负责调度资源机器人,为资源机器人规划行走路线,下达资源装载命令,以及根据资源机器人历史装载数据设计最优资源机器人调度方案。资源机器人则负责虚拟资源处理,进行压缩、解压缩。
1. 调度系统
调度系统负责资源机器人的调度,在模拟地图上每个回合为每一个资源机器人选择合适的路径。
调度系统可对资源机器人下达多种指令:
装载指令:资源机器人在经过该命令所指定位置时,将对该命令所指定资源进行装载。
压缩装载指令:资源机器人在经过该命令所指定位置时,将对该命令所指定资源进行压缩装载。
购买“能量掠夺者”指令:资源机器人在经过该命令所指定位置时,完成“能量掠夺者”购买。
能量购买指令:资源机器人在经过该命令所指定位置时,完成能量购买。
2. 资源机器人
实现虚拟资源处理,支持数据压缩、解压缩。
三,游戏规则
1. 地图
游戏地图大小为12 * 12的矩形,坐标原点(0,0)在地图的左上角,向右是水平方向的X坐标,向下是垂直方向的Y坐标。如Figure 1:地图坐标示例所示:
地图中存在的元素有虚拟资源、比赛双方机器人、比赛双方基地、障碍物。
地图外围边界为障碍物。
每半场开始资源机器人的起始地点由地图指定。
正式比赛之前会提供两张练习地图,正式比赛时会使用新的地图作为比赛地图使用。(地图的变动包括但不限于资源、障碍物、比赛双方机器人、比赛双方基地起始位置的变化)2. 回合数
游戏分为上下半场。
每半场最大回合数为30回合。
3. 虚拟资源区
虚拟矿产按照稀缺程度由低到高分为蓝、绿、红 ,不同种类的矿产,兑换金币数量不同。
如下图所示为四种资源区,每个虚拟资源区只存在一种矿产类型。
每个资源区内有多个资源单位,每单位虚拟资源单位大小为1024KB。
每个虚拟资源以文件形式存在,参赛选手需提交压缩算法,配合资源机器人完成资源装载。
4. 资源机器人
Figure 3:资源机器人示例
每个回合每个资源机器人只能进行一次路径调度,可以对该路径上的虚拟资源进行装载,但只能装载同一种类型资源。
每半场开始,每个资源机器人自身初始容量2048KB。
每个资源机器人初始能量100,且最大上限也为100。
资源机器人有自身的容量限制,装载的资源单位不能超过自身的容量。
资源机器人可以接对虚拟资源进行压缩,以提高资源装载数。
资源机器人运行能量有限,运送资源过程中会逐渐消耗,若在移动过程中出现能量不足则中途停止移动。
5. 能量掠夺者
能量掠夺者所有操作均不消耗能量。
能量掠夺者,由资源机器人从己方基地购买,购买金额 50 金币。
能量掠夺者购买成功后,出生位置为己方基地周边空地,在当前回合结束后生成,下一回合可以调动。
能量掠夺者移动至对方资源机器人周边(上、下、左、右)时会对其进行能量掠夺,每次掠夺能量值5。
计算规则举例:如能量掠夺者行走至对方资源机器人 上 左 两个方位,掠夺能量值为 5*2。
如果对方资源机器人能量不足5,则只能按对方资源机器人实际能量掠夺,此时对方资源机器人将处于能量耗尽状态。
能量掠夺者移动至己方资源机器人周边时(上、下、左、右)任意位置时,会将已掠夺的能量一次性全部转移至己方资源机器人。
如果掠夺能量后,未在本次调度移动至已方资源机器人,则掠夺能量清零。
资源机器人能量耗尽后,能量掠夺者可以为其补充能量,使其获得能量。
6. 基地
当累计够了一定的金币后,资源机器人经过基地时,可购买 “能量掠夺者”、可购买能量进行充能。
能量掠夺者购买规则:地图上同一时间,每个队伍只能存在一个能量掠夺者,够买成功后回合结束后生效,下一回合启动调度。
如果金币不足,将购买失败,购买失败不做惩罚,不影响后续命令执行。
资源机器人充能规则:每花费一个金币可以购买一个单位能量,购买后立即生效。若购买能量数超过资源机器人自身能量上限,将购买失败,购买失败不做惩罚,不影响后续命令执行。
7. 命令执行机制
每回合移动过程中,根据调度信息,经过某个位置时,将自动触发预设在该位置的命令,若同一位置存在多条命令,将按命令顺序依次执行。
例1:资源机器人按照调度路径到达某一资源区时,将自动触发预设在该资源区的装载命令。
例2:资源机器人按照调度路径到达己方基地时,将自动触发预设的购买能量掠夺者命令。
若前一命令执行失败,后续命令仍继续执行。
8. 行走规则
资源机器人可以向周围的8个方向移动,记做移动一个位置,资源区、己方基地、空地都可以行走。
障碍物位置、对方基地、双方角色位置不能行走,不可以走出边界。
移动到己方基地位置会自动卸载所有当前收集资源,并按资源单位数量与类型计算金币,并累计积分。
可以停留在原地,但是停留原地每回合消耗2个能量。
每个机器人调度路径不能多次路过相同的位置,例如:路线A->B->C->D->B->E为非法路线。
资源机器人每回合只能访问一次己方基地。
行走路径包含机器人起始位置,如果需要原地不动则调度路径仅为起始位置。
9. 资源装载
移动过程中,根据调度信息与装载指令,进行资源装载,如果装载资源单位与当前容量及已装载资源单位相匹配,则装载成功。
资源装载方式有:不压缩直接装载,压缩后装载。
只能按资源单位进行压缩装载(每个压缩装载命令只处理一个资源单位),每压缩一单位资源消耗能量 +1。
资源机器人在容量已满的情况下可以继续执行装载命令,但会装载失败,装载失败不影响后续路径调度。
资源机器人对资源单位进行压缩后,会通过解压缩进行还原验证,若还原验证失败,则不对资源进行装载,装载失败。
10. 资源机器人能量消耗计算
每移动一个位置消耗1个单位能量。
每次资源单位压缩消耗1个单位能量。
装载成功不消耗能量。
装载失败消耗3个单位能量。
11. 金币
系统默认金币数50
兑换规则,将资源卸载到己方基地后,系统自动兑换
红色资源:4金币/单位
绿色资源:2金币/单位
蓝色资源:1金币/单位
四,回合制
游戏使用回合制
每场比赛分为上下半场
每半场比赛至多30回合,整场比赛至多60回合
每游戏回合处理流程如下:
1. 回合开始
2. 第一队的资源机器人开始调度
3. 第一队的能量掠夺者开始调度
4. 第二队的资源机器人开始调度
5. 第二队的能量掠夺者开始调度
6. 回合结束
由于是回合制分先后手,上下半场调换交换对战场地及对战先后手顺序,以保证游戏的公平性。
先后手:
上半场为挑战方先手,下半场为被挑战方先手
五,得分规则
每一场比赛总得分 = 上半场得分 + 下半场得分
兑换规则:
红色资源:每收集1单位 ,得分+4
绿色资源:每收集1单位 ,得分+2
蓝色资源:每收集1单位 ,得分+1
六,胜负判定
1. 半场结束判定:
双方资源机器人能量全部耗尽。
地图上不存在可运输资源,半场结束。
半场30回合全部结束,半场结束。
参赛选手的代码异常响应达到5次,判定产生异常队伍仓储机器人全部退场,半场结束。
2. 胜负判定:
胜负按照本场比赛总得分来判定,得分高者为胜利方,分低者为失败方。
如果双方得分相同则判定为平局。
3.排行榜积分判定:
胜一局排行榜积分+3,平局双方排行榜积分+1,失败积分+0。
4. 排序规则:
优先按照排行榜积分排序,排行榜积分相同则按胜率排序,胜率相同则按全部场次得分总和排序。
七,异常处理
1. 异常是指参赛代码引起的异常,主要分为以下几大类:
运行超过10秒
移动路线不符合规则
(1) 路线重复行走、路线不连续。
(2) 撞到障碍物、撞到双方资源机器人或能量掠夺者、超出地图边界。
(3) 行走至对方基地。
参赛代码异常达到5次,当前半场结束。
异常小于5次时,该资源机器人在本回合轮空,等同于原地不动。
八,接口
1 调度机制说明
如下图所示,Player代表参赛选手所实现代码,任务调度流程如下:
比赛平台下发GameRound调度数据,由Player规划行走路线,下达资源装载命令等,通过GameRoundResp反馈至比赛平台。
比赛平台根据GameRoundResp进行资源机器人调度。
当资源机器人被调度至资源区时,触发资源压缩装载命令,进行资源压缩装载。
资源机器人通过Player提供压缩机制接口,进行数据压缩,与压缩还原验证,若数据还原验证成功,则压缩装载成功。