Skip to content

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudBotOptima:面向对象存储调度的竞赛算法方案

CloudBotOptima

面向 2025 华为软件精英挑战赛(Code Craft) 初赛对象存储赛题的 C++17 调度方案。项目围绕三副本布局、连续写入、请求价值评估与磁头动作规划,在有限令牌预算下尽可能提高读取请求收益。

项目状态:竞赛归档 / 算法复盘。 主实现可以独立编译;完整运行和复现分数需要赛事官方交互器与数据包。本仓库不附带授权状态不明确的官方题面、样例数据或工具。

2025 华为软件精英挑战赛杭厦赛区三等奖

项目亮点

  • 标签感知的副本布局:按对象标签为三个副本选择不同硬盘,并优先寻找连续空闲区间,降低碎片与后续寻道成本。
  • 请求价值调度:综合等待时间、对象大小、已读进度与完成收益,为活跃对象和数据块计算优先级。
  • Pass / Jump 联合决策:比较顺序移动、跳转和读取的令牌消耗,选择单位令牌收益更高的磁头动作。
  • 多请求共享读取进度:同一对象的数据块被读取后,同步更新所有相关请求,尽早完成可结算请求。
  • 有界计算与内存清理:限制每个时间片评估的请求、对象和未来位置数量,并定期清理过期状态。

方案流程

CloudBotOptima 从交互事件到磁头动作输出的处理流程

更完整的策略拆解见 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。提交代码前请确保:

  1. cmake --build build --parallel 可以完成;
  2. 不提交官方数据包、交互器、个人证书原图或其它无再分发授权的材料;
  3. 不改变标准输出中的交互协议格式;
  4. 清楚记录策略变化对应的测试数据版本和结果口径。

许可证

待项目权利人确认。 在添加明确的开源许可证前,本仓库即使公开可见,也不代表已授予复制、修改或再分发权。计划公开发布前,请先选择并添加 LICENSE(例如 MIT、Apache-2.0 或 GPL-3.0)。

English summary

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.

About

CloudBotOptima是华为2025软件精英挑战赛C++对象存储方案。按标签热度规划三副本布局,优化磁头移动、顺序读取及请求优先级,支持读写与删除,减少磁盘碎片和令牌开销,提升系统吞吐及竞赛得分。

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages