Skip to content

W111aaam/MTAS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MTAS AutoSolver 自主优化系统

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@propertyProtocol、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

Web UI 使用方法

  1. 将比赛方提供的 .txt 测试文件放入 data/ 下,例如:

    data/test_dataset/
    
  2. 在 UI 的“测试目录”中填写:

    data/test_dataset
    
  3. 选择 baseline solver 文件。通常可以使用:

    solver.py
    
  4. 设置迭代轮数和单 case 时间限制。

  5. 可选:填写大模型 API 设置。

  6. 点击开始运行。系统会自动执行:

    • 完整 case 集 benchmark;
    • 诊断弱项 case;
    • 生成或变异候选策略/模块;
    • 自动评测候选;
    • 只在平均分变好时保留;
    • 输出当前最佳 solver 文件。

UI 中会显示每轮迭代的 AI 思路、诊断结果、case 表格、历史最好成绩和最终导出文件。

大模型 API 配置

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、去重和保留更优版本。

命令行 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 要求

导出的 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 8000

Web UI 首页本地请求返回 HTTP 200 OK

About

本项目用于提交AI Hackathon 2026 命题赛道 4 AutoSolver:让 AI Agent 自主求解配送分配问题

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages