OR Tools

OR Tools

🚀 MCP-ORTools

MCP-ORTools是一个使用Google OR-Tools约束编程求解器实现的模型上下文协议(MCP)服务器。它通过标准化约束模型规范,专为大型语言模型设计,能有效助力大型语言模型处理约束满足和优化问题。

🚀 快速开始

MCP-ORTools将Google的OR-Tools约束编程求解器与大型语言模型相结合,通过Model Context Protocol进行集成,使AI模型能够:

  • 提交和验证约束模型
  • 设置模型参数
  • 解决约束满足和优化问题
  • 获取并分析解决方案

📦 安装指南

安装包

pip install git+https://github.com/Jacck/mcp-ortools.git

配置Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json(Windows)或 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)创建配置文件:

{
"mcpServers": {
"ortools": {
"command": "python",
"args": ["-m", "mcp_ortools.server"]
}
}
}

📚 详细文档

模型规范

模型通过JSON格式指定,包含三个主要部分:

  • variables:定义变量及其域
  • constraints:使用OR-Tools方法的约束列表
  • objective:可选优化目标

约束语法

约束必须使用OR-Tools方法语法:

  • .__le__() 表示小于等于(<=)
  • .__ge__() 表示大于等于(>=)
  • .__eq__() 表示等于(==)
  • .__ne__() 表示不等于(!=)

模型响应格式

求解器将返回以下JSON结构:

{
"status": "success",           // 状态:"success" 或 "error"
"result": {
"x": 5,                   // 变量 x 的值
"y": 10                   // 变量 y 的值
},
"message": ""                 // 错误消息(如果有的话)
}

状态代码

  • success:操作成功
  • error:发生错误

💻 使用示例

基础用法

简单优化模型

{
"variables": [
{"name": "x", "domain": [0, 10]},
{"name": "y", "domain": [0, 10]}
],
"constraints": [
"(x + y).__le__(15)",
"x.__ge__(2 * y)"
],
"objective": {
"expression": "40 * x + 100 * y",
"maximize": true
}
}

背包问题

示例:选择具有值 [3,1,2,1] 和权重 [2,2,1,1] 的物品,总重量限制为 2。

{
"variables": [
{"name": "p0", "domain": [0, 1]},
{"name": "p1", "domain": [0, 1]},
{"name": "p2", "domain": [0, 1]},
{"name": "p3", "domain": [0, 1]}
],
"constraints": [
"(2*p0 + 2*p1 + p2 + p3).__le__(2)"
],
"objective": {
"expression": "3*p0 + p1 + 2*p2 + p3",
"maximize": true
}
}

高级用法

额外约束示例

{
"constraints": [
"p0.__eq__(1)",         // 物品 p0 必须被选中
"p1.__ne__(p2)",        // 不能同时选择 p1 和 p2
"(p2 + p3).__ge__(1)"   // 必须选择 p2 或 p3 中的至少一个
]
}

✨ 主要特性

  • 完全支持OR-Tools CP-SAT求解器
  • 基于JSON的模型规范
  • 支持:
    • 整数和布尔变量(域:[min, max])
    • 使用OR-Tools方法语法的线性约束
    • 线性优化目标
    • 超时和求解器参数
    • 二进制约束和关系
    • 投资组合选择问题
    • 背包问题

约束中支持的操作

  • 基本算术:+、-、*
  • 比较:.le()、.ge()、.eq()、.ne()
  • 变量的线性组合
  • 通过约束组合实现二进制逻辑

🔧 技术细节

为开发设置:

git clone https://github.com/Jacck/mcp-ortools.git
cd mcp-ortools
pip install -e .

📄 许可证

Apache License 2.0 - 请查看LICENSE文件以获取详细信息

  • 0 关注
  • 0 收藏,21 浏览
  • system 提出于 2025-09-21 10:45

相似服务问题

相关AI产品