前言¶
做线性规划、混合整数规划或排程类问题时,难点往往不在「会不会写 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 对数据与代码有硬性约束,适合需要可审计模型的场景:
- 业务数值必须来自用户提供的文件或对话中明确给出的数据,禁止 Agent 编造或默认填充。
- 每个参数需可追溯至文件字段或用户原话;缺失时必须列出待补数据清单。
- 模型代码中不得硬编码成本、需求、产能等业务数据;仅允许大 M、步长等数学常数。
- 若用户要求先用示例数据跑通,须在代码中用注释标明为示例,并提醒替换。
配套工具(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_locationrailway_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。