运筹优化建模 Skill:用 Agent 走通 Gurobi 建模闭环

前言

做线性规划、混合整数规划或排程类问题时,难点往往不在「会不会写 gurobipy」,而在从业务描述到变量、约束、目标的一致性,以及求解后如何核对结果。手写脚本容易在数据口径和模型结构之间来回改;只让大模型一次性生成代码,又容易混入未给出的系数或跳过可行性检查。

下面介绍 SkillHub 上的社区 Skill「运筹优化建模 Skill」(坐标 @user_ff97f32a/gurobi-optimization-skill,版本 1.0.0)。它用通用 SKILL.md 约定 Agent 的执行顺序,并附带 Python 工具与示例数据,把「问题理解 → 建模 → 代码 → 求解与校验」串成可重复流程。SkillHub 页面标注 requires_api_key=false,安装本 Skill 本身不需要额外 API Key;实际求解仍依赖本机 Python 环境与 Gurobi 等求解器许可。

这是什么

运筹优化建模 Skill 是面向开发者的 Agent Skill,由社区发布者 user_ff97f32a 维护,分类为 dev-programming,来源为 community。官方入口:

  • API / 安装解析:https://api.skillhub.cn/user_ff97f32a/gurobi-optimization-skill
  • SkillHub 展示页:https://www.skillhub.cn/skills/user_ff97f32a/gurobi-optimization-skill

Skill 自述定位为:基于 Gurobi + Python 的优化建模全流程,覆盖问题分析、数学建模、代码生成、求解验证、结果分析与迭代优化。触发词包括「优化模型」「线性规划」「整数规划」「Gurobi」「求解器」「约束」「目标函数」等;当用户明显在已有模型上改约束或目标时,文档要求走迭代路径而非从头重做。

核心功能

以下内容来自已安装包内的 SKILL.md 与目录结构(skillhub install 拉取版本 1.0.0)。

分步 Prompt 与工作流

Skill 规定 Agent 按顺序读取 prompts/ 下的指令文件。当前包内包含:

文件 用途
prompts/problem_intake.md 问题理解:目标、变量、约束、数据来源
prompts/model_formulation.md 数学建模
prompts/code_generation.md 生成 Gurobi Python 代码
prompts/iteration_context.md 迭代场景下的上下文与意图

SKILL.md 中还描述了更完整的七步流程(含数据分析、求解验证、结果分析等步骤及 data_analysis.md 等文件名)。若你本地包中尚未包含对应 prompts 文件,以实际目录为准,Agent 仍应遵守文档中的强制规则(见下文)。

建模强制规则

Skill 对数据与代码有硬性约束,适合需要可审计模型的场景:

  1. 业务数值必须来自用户提供的文件或对话中明确给出的数据,禁止 Agent 编造或默认填充。
  2. 每个参数需可追溯至文件字段或用户原话;缺失时必须列出待补数据清单。
  3. 模型代码中不得硬编码成本、需求、产能等业务数据;仅允许大 M、步长等数学常数。
  4. 若用户要求先用示例数据跑通,须在代码中用注释标明为示例,并提醒替换。

配套工具(tools/)

工具 作用
env_check.py 检查 Python(要求 3.9+)、Gurobi 许可与依赖
refman_search.py 按关键词检索 Gurobi Python API 参考(类、参数、错误码等)
data_loader.py 统一加载 .csv / .xlsx / .json / .dat
data_validator.py 建模前校验必需字段
model_validator.py 求解后检查结果 JSON 的合理性
solver_factory.py 列举或切换求解器(文档支持 gurobi、ortools、pulp_cbc、scip 等)
log_analyzer.py 解析 Gurobi 求解日志
result_visualizer.py 结果可视化
update_references.py 维护内置 API 参考数据

依赖见包内 requirements.txt:核心为 gurobipy>=11.0、pandas>=1.5;可选含 openpyxl、matplotlib、seaborn、numpy。

问题类型与求解器

文档列出 LP、MILP、QP、MIQP、QCQP、SOCP、NLP(Gurobi 11+)、多目标等类型及对应建模方式;并说明在无 Gurobi 许可时可经 solver_factory.py 尝试 SCIP、OR-Tools、PuLP/CBC 等开源替代。

示例与模板

examples/ 下提供多类建模示例及数据(README 中标注部分源自 Gurobi/modeling-examples),例如:

  • production_distribution(LP,生产配送最小成本)
  • power_generation、portfolio_optimization、facility_location
  • railway_dispatching、supply_chain_food、technician_routing、traveling_salesman

templates/ 当前包内含 production_scheduling.py 生产排程模板;生成物默认建议写入 outputs/{问题名}/model.py 再执行求解。

