欢迎来到 2026 捡网球挑战赛测试题目,本题目旨在让各位选手熟悉赛题的同时,进行初次的选拔。
本项目基于 CNB 云原生开发平台,提供了一套python实践环境。 学习者 Fork 本仓库后通过点击 云原生开发 按钮,即可快速进入对应课程的实践环境,进行实时操作和验证,之后提交pr可以上传成绩。
机器人的动作模式固定为:
当前位置 -> 选择一个球 -> 夹起 -> 选择一个桶 -> 放入 -> 选择下一个球 ...
将所有球放入桶中,使总代价最小
test_case文件,假设了球的位置、桶的位置、机器人出发位置,如图所示
绿色:球
红色:桶
黄色:机器人出发点

可以在项目根目录运行命令查看结果
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,至少有一个用例的“与标杆差距”的数值要为负数
在实际比赛中,球的摆放位置更随机,机器人的执行上也可能会不及预期,这种条件下如何提升算法的鲁棒性? 可以将规划的路径生成图像更便于理解