基准策略含有多处bug,通关率较低。 方向传感器恒返"北",我改为比较相邻两步 position 的位移差反推真实朝向,再用 memory 在线测绘地图(已知墙/可走格/金币位置),在地图上做乐观 BFS 导航;步数预算内主动探索"前沿格子"找金币,见币就捡,最后直奔终点。
1. 我的优化方向(可多选)
- 步数优化(让机器人走得更快)
- 金币收集(让机器人捡更多金币)
- 成功率(让机器人在各种地图上都能到终点)
- 记忆利用(让机器人记住走过的路)
- 其他:朝向自推断(我的实验条件 #7 是方向传感器故障,必须先解决"不知道自己面朝哪"的问题,其他优化才有意义)
简要说明你的优化思路(100 字以内):
方向传感器恒返"北",我改为比较相邻两步 position 的位移差反推真实朝向,再用 memory 在线测绘地图(已知墙/可走格/金币位置),在地图上做乐观 BFS 导航;步数预算内主动探索"前沿格子"找金币,见币就捡,最后直奔终点。
2. 我具体改了什么?
- 改动 1(朝向自推断):每步比较当前 position 与上一步 position 的位移差(dy=-1→北、dx=+1→东、dy=+1→南、dx=-1→西)直接反推真实朝向;位置没变时按自己上一步发出的"左转/右转/后转"更新朝向信念。整个策略完全不读 perception[“direction”],因此对约束 #7 免疫。
- 改动 2(在线测绘 + 记忆):朝向已知后,把 front/right/back/left 四个相对传感器读数换算成绝对方向,逐步把地图(哪些格是墙、哪里有金币)画进 perception[“memory”],信息跨步持久。
- 改动 3(乐观 BFS 导航):在已测绘地图上做广度优先搜索,未探明的格子先乐观当作可通行,撞到新墙就即时重规划;去捡金币/探索时把终点格当"雷区"绕开,避免顺路踩上终点提前结束。
- 改动 4(主动探索 + 拾金):步数预算内(上限 78 步,并用"已用步数 + 2×到终点距离 < 100"做动态保险)前往最近的"前沿格子"(与未知区域相邻的已知格)照亮地图,侦察到金币就绕路去捡;预算耗尽后直奔终点。
3. 优化前后对比
运行python run.py --evaluate获取数据,填入下表:
| 指标 | Baseline(优化前) | 我的版本(优化后) | 提升倍数 |
|---|---|---|---|
| 平均步数 | ~345(实测) | 90 | 3.8 倍 |
| 金币收集率 | ~61%(实测) | 88% | 1.4 倍 |
| 通关成功率 | ~67%(实测 10/15) | 100%(15/15) | +33 个百分点 |
自动评测分数:Baseline 34/50 → 我的版本50/50(满分)(步数效率 20/20、金币收集 15/15、通关成功 15/15)。
另外:本策略从不读取 direction,所以带约束 #7(方向传感器故障)评测的结果与上表完全一致,同样是 50/50(平均 90 步、金币率 87.6%、通关 15/15)。
(请粘贴一张评测报告的终端截图)
4. 遇到的问题和解决方法
问题 1:方向传感器恒返"北",无法得知真实朝向,连"前方是哪边"都换算不成绝对方向。
怎么解决的:注意到只有"前进"会改变位置,于是比较相邻两步 position 的位移差来反推真实朝向——移动成功那一刻朝向就被唯一确定;位置不变时(原地转向或被墙挡住),按自己上一步发出的转向动作维护"朝向信念"。开局朝向未知时先"试水"走一步(前方是墙就先右转再试),一旦位置发生变化朝向立即揭晓。
问题 2:去捡金币/探索的路上,机器人经常"莫名其妙"提前结束游戏,金币率上不去。
怎么解决的:逐步调试(在 memory 里记录每步选的目标格)后发现两个隐蔽 bug:① BFS 去往金币/前沿的路径可能恰好穿过终点格,踩上去游戏立即结束;② 终点格自己若有未知邻居,会被误判成"前沿格子",去"探索"它等于主动踩终点。修复:目标不是终点时把终点格当"雷区"从 BFS 里屏蔽;前沿候选排除终点格。修复后金币率从 33% 提升到 88%。
5. 如果还有时间,我会怎么继续改进?
① 探索顺序改成"信息增益贪心"(优先去能一次照亮最多未知格的前沿),用更少步数覆盖更大区域,把地图 4/5 的金币率从 67%/71% 再往上推;② 把"去哪些金币、按什么顺序"建模成小型 TSP,用最近邻 + 2-opt 求更优拾金顺序;③ 目前每步全量重算 BFS,可以改成本地化重规划,把策略推广到更大网格;④ 给转向做平滑(连续同向转弯提前合并),进一步压低步数。
6. 通过这个实验,我对「具身智能」的理解(50 字以内)
智能体不依赖完备感知也能行动:用行动的后果(位置变化)反推自身状态,边走边把世界画进记忆,感知缺陷可以用"行动 + 记忆 + 推理"补齐。