MTAS AutoSolver 是一个面向外卖配送任务分配赛题的自主优化系统。系统会基于给定测试集自动生成求解策略、运行评测、比较平均分、保留更优版本,并在多轮迭代中持续改进最终 solver。
本项目的目标不是只提交一份固定启发式代码,而是提交一个能够在新数据集上继续探索和优化的 AutoSolver Agent 系统。
请比赛方优先阅读中文技术报告:
docs/TECHNICAL_REPORT.md
报告详细介绍了系统架构、LLM + 本地 AutoML 迭代机制、三层记忆、源码级 patch loop、最终 solver 导出与瘦身流程,以及本系统相对固定 solver 的特点和优势。
- 自主策略探索:自动组合 primary selector、combo selector、repair/refill、backup 链搜索、局部搜索和生成式模块。
- 自动评估筛选:每个候选策略都会经过合法性、覆盖率、V10 分数和运行时间检查。
- 统一平均分优化:系统以完整 case 集合的平均分作为保留标准,不按单个 case 各取最优。
- 迭代改进循环:根据历史 winner/loser、停滞情况和 case 诊断结果生成下一轮候选。
- LLM + 本地 AutoML:大模型负责给出简短方向和小型函数级 proposal,本地搜索器负责生成、去重、评测和保留。
- 三层记忆:
- L1:单轮 scratchpad,记录本轮最差 case、winner/loser、失败原因和下一轮禁忌项。
- L2:单次 job 的多轮压缩知识,记录 operator 胜负、参数区间、timeout/invalid 原因。
- L3:跨 job 的全局技能记忆,保存高置信、可迁移的 case-family 规则。
- 最终 solver 导出:系统会生成可提交的
solve(input_text)形式 solver,并进行本地编译和 benchmark。 - Web UI:提供可视化配置、运行、日志、AI 思路、诊断、历史最好成绩和导出入口。
autosolver/ AutoSolver 核心系统和 Web UI
autosolver/knowledge/ 内置经验规则和长期记忆
data/ 空数据目录,比赛方将测试数据集放到这里
skills/mtas-autosolver-optimizer/ 优化经验 skill 文件
evaluate_v10.py V10 本地评估器
solver.py 当前独立 solver 候选文件
README.md 项目说明
本仓库只保留空的 data/ 目录,不包含任何本地测试数据集。比赛方或使用者需要把测试 case 放入 data/ 下的自定义目录,例如:
data/test_dataset/
然后在 UI 或命令行中填写该目录路径,例如 data/test_dataset。目录内应放置赛题格式的 .txt case 文件。
- AutoSolver Web UI 和本地自动优化系统建议使用 Python 3.10 或更高版本运行。
- 不依赖必须安装的第三方 Python 包。
- 大模型 API Key 可选;没有 API Key 时,本地 AutoML 搜索器仍可运行。
说明:在线评测用的独立 solver.py 与 AutoSolver 系统代码分离。系统导出最终 solver 时,会按比赛平台的老版本 Python 约束做提交格式检查,避免 dataclass、@property、Protocol、PEP604 类型、pathlib 等不适合 Python 3.6 提交环境的写法,并尽量满足大小限制。
进入项目目录:
cd MTAS启动 Web UI:
python3 -m autosolver.web_ui --host 127.0.0.1 --port 8000如果运行环境没有自动识别项目根目录,可以使用:
PYTHONPATH=. python3 -m autosolver.web_ui --host 127.0.0.1 --port 8000浏览器打开:
http://127.0.0.1:8000
-
将比赛方提供的
.txt测试文件放入data/下,例如:data/test_dataset/ -
在 UI 的“测试目录”中填写:
data/test_dataset -
选择 baseline solver 文件。通常可以使用:
solver.py -
设置迭代轮数和单 case 时间限制。
-
可选:填写大模型 API 设置。
-
点击开始运行。系统会自动执行:
- 完整 case 集 benchmark;
- 诊断弱项 case;
- 生成或变异候选策略/模块;
- 自动评测候选;
- 只在平均分变好时保留;
- 输出当前最佳 solver 文件。
UI 中会显示每轮迭代的 AI 思路、诊断结果、case 表格、历史最好成绩和最终导出文件。
DeepSeek OpenAI-compatible 模式示例:
Protocol: OpenAI-compatible
Base URL: https://api.deepseek.com
Model: deepseek-v4-pro
API Key: <你的 API Key>
Anthropic-compatible 模式示例:
Protocol: Anthropic-compatible
Base URL: https://api.deepseek.com/anthropic
Model: deepseek-v4-pro
API Key: <你的 API Key>
本系统为本地模型,不会泄露 API key。
系统会把简短项目上下文、近期记忆、case 诊断和迭代目标发送给大模型。大模型主要用于:
- 给出每轮优化方向;
- 生成策略配置建议;
- 生成小型函数级模块 proposal;
- 在停滞时提出新的 operator 方向。
候选代码是否采用由本地系统决定。本地系统会负责语法检查、合法性检查、benchmark、去重和保留更优版本。
使用 baseline solver 运行:
python3 -m autosolver.benchmark \
--case-dir "<测试数据集目录>" \
--baseline solver.py \
--rounds 1 \
--seconds 9.5从零模式运行:
python3 -m autosolver.benchmark \
--case-dir "<测试数据集目录>" \
--no-baseline \
--rounds 3 \
--seconds 9.5导出的 solver 文件应满足:
def solve(input_text):
...本地编译检查:
python3 -m py_compile solver.py本项目使用 evaluate_v10.py 做本地合法性和分数检查。
如果比赛方提供新的测试集,只需要把测试文件放入本地目录,并在 UI 中填写该目录路径即可。
当前版本已做过以下 smoke check:
python3 -m py_compile evaluate_v10.py autosolver/*.py solver.py
python3 -m autosolver.benchmark --help
python3 -m autosolver.web_ui --host 127.0.0.1 --port 8000Web UI 首页本地请求返回 HTTP 200 OK。