logo
0
1
WeChat Login
修改文件 README.md

2026 捡网球挑战赛测试题目

欢迎来到 2026 捡网球挑战赛测试题目,本题目旨在让各位选手熟悉赛题的同时,进行初次的选拔。

本项目基于 CNB 云原生开发平台,提供了一套python实践环境。 学习者 Fork 本仓库后通过点击 云原生开发 按钮,即可快速进入对应课程的实践环境,进行实时操作和验证,之后提交pr可以上传成绩。

一、问题定义

场景

  • 场地为二维平面,场地上无障碍
  • 一共有10个球,位置随机
  • 2个桶,位置固定在角点
  • 机器人初始位置固定在底线中点
  • 机器人每次只能携带一个球

动作模式

机器人的动作模式固定为:

当前位置 -> 选择一个球 -> 夹起 -> 选择一个桶 -> 放入 -> 选择下一个球 ...

移动代价计算

  • 移动距离使用欧式距离 sqrt{x^2 + y^2}
  • 总代价 = 所有移动距离之和

目标

将所有球放入桶中,使总代价最小

现有条件

test_case文件,假设了球的位置、桶的位置、机器人出发位置,如图所示

绿色:球
红色:桶
黄色:机器人出发点

img.png

二、代码修改位置

代码启动

可以在项目根目录运行命令查看结果

python3 src/run_all_test.py

在src/student_code.py下,当前已经实现了最简单的路径规划程序,(假设所有的球都放到1号桶中)

返回捡球的顺序和放入桶的编号的序列

def plan(self): """ // TODO: 请在此处实现你的路径规划逻辑 目标:使总路径最短。 当前约束:载重为 1。 """ # 这是一个待优化的占位逻辑(按索引顺序) path = [] for i in range(len(self.balls)): # 逻辑提示: # 1. 选择下一个要捡的球 i # 2. 选择送往 0 号桶还是 1 号桶 path.append((i, 1)) return path

三、数据说明

在test_case.json中的 target_score 字段表示为标准路径长度,即为在贪心算法做路径规划下的路径长度

四、通过要求

通过实现算法,使得在不同测试项下的路径长度都小于或等于标准路径长度,但要求至少有一项小于标准路径长度。

例如: 用例1的 1261.75,为标准路径长度,最后输出的“与标杆差距”的数值要为负数或0
用例2的 1508.76,为标准路径长度,最后输出的“与标杆差距”的数值要为负数或0
用例3的 1079.08,为标准路径长度,最后输出的“与标杆差距”的数值要为负数或0
但是不能三项都为0,至少有一个用例的“与标杆差距”的数值要为负数

五、思考

在实际比赛中,球的摆放位置更随机,机器人的执行上也可能会不及预期,这种条件下如何提升算法的鲁棒性? 可以将规划的路径生成图像更便于理解