面向 2025 华为软件精英挑战赛(Code Craft) 初赛对象存储赛题的 C++17 调度方案。项目围绕三副本布局、连续写入、请求价值评估与磁头动作规划,在有限令牌预算下尽可能提高读取请求收益。
项目状态:竞赛归档 / 算法复盘。 主实现可以独立编译;完整运行和复现分数需要赛事官方交互器与数据包。本仓库不附带授权状态不明确的官方题面、样例数据或工具。
- 标签感知的副本布局:按对象标签为三个副本选择不同硬盘,并优先寻找连续空闲区间,降低碎片与后续寻道成本。
- 请求价值调度:综合等待时间、对象大小、已读进度与完成收益,为活跃对象和数据块计算优先级。
- Pass / Jump 联合决策:比较顺序移动、跳转和读取的令牌消耗,选择单位令牌收益更高的磁头动作。
- 多请求共享读取进度:同一对象的数据块被读取后,同步更新所有相关请求,尽早完成可结算请求。
- 有界计算与内存清理:限制每个时间片评估的请求、对象和未来位置数量,并定期清理过期状态。
更完整的策略拆解见 docs/strategy.md。
| 项目 | 记录 |
|---|---|
| 赛事 | 2025 华为软件精英挑战赛 |
| 奖项 | 杭厦赛区三等奖 |
| 保留的判题快照 | 803093.0325 分(5.7995%) |
| 运行耗时 | 384.8480s |
| 快照日期 | 2025-03-30 |
判题数据来自仓库保留的机器可读结果 results/benchmark-2025-03-30.json。它是一次历史运行记录,不代表不同数据集、交互器版本或运行环境下都能得到相同结果。证书原件由团队留存;README 使用不含成员姓名和学校信息的隐私保护信息卡。
- 支持 C++17 的编译器(GCC、Clang 或 MSVC)
- CMake 3.8+
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel生成的可执行文件为:
build/code_craft
这是交互式程序,不能仅靠普通输入文件完整模拟判题。请从赛事授权渠道取得对应版本的交互器、数据和运行脚本,再把选手程序路径指向:
./build/code_craft
交互协议的核心循环为:时间片同步 → 删除事件 → 写入事件 → 读取事件。程序通过标准输入接收事件,并通过标准输出立即返回硬盘动作和完成的请求编号;不要把调试日志写到标准输出。
CloudBotOptima/
├── CMakeLists.txt # C++17 构建入口
├── src/
│ └── main.cpp # 唯一主实现
├── docs/
│ ├── strategy.md # 算法与数据流说明
│ └── readme-assets/ # README 本地图示
├── results/
│ ├── README.md # 结果口径与复现限制
│ └── benchmark-2025-03-30.json # 历史判题快照
└── README.md
- 参数和容量上限针对 2025 初赛约束编写,并非通用对象存储系统。
- 当前标签热度数据只做了轻量初始化,尚未完整进入动态布局模型。
- 策略包含竞赛阶段调参得到的启发式阈值,缺少跨数据集的系统消融实验。
- 仓库不包含官方交互器和完整测试数据,因此只能在本地验证编译与静态质量,不能离线复现赛事分数。
- 主程序使用较大的静态数组与全局状态,便于竞赛性能优化,但不适合作为生产级服务直接部署。
欢迎通过 Issue 讨论调度策略、复杂度优化、内存模型或可复现测试工具。完整约定见 CONTRIBUTING.md。提交代码前请确保:
cmake --build build --parallel可以完成;- 不提交官方数据包、交互器、个人证书原图或其它无再分发授权的材料;
- 不改变标准输出中的交互协议格式;
- 清楚记录策略变化对应的测试数据版本和结果口径。
待项目权利人确认。 在添加明确的开源许可证前,本仓库即使公开可见,也不代表已授予复制、修改或再分发权。计划公开发布前,请先选择并添加 LICENSE(例如 MIT、Apache-2.0 或 GPL-3.0)。
CloudBotOptima is a C++17 scheduling solution for the object-storage problem in Huawei Code Craft 2025. It combines tag-aware replica placement, contiguous allocation, value-based request prioritization, and token-aware Pass/Jump planning. The team received a third prize in the Hangzhou–Xiamen regional contest. Official problem materials and datasets are intentionally excluded; the original contest interactor is required for end-to-end reproduction.