题目 #304
作者:IOAI 2026 Organizing Team
难度
您的最佳成绩
不适用
你们正在一张由 8 × 8 个网格单元组成的城市地图上训练配送机器人。在每个回合中,机器人从一个空闲单元出发,到达包裹所在的仓库,取走包裹,前往另一个仓库——目的地——并完成配送。每张地图包含六个仓库和八个受阻单元。
目标是从有意设置得很少的专家演示中学习机器人的行为。这是一个行为克隆问题:你们使用观察/动作样例训练模型,然后在新回合中逐步运行该模型。
仓库的索引为 0..5,标签为 A..F。当机器人携带包裹并在目的地执行有效的 dropoff 动作时,回合成功结束。最多允许 120 个 actions。
| ID | 动作 |
|---|---|
| 0 | 南 |
| 1 | 北 |
| 2 | 东 |
| 3 | 西 |
| 4 | 取包裹(pickup) |
| 5 | 送达包裹(dropoff) |
撞向墙壁或移出地图不会改变机器人的位置,但会消耗一个步骤。仅当机器人位于包裹所在的仓库且尚未携带包裹时,pickup 才会成功。仅当机器人携带包裹并位于目的地时,dropoff 才会成功。无效的 pickup 或 dropoff 不会改变 state,并会消耗一个步骤。
每条训练观察包含:
grid:float32 张量,形状为 (6, 8, 8);vector:13 个归一化数值;action_mask:指示有效 actions 的六个布尔值;state:(row, column, package_field, destination)。grid 张量的通道分别表示:
vector 按顺序包含:机器人归一化后的行和列、包裹字段、目的地、携带指示器、当前目标的行和列、相对于目标的差值,随后是四个受阻移动指示器,顺序为南、北、东、西。
公开数据集包含:
平台包使用 JSON 和安全的 NumPy 数组,而不是 Python pickle 文件。确切名称和加载代码请参阅 starter_kit.py。请使用 allow_pickle=False 加载 NumPy 文件。
每个 layout_id 由四个回合共享。唯一键始终为:
(layout_id, episode_seed)请训练一个确定性模型,根据当前观察预测下一个动作。请在完整回合上运行模型,并为每个测试场景生成一个动作序列。
你们可以使用所提供的演示进行训练。不得获取验证集或测试集的专家标签,也不得通过搜索、规划或其他专家模型生成额外的专家演示。科学委员会可能会审查基于规则或明确硬编码的解决方案。组织者可能会要求提供用于生成提交结果的 notebook 或源代码。
请提交一个名为 predictions.zip 的 ZIP 压缩包,其根目录必须恰好包含一个文件:predictions.json。
该文件必须包含一个恰好有 1,600 个对象的 JSON 数组,每个测试回合对应一个对象:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]要求:
(layout_id, episode_seed) 匹配回合,而不是按照行顺序;actions 必须是由 0 到 5 之间的整数(而非布尔值)构成的 JSON 列表;无效压缩包或不完整的提交将被拒绝。
指标为回合成功率:
SR = successful deliveries / evaluated episodesscore = 100 × SR到达包裹、接近目标或使用更少步骤均不获得部分分数。
对于平台排行榜,测试地图会以确定性方式划分:
比赛期间显示部分分数,而最终排行榜使用完整集合。公开数据中不包含样本属于这两个子集中的哪一个。平均步骤数以及无效的 pickup/dropoff 尝试可能会出现在评测器日志中,但不会影响分数。
改编自**《机器人配送学院:预备课程》(IOAI 2026, Home Task 2)**。安全数据表示、验证规则、排行榜划分和评测器均为针对 MLCompete 平台所作的调整。