🎓 学习/竞赛项目 —— 算法竞赛「外卖配送任务分配」的求解器实现,重点在优化建模与自适应搜索策略。 完整设计文档见 AutoSolverAgent/设计文档.md。
在外卖配送系统中,高效地将配送任务分配给骑手对于运营成功至关重要。配送平台需要将多个配送订单分配给可用骑手,同时需综合考虑配送时间、距离、骑手意愿,以及合单配送(将多个订单合并给同一骑手)的可能性。同时系统允许拒绝订单,并且对骑手接起对应订单的概率有预测;系统允许一个订单同时指派给多位骑手,最先接起订单的骑手获得订单。系统需要在多个目标之间取得平衡:最大化接单订单数量、最大化系统收益(以分数表示),并通过智能合单来优化资源利用率。
- 输入:制表符分隔文本,每行一个候选分配:
task_id_list, courier_id, total_score, willingness(1 个骑手承接 1~2 个任务) - 规模:33,780 条候选 / 40 个唯一任务 / 80 个骑手,10 秒/用例时限
- 本质:带超边的最小权集合覆盖(等价于整数线性规划)
- 优化目标(Lexicographic):
- 首要:覆盖任务数最大化
- 次要:总分最小化(score 越低越好)
- 策略族池:Greedy / ILP / LocalSearch / RandomRestart 多策略并存
- 自适应学习引擎:
StrategyRegistry记录各策略表现(排名、淘汰、变异生成新策略),按用例特征动态选择 - 评价函数:
EvalResult统一比较(先任务覆盖、后分数)
python AutoSolverAgent/solver_agent.py < input.txt > output.txt
# 样例数据: AutoSolverAgent/large_seed301.txt- ✅ 核心求解器与自适应策略引擎完成(含设计文档与样例解)
- 🚫 未做:Web 界面、多用例批量评测脚本
License: MIT