🔗 赛事主页:2023华为软件精英挑战赛——普朗克计划
🔗 源码 GitHub
📹 视频是来自 Github 的外链,一般情况下需要魔法才能浏览

赛题简介

控制 4 个机器人买卖产品,在 3 分钟内实现利润最大化。机器人买卖产品的平台有生产台加工台消费台,顾名思义,生产台只生产低利润的产品,加工台能购买和生产中等利润的产品,消费台只购买高利润的特定产品。

在这个题目中,需要解决:机器人避障策略时间段内的利润最大化策略。每次决策在 15 ms(50 帧)内完成,否则需要主动降低帧率。

成绩

比赛时大家都有各种事情,最终只有两天时间思考和敲代码,最后无奈观光 😢

想法

  • 时间段内的利润最大化策略:采用贪心策略,考虑机器人的距离,工作台之间的距离,机器人的实际速度(仅实现了理想速度),时间限制(没实现),最后根据地图进行修正(只实现了一些不太理想的策略:拥挤规避,相同买卖行为规避,局部最优规避的尝试)。但实际中这种策略容易陷入局部最优解,成绩很难提升。

  • 机器人避障策略:

    • 规避边界碰撞:规避边界碰撞的算法比较简单,根据物理公式计算得到碰撞盒,判断方向会发生碰撞后让机器人停下即可。
    • 规避机器人碰撞:没想法,随想随写。

观光团成绩

  • 地图 1(贪心策略容易陷入局部最优解,源码中采取了一些修正方法,但这种方法需要对特定地图适配,不是一种很好的解决办法)
  • 地图 2(还算可以的边缘碰撞规避算法,在源码中需要各个成员方法协作才能成功,不单单只有_correct_border_collision()中体现的方法)
  • 地图 3(机器人碰撞规避算法写的很差,写出来时初赛已经结束一天嘞 T_T)
  • 地图4(修正的贪心策略导致地图 4 的成绩也出现了下滑)