返回市场
MCP-约束优化

MCP-约束优化

作者:Sharmarajnish2 星标更新:2025-09-13

项目介绍

<p align="center"> <img src=".github/logo.png" width="500px" alt="约束优化MCP服务器"> </p>

约束优化MCP服务器

一个通用的模型上下文协议(MCP)服务器,用于解决具有逻辑和数值约束的组合优化问题。该服务器提供了一个统一的接口,连接多个优化求解器,使AI助手能够跨各种领域解决复杂的优化问题。

🚀 特性

  • 统一接口:单一的MCP服务器支持多种优化后端
  • AI就绪:通过MCP协议设计用于与AI助手配合使用
  • 投资组合焦点:专门针对投资组合优化和风险管理的工具
  • 可扩展性:模块化设计便于添加新的求解器
  • 高性能:针对大规模问题进行了优化
  • 健壮性:全面的错误处理和验证

🛠️ 支持的求解器

  • Z3 - 约束满足问题的SMT求解器
  • CVXPY - 凸优化求解器
  • HiGHS - 线性和混合整数规划求解器
  • OR-Tools - 约束编程求解器

📦 安装

# 安装包
pip install constrained-opt-mcp

# 或从源代码安装
git clone https://github.com/your-org/constrained-opt-mcp
cd constrained-opt-mcp
pip install -e .

📐 数学基础

优化理论

约束优化MCP服务器实现了各种类型的优化问题解决方案:

线性规划(LP)

$$\min_{x} c^T x \quad \text{受限于} \quad Ax \leq b, \quad x \geq 0$$

二次规划(QP)

$$\min_{x} \frac{1}{2}x^T Q x + c^T x \quad \text{受限于} \quad Ax \leq b, \quad x \geq 0$$

凸优化

$$\min_{x} f(x) \quad \text{受限于} \quad g_i(x) \leq 0, \quad h_j(x) = 0$$

其中$f$和$g_i$是凸函数。

约束满足问题(CSP)

找到$x \in \mathcal{D}$使得$C_1(x) \land C_2(x) \land \ldots \land C_k(x)$

投资组合优化(马科维茨)

$$\max_{w} \mu^T w - \frac{\lambda}{2} w^T \Sigma w \quad \text{受限于} \quad \sum_{i=1}^{n} w_i = 1, \quad w_i \geq 0$$

其中:

  • $w$:投资组合权重
  • $\mu$:预期收益
  • $\Sigma$:协方差矩阵
  • $\lambda$:风险厌恶参数

求解器能力

问题类型求解器复杂度数学形式
约束满足Z3NP-完全逻辑约束
凸优化CVXPY多项式凸函数
线性规划HiGHS多项式线性约束
约束编程OR-ToolsNP-完全离散域

🚀 快速开始

1. 运行示例

# 运行单个示例
python examples/nqueens.py
python examples/knapsack.py
python examples/portfolio_optimization.py
python examples/job_shop_scheduling.py
python examples/nurse_scheduling.py
python examples/economic_production_planning.py

# 运行交互式笔记本
jupyter notebook examples/constrained_optimization_demo.ipynb

2. 启动MCP服务器

constrained-opt-mcp

3. 从AI助手连接

在您的MCP配置中添加服务器:

{
  "mcpServers": {
    "constrained-opt-mcp": {
      "command": "constrained-opt-mcp",
      "args": []
    }
  }
}

4. 使用工具

服务器提供了以下工具:

  • solve_constraint_satisfaction - 解决逻辑约束问题
  • solve_convex_optimization - 解决凸优化问题
  • solve_linear_programming - 解决线性规划问题
  • solve_constraint_programming - 解决约束编程问题
  • solve_portfolio_optimization - 解决投资组合优化问题

📚 示例

约束满足问题

# 解决简单的算术约束问题
变量 = [
    {"名称": "x", "类型": "整数"},
    {"名称": "y", "类型": "整数"},
]
约束 = [
    "x + y == 10",
    "x - y == 2",
]

# 结果:x=6, y=4

投资组合优化

