Skip to content

Latest commit

 

History

History
55 lines (42 loc) · 2.13 KB

README.md

File metadata and controls

55 lines (42 loc) · 2.13 KB

2024华为软件精英挑战赛

正式赛得分: 375067 赛区: 西北赛区 排名: 98

非常遗憾最后没能拿奖,但一周下来这个项目从无到有的过程也算是对自我能力的一次锻炼。

机器人

寻路

算法: A*算法 启发函数: f = h + g h = abs(x1 - x2) + abs(y1 - y2) g = 机器人走过步数

避障

机器人使用A*算法生成路径时,对于child.g = g将以下类型的点视为障碍

  1. 已生成路径的机器人中,path[index + g]的点。即已有路径的机器人后g帧所在位置
  2. 已生成路径的机器人中,path[index + g - 1]的点,避免对撞的情况
  3. 对于没有路径的机器人,将机器人位置视作障碍

机器人选择货物

选择价值 / 距离最大的货物 即 cargo->val / dist 最大的货物 由于准确距离只能通过寻路得到,这里的距离使用估算距离 即dist = abs(x1 - x2) + abs(y1 - y2)

机器人选择泊位

直接选择最近的泊位,同样只能使用估算距离

船选择泊位

每个泊位维护一个selected_ship_num, 记录已经选择这个泊位的船只数量 通过这个变量,船只在选择泊位时可以估算其到达这个泊位时,能够获得的货物价值

其他船只拿走的货物数量k = 已经选择这个泊位的船只数量 * 船只容量 估计价值 = 当前泊位货物总价 - 泊位前k个货物价值

船只选择估计价值最大的泊位即可

使用方式

判题器

本仓库使用官方提供的mac版本判断题器,判题器可在华为官网获得

具体获取方式参考华为软件精英挑战赛2024官方论坛

使用方式

使用./PreliminaryJudge -h可以查看判题器使用说明 具体的,判题器会输出每一帧的情况并输出一个.rep文件,使用zip压缩包中的应用程序可以查看.rep文件中的内容

附录

  • pdf/: 华为软件挑战赛的相关说明文件
  • zip_file.sh: 自动将.cpp .h文件压缩为提交格式
  • auto_run.sh: 使用编译后的程序,评测所有maps中的地图
  • run_simple_demo.sh: 官方提供的判题器使用说明脚