返回市场
mcp-优化工具

mcp-优化工具

作者:Jacck16 星标更新:2024-12-27

项目介绍

MCP-ORTools

一个使用Google OR-Tools进行约束求解的Model Context Protocol (MCP)服务器实现。设计用于通过标准化的约束模型规范与大型语言模型一起使用。

概述

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

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

安装

  1. 安装包:
pip install git+https://github.com/Jacck/mcp-ortools.git
  1. 配置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__() 表示不等于(!=)

使用示例

简单优化模型

{
    "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的模型规范
  • 支持:
    • 整数和布尔变量(域:[最小值,最大值])
    • 使用OR-Tools方法语法的线性约束
    • 线性优化目标
    • 求解超时和求解器参数
    • 二元约束和关系
    • 投资组合选择问题
    • 背包问题

约束中支持的操作

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

开发

为了设置开发环境:

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

模型响应格式

求解器返回解决方案的JSON格式:

{
    "status": "OPTIMAL",
    "solve_time": 0.045,
    "variables": {
        "p0": 0,
        "p1": 0,
        "p2": 1,
        "p3": 1
    },
    "objective_value": 3.0
}

状态值:

  • OPTIMAL:找到最优解
  • FEASIBLE:找到可行解
  • INFEASIBLE:不存在解
  • UNKNOWN:无法确定解

许可证

MIT许可证 - 查看LICENSE文件获取详情