# 优化投资组合分配
资产 = ["股票", "债券", "房地产", "商品"]
预期收益 = [0.10, 0.03, 0.07, 0.06]
风险因素 = [0.15, 0.03, 0.12, 0.20]
相关矩阵 = [
    [1.0, 0.2, 0.6, 0.3],
    [0.2, 1.0, 0.1, 0.05],
    [0.6, 0.1, 1.0, 0.25],
    [0.3, 0.05, 0.25, 1.0],
]

# 结果:最优的投资组合权重和绩效指标

线性规划

# 生产计划问题
目标 = "最大化"
目标系数 = [3.0, 2.0]  # 单位利润
变量 = [
    {"名称": "产品_a", "下限": 0, "上限": None, "类型": "连续"},
    {"名称": "产品_b", "下限": 0, "上限": None, "类型": "连续"},
]
约束矩阵 = [
    [2, 1],  # 劳动力:2*A + 1*B <= 100
    [1, 2],  # 材料:1*A + 2*B <= 80
]
约束符号 = ["<=", "<="]
右侧值 = [100.0, 80.0]

# 结果:最优生产数量

投资组合示例

  • 投资组合优化 - 高级投资组合优化策略,包括马科维茨、布莱克-利特曼和ESG约束优化
  • 风险管理 - 风险管理策略,包括VaR优化、压力测试和对冲

增强的投资组合优化功能

权益投资组合优化:

  • 行业分散化约束(每个行业不超过25%)
  • 市值约束(大型、中型、小型市值分配)
  • ESG(环境、社会、治理)约束
  • 流动性要求和个人仓位限制
  • 先进指标的风险回报优化

多资产投资组合优化:

  • 资产类别约束(股票、固定收益、另类投资、现金)
  • 区域暴露限制(发达市场与新兴市场)
  • 另类投资约束(商品、房地产、私人股本)
  • 动态再平衡和风险预算
  • 考虑交易成本的多期优化

高级风险指标:

  • 风险价值(VaR)和条件风险价值(CVaR)
  • 最大回撤和尾部风险
  • 因子暴露分析和风险归因
  • 压力测试和情景分析
  • 相关性和集中风险的管理

综合示例

🎯 组合优化

🏭 调度与运营

📊 定量经济学与金融

🧮 互动学习

🧪 测试

运行全面的测试套件:

# 运行所有测试
pytest

# 运行特定测试类别
pytest tests/test_z3_solver.py
pytest tests/test_cvxpy_solver.py
pytest tests/test_highs_solver.py
pytest tests/test_ortools_solver.py
pytest tests/test_mcp_server.py

# 运行并生成覆盖率报告
pytest --cov=constrained_opt_mcp

📖 文档

🏗️ 架构

核心组件

  1. 核心模型 (constrained_opt_mcp/core/) - 基础类和问题类型
  2. 求解器模型 (constrained_opt_mcp/models/) - 问题特定模型定义
  3. 求解器 (constrained_opt_mcp/solvers/) - 求解器实现
  4. MCP服务器 (constrained_opt_mcp/server/) - MCP服务器实现
  5. 示例 (constrained_opt_mcp/examples/) - 使用示例和演示

支持的问题类型

问题类型求解器应用场景
约束满足Z3逻辑谜题、验证、规划
凸优化CVXPY投资组合优化、机器学习
线性规划HiGHS生产计划、资源分配
约束编程OR-Tools排程、分配、路由
投资组合优化多种风险管理、投资组合构建

🤝 贡献

  1. 分叉仓库
  2. 创建特性分支
  3. 修改代码
  4. 为新功能编写测试
  5. 运行测试套件
  6. 提交拉取请求

📄 许可证

本项目采用Apache许可证2.0。详情见LICENSE文件。

🆘 支持

对于问题、问题或贡献,请:

  1. 查看文档
  2. 搜索现有问题
  3. 创建新问题
  4. 加入我们的讨论

📈 更新日志

版本1.0.0

  • 初始发布
  • 支持Z3、CVXPY、HiGHS和OR-Tools
  • 投资组合优化示例
  • 全面的测试套件
  • MCP服务器实现