约束优化MCP服务器
一种通用的模型上下文协议(MCP)服务器,用于解决具有逻辑和数值约束的组合优化问题。该服务器为多个优化求解器提供了一个统一的接口,使人工智能助手能够解决各个领域的复杂优化问题。
🚀 特性
- 统一接口:用于多个优化后端的单个MCP服务器
- AI就绪:设计用于通过MCP协议与AI助手一起使用
- 投资组合重点:投资组合优化和风险管理的专用工具
- 可扩展:模块化设计,便于添加新的求解器
- 高性能:针对大规模问题进行了优化
- 健壮:全面的错误处理和验证
🛠️ 支持的求解器
📦 安装
# Install the package
pip install constrained-opt-mcp
# Or install from source
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)$
投资组合优化(Markowitz)
$$\\max\_{w}\\mu^T w-\\frac{\\lambda}{2}w^T\\Sigma w\\quad\\text{受\\quad\\sum\_{i=1}^{n}w_i=1,\\quadw_i\\geq 0约束$$
哪里:
- $w$:投资组合权重
- $\\mu$:预期回报
- $\\Sigma$:协方差矩阵
- $\\lambda$:风险规避参数
求解器能力
| 问题类型 | 求解器 | 复杂性 | 数学形式 |
|---|---|---|---|
| 约束满足 | Z3 | NP完全 | 逻辑约束 |
| 凸优化 | CVXPY | 多项式 | 凸函数 |
| 线性规划 | HiGHS | 多项式 | 线性约束 |
| 约束编程 | OR工具 | NP完全 | 离散域 |
🚀 快速开始
1.运行示例
# Run individual examples
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
# Run interactive notebook
jupyter notebook examples/constrained_optimization_demo.ipynb2.启动MCP服务器
constrained-opt-mcp3.从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-解决投资组合优化问题
📚 例子
约束满足问题
# Solve a simple arithmetic constraint problem
variables = [
{"name": "x", "type": "integer"},
{"name": "y", "type": "integer"},
]
constraints = [
"x + y == 10",
"x - y == 2",
]
# Result: x=6, y=4投资组合优化
# Optimize portfolio allocation
assets = ["Stocks", "Bonds", "Real Estate", "Commodities"]
expected_returns = [0.10, 0.03, 0.07, 0.06]
risk_factors = [0.15, 0.03, 0.12, 0.20]
correlation_matrix = [
[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],
]
# Result: Optimal portfolio weights and performance metrics线性规划
# Production planning problem
sense = "maximize"
objective_coeffs = [3.0, 2.0] # Profit per unit
variables = [
{"name": "product_a", "lb": 0, "ub": None, "type": "cont"},
{"name": "product_b", "lb": 0, "ub": None, "type": "cont"},
]
constraint_matrix = [
[2, 1], # Labor: 2*A + 1*B <= 100
[1, 2], # Material: 1*A + 2*B <= 80
]
constraint_senses = ["<=", "<="]
rhs_values = [100.0, 80.0]
# Result: Optimal production quantities投资组合示例
增强的投资组合优化功能
股权投资组合优化:
- 部门多样化限制(每个部门最多25%)
- 市值限制(大、中、小盘股配置)
- ESG(环境、社会、治理)约束
- 流动性要求和个人头寸限额
- 使用高级指标进行风险回报优化
多资产组合优化:
- 资产类别限制(股权、固定收益、替代品、现金)
- 区域风险敞口限额(发达市场与新兴市场)
- 替代投资限制(商品、房地产、私募股权)
- 动态再平衡和风险预算
- 考虑交易成本的多周期优化
高级风险度量:
- 风险价值(VaR)和条件风险价值(CVaR)
- 最大提款和尾部风险
- 因素暴露分析和风险归因
- 压力测试和情景分析
- 相关性和集中度风险管理
综合示例
🎯 组合优化
🏭 日程安排和运营
📊 数量经济与金融
🧮 互动式教学法
- 综合演示笔记本 -带有所有求解器类型和可视化的交互式Jupyter笔记本
🧪 测试
运行综合测试套件:
# Run all tests
pytest
# Run specific test categories
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
# Run with coverage
pytest --cov=constrained_opt_mcp📖 文档
- api参考 -完整的API文件
- 例子 -综合示例和演示
- Jupyter笔记本 -交互式演示笔记本
- PDF文档 -包含理论、示例和实施细节的全面PDF指南
- 期刊样式PDF -学术论文格式,包括文献综述、数学和研究贡献
🏗️ 建筑
核心组件
- 核心型号 (
constrained_opt_mcp/core/)-基类和问题类型 - 求解器模型 (
constrained_opt_mcp/models/)特定问题的模型定义 - 解算器 (
constrained_opt_mcp/solvers/)-求解器实现 - MCP服务器 (
constrained_opt_mcp/server/)-MCP服务器实施 - 例子 (
constrained_opt_mcp/examples/)-使用示例和演示
支持的问题类型
| 问题类型 | 求解器 | 用例 |
|---|---|---|
| 约束满足 | Z3 | 逻辑谜题、验证、规划 |
| 凸优化 | CVXPY | 投资组合优化、机器学习 |
| 线性规划 | HiGHS | 生产计划、资源分配 |
| 约束编程 | OR工具 | 调度、分配、路由 |
| 投资组合优化 | 多元 | 风险管理、投资组合构建 |
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 运行测试套件
- 提交拉取请求
📄 许可证
此项目根据Apache许可证2.0获得许可。请参阅 许可证 文件以获取详细信息。
🆘 支持
如有疑问、问题或意见,请:
📈 更新日志
版本1.0.0
- 初始版本
- 支持Z3、CVXPY、HiGHS和OR工具
- 投资组合优化示例
- 全面的测试套件
- MCP服务器实现