安装与启用

SkillHub 官方安装说明见 https://skillhub.cn/install/skillhub.md。要点如下。

1、安装 SkillHub CLI(若尚未安装)

command -v skillhub && skillhub --version

未安装时可执行(完整安装含默认 Skill):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

2、安装本 Skill 到当前 Agent 的 skills 目录

必须使用 --dir 指向 Agent 实际识别的 skills 路径,否则默认落在 ./skills/ 可能无法被加载。

skillhub install @user_ff97f32a/gurobi-optimization-skill --dir <你的 skills 目录>

常见路径(来自 SkillHub 安装文档):

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下 .agents/skills/

也可将 SkillHub 页面上的提示发给 AI:「请根据 https://skillhub.cn/install/skillhub.md,安装 @user_ff97f32a/gurobi-optimization-skill。」

3、Python 依赖与 Gurobi

在 Skill 目录或你的项目环境中安装依赖:

pip install -r requirements.txt

Gurobi 需单独安装 gurobipy 并配置许可(学术免费许可等按 Gurobi 官方流程)。安装后可用 Skill 自带检查:

python3 "${SKILL_DIR}/tools/env_check.py"

将 ${SKILL_DIR} 替换为安装后的 Skill 根目录,例如 ~/.cursor/skills/@user_ff97f32a/gurobi-optimization-skill。

启用后,在 Cursor 等客户端中对话提及优化建模相关需求即可触发;具体是否自动加载 Skill 取决于客户端的 Skills 机制,安装路径正确是前提。

典型用法

下面给出与官方示例一致、可复现的数据读取方式,以及 Skill 文档推荐的工具调用顺序。

示例:生产配送 LP

examples/production_distribution 描述为工厂到配送中心的最小成本运输(LP),数据文件为 data/cost.csv。按 README 可先加载数据:

import pandas as pd
data = pd.read_csv("data/cost.csv")

在 Agent 会话中,更常见的做法是:说明优化目标与约束,提供 cost.csv 路径,让 Skill 按 problem_intake.md → model_formulation.md → code_generation.md 生成 outputs/{问题名}/model.py,再执行:

python3 outputs/{问题名}/model.py

建模前校验数据字段(字段名按你的文件替换):

python3 "${SKILL_DIR}/tools/data_validator.py" --data data/cost.csv --required "字段1,字段2"

求解后若输出 results.json,可运行:

python3 "${SKILL_DIR}/tools/model_validator.py" --results results.json

需要查 API 写法时:

python3 "${SKILL_DIR}/tools/refman_search.py" addVar

无 Gurobi 许可时,可先查看本机可用后端:

python3 "${SKILL_DIR}/tools/solver_factory.py" --list

迭代修改

当用户在已有模型或上一轮输出上改约束、目标或变量时,Skill 要求读取 iteration_context.md,将新版本保存为带时间戳的 {问题名}_{YYYYMMDDHHmmss}.py,不覆盖旧文件,并在项目目录维护 优化迭代记录.md。SKILL.md 还引用了 parameter_tuning.md、model_revision.md;若你安装的包中尚无这些文件,迭代时仍以 iteration_context.md 与当前模型代码为准。

适用场景与注意

适合谁

  • 需要用 Gurobi(或开源 MIP 求解器)做 LP/MILP/QP 等模型,并希望 Agent 遵守「数据可追溯、不编造系数」的团队规范。
  • 希望把环境检查、数据校验、求解器切换、结果校验封装成固定命令,减少每次从零写脚本。
  • 想基于 Gurobi 官方 modeling-examples 类问题快速对照示例数据结构。

限制与注意

  • 求解质量与速度取决于本机许可与问题规模;商业 Gurobi 许可需自行申请,Skill 不替代许可管理。
  • SKILL.md 中的完整七步 Prompt 映射与部分模板文件名,可能与当前 zip 包内文件不完全一致,以 skillhub install 后的目录为准。
  • SkillHub 抓取页统计(截至编写时):评分 100000,下载 1282,安装计数 0;页面数据会变动,以 SkillHub 为准。
  • 日志分析工具文档注明依赖 gurobi-logtools,未安装时相关功能可能不可用。

结尾

运筹优化建模 Skill 把 Gurobi 建模的工序、数据纪律和校验脚本收进一个 Agent Skill,适合在 Cursor、Claude Code 等支持 Skills 的环境里做可重复的优化交付。安装与详情见 SkillHub:https://www.skillhub.cn/skills/user_ff97f32a/gurobi-optimization-skill,坐标 @user_ff97f32a/gurobi-optimization-skill,版本 1.0.0。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