⚡ MCP NetSim
市场清算问题——电网仿真
*电力市场优化与电网分析相结合的专业研究和工程工具*
  
______________________________________________________________________
📋 目录
______________________________________________________________________
🎯 概述
MCP NetSim 是一个综合仿真平台,解决了 市场清算问题(MCP) 在确保电网运行的物理可行性的同时,为电力市场提供服务。该项目实现了经济优化(PyPSA)和物理网络分析(pandapower)之间的迭代耦合,以提供最优和可行的解决方案。
关键问题已解决
电力市场运营商必须:
- ✅ 将发电成本降至最低 (经济优化)
- ✅ 确保物理可行性 (网络约束)
- ✅ 处理拥堵 (线路容量限制)
- ✅ 保持电压稳定 (电压限制)
- ✅ 整合可再生能源 (变量生成)
MCP NetSim 通过迭代算法自动解决这个复杂的优化问题,该算法收敛到经济最优和物理可行的解。
用例
- 🔬 学术研究:市场设计、拥堵管理、可再生能源整合
- 🏭 工业应用:生产计划、网络分析、应急研究
- 📚 教育:教授电力市场和电力系统优化
- 🔍 分析:情景评估、敏感性分析、政策影响研究
______________________________________________________________________
✨ 特性
核心能力
- 🔌 网络建模:使用pandapower进行交流潮流分析
- 💰 市场优化:PyPSA经济调度(市场清算问题)
- 🔄 迭代耦合:自动收敛到最佳可行的解决方案
- 🌱 可再生能源一体化:可变剖面的风能和太阳能发电
- 🔋 存储建模:具有充电/放电限制的电池存储
- 📊 多个场景:正常、拥堵、可再生能源、N-1应急
- 📈 交互式可视化:使用Plotly进行实时绘图
- 🌐 网络界面:现代Streamlit仪表板
- 💾 结果导出:CSV和Excel导出结构化数据
高级功能
- 多时间步模拟:每小时或15分钟的分辨率
- LMP计算:每辆巴士的位置边际价格
- 拥塞检测:自动识别超载线路
- 电压监测:实时电压违规检测
- 场景管理:在测试用例之间轻松切换
- 配置管理:基于YAML的集中式配置
- 结构化日志记录:JSON格式的日志用于分析
- 单元测试:带pytest的全面测试套件
______________________________________________________________________
🏗️ 建筑
系统架构
┌───────────────────────────────────────────────────┐
│ MCP-NetSim Platform │
├───────────────────────────────────────────────────│
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Economic │ │ Physical │ │
│ │ Optimization │◄───────►│ Network │ │
│ │ (PyPSA) │Iterative│ Analysis │ │
│ │ │Coupling │ (pandapower) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ └──────────┬─────────────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ Results │ │
│ │ Export │ │
│ └───────────┘ │
│ │
└───────────────────────────────────────────────────┘技术栈
| 组件 | 技术 | 目的 |
|---|---|---|
| 优化 | PyPSA | 市场清算问题解决者 |
| 网络分析 | pandapower | 交流功率流计算 |
| 可视化 | 绘图 | 交互式图表 |
| 网络界面 | Streamlit | 现代仪表板用户界面 |
| 数据处理 | Pandas,NumPy | 数据操作和分析 |
| 配置 | YAML | 集中式设置 |
| 测试 | pytest | 单元和集成测试 |
| 日志记录 | Python日志 | 结构化JSON日志 |
______________________________________________________________________
📦 安装
先决条件
- python:3.8或更高
- 操作系统:macOS、Linux或Windows(带WSL)
- 程序包管理器:pip(Python包安装程序)
步骤1:克隆存储库
git clone https://github.com/yourusername/MCP-NetSim.git
cd MCP-NetSim步骤2:安装Python依赖项
# Install all required packages
pip install -r requirements.txt
# Or with trusted hosts (if SSL issues)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org -r requirements.txt步骤3:安装优化求解器(必需)
MCP NetSim需要一个优化求解器才能使PyPSA工作。
macOS
brew install cbcLinux(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install coinor-cbcLinux(Fedora/RHEL)
sudo dnf install coin-or-CbcWindows(带WSL)
# In WSL Ubuntu
sudo apt-get update
sudo apt-get install coinor-cbc步骤4:验证安装
# Test Python imports
python3 -c "import pypsa, pandapower; print('✓ All imports successful')"
# Test solver availability
python3 -c "
import pypsa
n = pypsa.Network()
n.set_snapshots([0])
n.add('Bus', 'bus1', v_nom=110)
n.add('Generator', 'gen1', bus='bus1', p_nom=100, marginal_cost=30)
n.add('Load', 'load1', bus='bus1', p_set=50)
n.optimize()
print('✓ Solver works!')
"______________________________________________________________________
🚀 快速开始
选项1:Web界面(推荐)
- 启动web界面:
python3 -m streamlit run app.py- 打开浏览器:
- 界面将在以下时间自动打开 http://localhost:8501 - 如果没有,请手动导航到终端中显示的URL
- 运行模拟:
- 从侧边栏中选择一个场景(例如“正常”) - 点击“🚀 运行模拟” - 在交互式选项卡中查看结果
选项2:命令行界面
# Run normal scenario
python3 main.py --scenario normal
# Run with verbose output
python3 main.py --scenario normal --verbose
# Run multi-timestep simulation (24 hours)
python3 main.py --scenario normal --multi-timestep --hours 24选项3:程序化使用
from src.data.network_data import NetworkDataGenerator
from src.network.network_model import NetworkModel
from src.market.market_model import MarketModel
from src.coupling.coupling_logic import CouplingLogic
# Create network data
generator = NetworkDataGenerator()
network_data = generator.create_ieee_14_bus_network()
# Initialize models
network_model = NetworkModel(network_data)
market_model = MarketModel(network_data)
coupling_logic = CouplingLogic(network_model, market_model)
# Solve coupled problem
results = coupling_logic.solve_coupled_problem(verbose=True)
# Access results
print(f"Converged: {results['converged']}")
print(f"Total Cost: {results['total_cost']:.2f} €")
print(f"Generation: {results['generation_schedule']}")
print(f"LMPs: {results['lmps']}")______________________________________________________________________
📖 用法
可用场景
| 场景 | 描述 | 用例 |
|---|---|---|
| 正常 | 标准网络操作 | 基线分析 |
| 拥堵 | 高需求场景 | 拥堵管理 |
| 可再生能源 | 可再生能源渗透率高 | 可再生能源整合 |
| N-1停机 | 线路应急分析 | 安全评估 |
Web界面功能
- 📊 实时可视化:价格、发电量、负载和电压的交互式图表
- 💾 导出结果:将结果下载为CSV或Excel文件
- ⚙️ 配置:通过侧边栏调整模拟参数
- 📈 多个视图:在不同的可视化选项卡之间切换
命令行选项
python3 main.py [OPTIONS]
Options:
--scenario SCENARIO Scenario to run (normal, congestion, renewable_heavy, n1_outage)
--verbose Enable verbose output
--multi-timestep Enable multi-timestep simulation
--hours HOURS Number of hours for multi-timestep (default: 24)
--output-dir DIR Output directory for results (default: results/)______________________________________________________________________
📁 项目结构
MCP-NetSim/
├── src/ # Source code
│ ├── data/ # Network data generation
│ │ └── network_data.py # IEEE 14-bus and custom networks
│ ├── network/ # Network modeling
│ │ └── network_model.py # pandapower integration
│ ├── market/ # Market optimization
│ │ └── market_model.py # PyPSA MCP solver
│ ├── coupling/ # Coupling logic
│ │ └── coupling_logic.py # Iterative algorithm
│ ├── renewables/ # Renewable integration
│ │ ├── renewable_integration.py
│ │ └── storage_model.py
│ ├── scenarios/ # Scenario management
│ │ └── scenario_manager.py
│ ├── visualization/ # Plotting functions
│ │ └── visualizer.py
│ ├── results/ # Results export
│ │ └── results_export.py
│ └── utils/ # Utilities
│ ├── config_loader.py # Configuration management
│ ├── logger.py # Structured logging
│ └── exceptions.py # Custom exceptions
├── config/ # Configuration files
│ └── config.yaml # Centralized configuration
├── tests/ # Test suite
│ ├── test_network_model.py
│ ├── test_market_model.py
│ └── conftest.py
├── results/ # Output directory
│ └── data/ # Exported results
├── logs/ # Log files
├── app.py # Streamlit web interface
├── main.py # CLI entry point
├── requirements.txt # Python dependencies
├── pytest.ini # pytest configuration
├── presentation.html # Project presentation
└── README.md # This file______________________________________________________________________
⚙️ 配置
配置通过以下方式管理 config/config.yaml.关键部分:
网络配置
network:
base_voltage_kv: 110.0
voltage_min_pu: 0.95
voltage_max_pu: 1.05市场配置
market:
solver: cbc # or glpk
tolerance: 1e-6联轴器配置
coupling:
max_iterations: 20
convergence_tolerance: 1e-3
congestion_threshold: 90.0 # Percentage日志记录配置
logging:
level: INFO
format: json
file: logs/mcpsim.log______________________________________________________________________
🔧 故障排除
问题:模拟不收敛(0 MW发电)
症状:
- 汇聚:✗ No
- 总发电量:0.00兆瓦
- 总成本:0.00€
解决方案: 这通常意味着未安装PyPSA求解器。安装CBC:
# macOS
brew install cbc
# Linux
sudo apt-get install coinor-cbc然后重新启动应用程序。
问题:“没有名为'pypsa'的模块”
解决方案:
pip install pypsa问题:“没有名为'pandapower'的模块”
解决方案:
pip install pandapower问题:功率流不收敛
可能的原因:
- 网络数据问题
- 电压设定值超出范围
- 线路参数无效
解决方案:
- 检查网络数据有效性
- 验证电压是否在0.9-1.1 pu之间
- 审查线路电阻/电抗值
问题:市场优化失败
可能的原因:
- 未安装求解器
- 发电量\90%|0(理想)|
| 电压违规 |超出限制的公交车|0(理想)|
了解结果
- LMP地图:显示因拥堵导致的价格差异
- 发电计划:每台发电机的最佳调度
- 线路加载:识别网络中的瓶颈
- 电压分布图:确保系统稳定性
______________________________________________________________________
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
🙏 致谢
- PyPSA:Python用于电力系统分析
- 潘达波:易于使用的电力系统分析工具
- 溪流:用于web界面框架
- Plotly:用于交互式可视化
______________________________________________________________________
📧 联系与支持
- 电子邮件:zaksab98@gmail.com
______________________________________________________________________
由...制作⚡ 电力系统研究与工程
