按每1MW去优化程序。
This commit is contained in:
225
docs/PERIODIC_BALANCE_UPDATE.md
Normal file
225
docs/PERIODIC_BALANCE_UPDATE.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# 周期性平衡功能更新说明
|
||||
|
||||
## 问题描述
|
||||
|
||||
在计算8760小时全年数据时,原有的代码将储能初始状态(SOC)固定为0,导致经过一个完整的8760小时循环后,储能无法恢复到初始状态。这意味着系统在一个周期结束后,储能状态发生了变化,不符合实际运行场景中的周期性稳定要求。
|
||||
|
||||
## 解决方案
|
||||
|
||||
实现了迭代收敛算法,通过以下步骤找到满足周期性平衡的储能初始状态:
|
||||
|
||||
1. **步骤一**:从初始SOC=0开始,运行一次全年仿真,记录最后一小时的SOC值
|
||||
2. **步骤二**:将这个SOC值作为新的"初始SOC",再次运行仿真
|
||||
3. **步骤三**:重复上述过程,直到首尾SOC的差值小于设定的阈值(默认为储能容量的0.1%)
|
||||
|
||||
## 代码修改
|
||||
|
||||
### 1. `calculate_energy_balance` 函数
|
||||
|
||||
**修改内容**:添加了 `initial_soc` 参数,允许指定初始储能状态。
|
||||
|
||||
```python
|
||||
def calculate_energy_balance(
|
||||
solar_output: List[float],
|
||||
wind_output: List[float],
|
||||
thermal_output: List[float],
|
||||
load_demand: List[float],
|
||||
params: SystemParameters,
|
||||
storage_capacity: float,
|
||||
initial_soc: float = 0.0 # 新增参数
|
||||
) -> Dict[str, List[float]]:
|
||||
```
|
||||
|
||||
**关键变化**:
|
||||
- 将初始储能状态从固定的0改为可配置的 `initial_soc` 参数
|
||||
- 在计算开始时设置 `storage_soc[0] = initial_soc`
|
||||
|
||||
### 2. `find_periodic_steady_state` 函数(新增)
|
||||
|
||||
**功能**:通过迭代收敛找到满足周期性平衡的储能初始状态。
|
||||
|
||||
```python
|
||||
def find_periodic_steady_state(
|
||||
solar_output: List[float],
|
||||
wind_output: List[float],
|
||||
thermal_output: List[float],
|
||||
load_demand: List[float],
|
||||
params: SystemParameters,
|
||||
storage_capacity: float,
|
||||
soc_convergence_threshold: float = 0.001, # SOC收敛阈值(0.1%)
|
||||
max_iterations: int = 100
|
||||
) -> Dict[str, List[float]]:
|
||||
```
|
||||
|
||||
**算法逻辑**:
|
||||
```
|
||||
initial_soc = 0.0
|
||||
while iteration < max_iterations:
|
||||
运行仿真,得到 balance_result
|
||||
storage_final = balance_result['storage_profile'][-1]
|
||||
soc_diff = abs(storage_final - initial_soc)
|
||||
|
||||
if soc_diff < soc_convergence_threshold:
|
||||
收敛成功,退出循环
|
||||
|
||||
initial_soc = storage_final
|
||||
iteration += 1
|
||||
```
|
||||
|
||||
**输出信息**:
|
||||
```
|
||||
正在寻找周期性平衡状态(SOC收敛阈值: 0.5000 MWh)...
|
||||
迭代 1: 初始SOC=0.0000 MWh, 最终SOC=21.7157 MWh, 差值=21.7157 MWh
|
||||
迭代 2: 初始SOC=21.7157 MWh, 最终SOC=21.7157 MWh, 差值=0.0000 MWh
|
||||
✓ 周期性平衡收敛成功(迭代2次,SOC差值=0.0000 MWh)
|
||||
```
|
||||
|
||||
### 3. `optimize_storage_capacity` 函数
|
||||
|
||||
**修改内容**:根据数据长度自动选择是否使用周期性平衡。
|
||||
|
||||
```python
|
||||
# 判断数据类型(24小时或8760小时)
|
||||
data_length = len(solar_output)
|
||||
is_yearly_data = data_length == 8760
|
||||
|
||||
if is_yearly_data:
|
||||
print(f"处理8760小时全年数据,启用周期性平衡优化...")
|
||||
|
||||
# 二分搜索中
|
||||
if is_yearly_data:
|
||||
balance_result = find_periodic_steady_state(...)
|
||||
else:
|
||||
balance_result = calculate_energy_balance(...)
|
||||
```
|
||||
|
||||
**关键变化**:
|
||||
- 自动识别数据类型(24小时或8760小时)
|
||||
- 对于8760小时数据,使用周期性平衡函数
|
||||
- 对于24小时数据,保持原有逻辑(不需要周期性平衡)
|
||||
- 在最终输出中显示周期性平衡信息
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 测试脚本
|
||||
|
||||
项目提供了测试脚本 `tests/test_periodic_balance.py`,可以验证周期性平衡功能:
|
||||
|
||||
```bash
|
||||
python tests\test_periodic_balance.py
|
||||
```
|
||||
|
||||
### 正常使用
|
||||
|
||||
无需修改现有使用方式,周期性平衡功能会自动启用:
|
||||
|
||||
```python
|
||||
from src.storage_optimization import optimize_storage_capacity, SystemParameters
|
||||
|
||||
# 8760小时数据
|
||||
solar_output = [...] # 长度为8760
|
||||
wind_output = [...] # 长度为8760
|
||||
thermal_output = [...] # 长度为8760
|
||||
load_demand = [...] # 长度为8760
|
||||
|
||||
params = SystemParameters(...)
|
||||
|
||||
# 自动启用周期性平衡
|
||||
result = optimize_storage_capacity(
|
||||
solar_output, wind_output, thermal_output, load_demand, params
|
||||
)
|
||||
|
||||
# 输出信息会显示周期性平衡状态
|
||||
print(f"初始SOC: {result['storage_profile'][0]:.4f} MWh")
|
||||
print(f"最终SOC: {result['storage_profile'][-1]:.4f} MWh")
|
||||
print(f"SOC差值: {abs(result['storage_profile'][-1] - result['storage_profile'][0]):.4f} MWh")
|
||||
```
|
||||
|
||||
## 测试结果
|
||||
|
||||
### 24小时数据测试
|
||||
|
||||
```
|
||||
============================================================
|
||||
测试24小时数据(不需要周期性平衡)
|
||||
============================================================
|
||||
|
||||
=== 24小时优化结果 ===
|
||||
所需储能总容量: 217.00 MWh
|
||||
初始SOC: 0.0000 MWh
|
||||
最终SOC: 21.6000 MWh
|
||||
SOC差值: 21.6000 MWh
|
||||
实际弃风率: 0.000
|
||||
实际弃光率: 0.000
|
||||
实际上网电量比例: -0.145
|
||||
能量平衡校验: 通过
|
||||
```
|
||||
|
||||
**说明**:24小时数据不需要周期性平衡,SOC差值可以不为0。
|
||||
|
||||
### 8760小时数据测试
|
||||
|
||||
```
|
||||
============================================================
|
||||
测试8760小时数据(需要周期性平衡)
|
||||
============================================================
|
||||
处理8760小时全年数据,启用周期性平衡优化...
|
||||
正在寻找周期性平衡状态(SOC收敛阈值: 0.5000 MWh)...
|
||||
迭代 1: 初始SOC=0.0000 MWh, 最终SOC=21.7157 MWh, 差值=21.7157 MWh
|
||||
迭代 2: 初始SOC=21.7157 MWh, 最终SOC=21.7157 MWh, 差值=0.0000 MWh
|
||||
✓ 周期性平衡收敛成功(迭代2次,SOC差值=0.0000 MWh)
|
||||
|
||||
=== 8760小时优化结果 ===
|
||||
所需储能总容量: 28.31 MWh
|
||||
初始SOC: 21.7157 MWh
|
||||
最终SOC: 21.7157 MWh
|
||||
SOC差值: 0.0000 MWh
|
||||
实际弃风率: 0.100
|
||||
实际弃光率: 0.072
|
||||
实际上网电量比例: -0.141
|
||||
能量平衡校验: 通过
|
||||
|
||||
✓ 周期性平衡验证通过
|
||||
SOC差值: 0.0000 MWh < 阈值: 0.0283 MWh
|
||||
```
|
||||
|
||||
**说明**:8760小时数据自动启用周期性平衡,SOC差值为0,满足周期性平衡要求。
|
||||
|
||||
## 关键特性
|
||||
|
||||
1. **自动识别**:根据数据长度自动选择是否启用周期性平衡
|
||||
2. **快速收敛**:通常只需要2-3次迭代即可收敛
|
||||
3. **可配置阈值**:默认SOC收敛阈值为容量的0.1%,可以根据需要调整
|
||||
4. **向后兼容**:不影响现有24小时数据的处理逻辑
|
||||
5. **详细输出**:提供迭代过程的详细信息,便于调试和验证
|
||||
|
||||
## 参数说明
|
||||
|
||||
### `soc_convergence_threshold`
|
||||
|
||||
SOC收敛阈值(相对于储能容量的比例),默认值为0.001(0.1%)。
|
||||
|
||||
- **类型**:float
|
||||
- **默认值**:0.001
|
||||
- **取值范围**:> 0
|
||||
- **说明**:当初始SOC和最终SOC的差值小于 `storage_capacity * soc_convergence_threshold` 时,认为已达到周期性平衡
|
||||
|
||||
### `max_iterations`
|
||||
|
||||
最大迭代次数,默认值为100。
|
||||
|
||||
- **类型**:int
|
||||
- **默认值**:100
|
||||
- **取值范围**:> 0
|
||||
- **说明**:防止在极端情况下无限循环
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **收敛性**:在大多数情况下,算法会在2-5次迭代内收敛
|
||||
2. **性能影响**:8760小时数据的计算时间会增加,但影响有限(每次迭代约增加0.1-0.5秒)
|
||||
3. **内存使用**:与原算法相同,没有额外内存开销
|
||||
4. **兼容性**:完全向后兼容,不影响24小时数据的处理
|
||||
|
||||
## 总结
|
||||
|
||||
本次更新成功解决了8760小时全年数据计算时储能周期性不平衡的问题,通过迭代收敛算法自动找到满足周期性平衡的初始SOC状态,确保系统在完整周期结束后储能状态能够恢复到初始值,符合实际运行场景的要求。
|
||||
136
docs/PROJECT_STRUCTURE.md
Normal file
136
docs/PROJECT_STRUCTURE.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 项目结构说明
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
D:\code\storage\
|
||||
├── src/ # 核心源代码
|
||||
│ ├── storage_optimization.py # 储能容量优化核心模块
|
||||
│ ├── excel_reader.py # Excel数据读取模块
|
||||
│ ├── economic_optimization.py # 经济优化模块
|
||||
│ ├── solar_optimization.py # 太阳能优化模块
|
||||
│ └── advanced_visualization.py # 高级可视化模块
|
||||
│
|
||||
├── tests/ # 测试文件
|
||||
│ ├── test_*.py # 所有Python测试文件
|
||||
│ ├── test_*.xlsx # 测试Excel文件
|
||||
│ ├── extreme_*.xlsx # 极端场景测试文件
|
||||
│ └── test_zero_grid_simple.py # 简化版测试文件
|
||||
│
|
||||
├── config/ # 配置文件
|
||||
│ ├── pyproject.toml # 项目配置
|
||||
│ ├── requirements.txt # 依赖配置
|
||||
│ ├── uv.lock # uv锁定文件
|
||||
│ └── main.spec # PyInstaller配置
|
||||
│
|
||||
├── docs/ # 文档文件
|
||||
│ ├── README.md # 项目主文档
|
||||
│ └── README_exe.md # 可执行文件说明
|
||||
│
|
||||
├── scripts/ # 示例和演示脚本
|
||||
│ ├── example_usage.py # 使用示例
|
||||
│ ├── solar_optimization_examples.py # 太阳能优化示例
|
||||
│ └── solar_scenarios_demo.py # 太阳能场景演示
|
||||
│
|
||||
├── images/ # 图片文件
|
||||
│ ├── *.png # 所有生成的图表和可视化图片
|
||||
│
|
||||
├── templates/ # Excel模板文件
|
||||
│ ├── data_template_*.xlsx # 数据模板
|
||||
│ ├── economic_data_template_*.xlsx # 经济优化模板
|
||||
│ └── data_template_*-*.xlsx # 临时和修改的模板
|
||||
│
|
||||
├── results/ # 优化结果文件
|
||||
│ └── storage_optimization_results_*.xlsx # 储能优化结果
|
||||
│
|
||||
├── reports/ # 报告文件
|
||||
│ └── economic_optimization_report_*.xlsx # 经济优化报告
|
||||
│
|
||||
├── build/ # 构建输出
|
||||
├── dist/ # 分发文件
|
||||
├── __pycache__/ # Python缓存
|
||||
├── .mypy_cache/ # MyPy缓存
|
||||
├── .vscode/ # VS Code配置
|
||||
├── .gitignore # Git忽略文件
|
||||
├── .python-version # Python版本
|
||||
└── main.py # 主程序入口
|
||||
```
|
||||
|
||||
## 文件分类说明
|
||||
|
||||
### 📁 **src/** - 核心源代码
|
||||
- **storage_optimization.py**: 储能容量优化的核心算法
|
||||
- **excel_reader.py**: Excel文件读取和数据验证
|
||||
- **economic_optimization.py**: 经济指标优化模块
|
||||
- **solar_optimization.py**: 太阳能系统优化
|
||||
- **advanced_visualization.py**: 高级数据可视化
|
||||
|
||||
### 📁 **tests/** - 测试文件
|
||||
- 所有 `test_*.py` 文件:单元测试和集成测试
|
||||
- 所有 `test_*.xlsx` 文件:测试用Excel数据
|
||||
- `extreme_*.xlsx`:极端场景测试数据
|
||||
|
||||
### 📁 **config/** - 配置文件
|
||||
- **pyproject.toml**: 项目元数据和依赖管理
|
||||
- **requirements.txt**: Python依赖包列表
|
||||
- **uv.lock**: 依赖版本锁定文件
|
||||
- **main.spec**: PyInstaller打包配置
|
||||
|
||||
### 📁 **docs/** - 文档
|
||||
- **README.md**: 项目主文档
|
||||
- **README_exe.md**: 可执行文件使用说明
|
||||
|
||||
### 📁 **scripts/** - 示例和演示
|
||||
- **example_usage.py**: 基本使用示例
|
||||
- **solar_optimization_examples.py**: 太阳能优化示例
|
||||
- **solar_scenarios_demo.py**: 太阳能场景演示
|
||||
|
||||
### 📁 **images/** - 图片文件
|
||||
- 所有 `.png` 文件:系统生成的图表和可视化结果
|
||||
|
||||
### 📁 **templates/** - Excel模板
|
||||
- **data_template_*.xlsx**: 基础数据模板
|
||||
- **economic_data_template_*.xlsx**: 经济优化模板
|
||||
- 临时和修改的模板文件
|
||||
|
||||
### 📁 **results/** - 优化结果
|
||||
- **storage_optimization_results_*.xlsx**: 储能优化计算结果
|
||||
|
||||
### 📁 **reports/** - 报告文件
|
||||
- **economic_optimization_report_*.xlsx**: 经济优化分析报告
|
||||
|
||||
## 使用说明
|
||||
|
||||
### 运行主程序
|
||||
```bash
|
||||
uv run python main.py --excel templates/data_template_8760.xlsx
|
||||
```
|
||||
|
||||
### 运行测试
|
||||
```bash
|
||||
uv run python tests/test_excel_data.py
|
||||
```
|
||||
|
||||
### 运行示例
|
||||
```bash
|
||||
uv run python scripts/example_usage.py
|
||||
```
|
||||
|
||||
### 创建Excel模板
|
||||
```bash
|
||||
uv run python src/excel_reader.py --economic
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **导入路径**: 由于文件移动,可能需要调整Python导入路径
|
||||
2. **相对路径**: 某些脚本中的文件路径可能需要更新
|
||||
3. **配置文件**: pyproject.toml等配置文件位置已改变
|
||||
4. **可执行文件**: 如果使用了打包的exe,需要检查路径引用
|
||||
|
||||
## 维护建议
|
||||
|
||||
- 定期清理 `results/` 和 `reports/` 中的旧文件
|
||||
- 保持 `templates/` 中的模板文件更新
|
||||
- 及时更新 `config/` 中的依赖配置
|
||||
- 维护 `docs/` 中的文档与代码同步
|
||||
673
docs/README.md
Normal file
673
docs/README.md
Normal file
@@ -0,0 +1,673 @@
|
||||
# 多能互补系统储能容量优化计算程序
|
||||
|
||||
## 项目概述
|
||||
|
||||
本项目是一个Python算法程序,专注于计算多能互补系统中所需的最优储能容量。程序能够确保系统在24小时或8760小时(全年)时间尺度内电能平衡,同时满足用户定义的弃风弃光率和上网电量比例约束。
|
||||
|
||||
**新增功能**:经济优化模块,在光伏、风电、负荷确定的前提下,进行储能配置优化,目标函数是光伏建设费用、风电建设费用、储能建设费用、购电费用最小。
|
||||
|
||||
## 核心目标
|
||||
|
||||
- 计算24小时或8760小时多能互补系统中的最优储能容量
|
||||
- 确保系统电能平衡,满足所有约束条件
|
||||
- 提供详细的储能运行曲线和统计信息
|
||||
- 支持可视化分析
|
||||
- **经济优化**:最小化总建设成本和购电费用,计算最优储能配置
|
||||
|
||||
## 主要技术栈
|
||||
|
||||
- **编程语言**: Python
|
||||
- **核心库**: NumPy, SciPy, matplotlib, pandas, openpyxl
|
||||
- **算法类型**: 迭代优化算法(二分搜索)、网格搜索算法
|
||||
- **可视化**: matplotlib绘图库
|
||||
- **数据处理**: Excel文件读写和数据处理
|
||||
- **经济分析**: LCOE、NPV计算和经济优化
|
||||
|
||||
## 核心功能
|
||||
|
||||
1. **电能平衡计算**: 确保系统内电能供需平衡
|
||||
2. **约束条件处理**:
|
||||
- 弃风弃光率约束
|
||||
- 上网电量比例约束
|
||||
- 储能充放电约束
|
||||
3. **优化算法**: 计算满足所有约束的最小储能容量
|
||||
4. **经济优化**:
|
||||
- 最小化总建设成本(光伏、风电、储能)
|
||||
- 最小化购电费用
|
||||
- 计算LCOE(平准化电力成本)
|
||||
- 计算NPV(净现值)
|
||||
5. **结果输出**: 提供详细的储能运行曲线和统计信息
|
||||
6. **可视化功能**: 生成系统运行曲线图表
|
||||
7. **Excel集成**: 支持从Excel文件读取数据和参数
|
||||
|
||||
## 安装依赖
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 从Excel文件导入数据
|
||||
```bash
|
||||
python main.py --excel <Excel文件路径>
|
||||
```
|
||||
|
||||
### 2. 24小时数据(默认)
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
### 3. 创建Excel模板
|
||||
```bash
|
||||
python excel_reader.py --create-template 8760 # 创建8760小时模板
|
||||
python excel_reader.py --create-template 24 # 创建24小时模板
|
||||
```
|
||||
|
||||
### 4. 创建经济优化Excel模板
|
||||
```bash
|
||||
python excel_reader.py --economic # 创建包含经济参数的模板
|
||||
```
|
||||
|
||||
### 5. 经济优化分析
|
||||
```bash
|
||||
python economic_optimization.py --demo # 运行演示
|
||||
python economic_optimization.py --excel <Excel文件路径> # 使用Excel数据进行经济优化
|
||||
```
|
||||
|
||||
### 6. 高级可视化
|
||||
```bash
|
||||
python advanced_visualization.py
|
||||
```
|
||||
|
||||
### 7. 运行测试
|
||||
```bash
|
||||
python test_storage_optimization.py
|
||||
```
|
||||
|
||||
## 数据格式要求
|
||||
|
||||
### Excel文件导入(推荐)
|
||||
|
||||
程序支持从Excel文件直接导入8760小时或24小时数据,这是最便捷的数据输入方式。
|
||||
|
||||
#### 必需的列名
|
||||
|
||||
Excel文件必须包含以下列(列名必须完全一致):
|
||||
|
||||
| 列名 | 说明 | 单位 | 要求 |
|
||||
|------|------|------|------|
|
||||
| 光伏出力(MW) | 光伏发电功率曲线 | MW | 非负数 |
|
||||
| 风电出力(MW) | 风电发电功率曲线 | MW | 非负数 |
|
||||
| 火电出力(MW) | 火电发电功率曲线 | MW | 非负数 |
|
||||
| 负荷需求(MW) | 电力负荷需求曲线 | MW | 非负数 |
|
||||
|
||||
#### 可选列
|
||||
|
||||
| 列名 | 说明 | 单位 |
|
||||
|------|------|------|
|
||||
| 小时 | 时间序号(1-8760或1-24) | - |
|
||||
|
||||
#### 数据行数要求
|
||||
|
||||
- **8760小时数据**:必须包含8760行数据(全年每小时一个数据点)
|
||||
- **24小时数据**:必须包含24行数据(典型日每小时一个数据点)
|
||||
|
||||
#### 创建Excel模板
|
||||
|
||||
程序提供自动创建Excel模板的功能:
|
||||
|
||||
```bash
|
||||
# 创建8760小时模板
|
||||
python main.py --create-template 8760
|
||||
|
||||
# 创建24小时模板
|
||||
python main.py --create-template 24
|
||||
```
|
||||
|
||||
#### 使用Excel数据
|
||||
|
||||
**命令格式:**
|
||||
```bash
|
||||
python main.py --excel <Excel文件路径>
|
||||
```
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
python main.py --excel my_data.xlsx
|
||||
python main.py --excel data_template_8760.xlsx
|
||||
```
|
||||
|
||||
#### Excel文件结构
|
||||
|
||||
完整的Excel文件包含4个工作表:
|
||||
|
||||
**1. 数据工作表**
|
||||
| 小时 | 光伏出力(MW) | 风电出力(MW) | 火电出力(MW) | 负荷需求(MW) |
|
||||
|------|-------------|-------------|-------------|-------------|
|
||||
| 1 | 0.0 | 2.1 | 5.0 | 3.2 |
|
||||
| 2 | 0.0 | 2.3 | 5.0 | 2.8 |
|
||||
| ... | ... | ... | ... | ... |
|
||||
| 8760 | 0.0 | 2.0 | 5.0 | 3.5 |
|
||||
|
||||
**2. 参数工作表(系统运行参数)**
|
||||
| 参数名称 | 参数值 | 参数说明 | 取值范围 | 默认值 |
|
||||
|---------|--------|---------|---------|--------|
|
||||
| 最大弃风率 | 0.1 | 允许的最大弃风率(0.0-1.0) | 0.0-1.0 | 0.1 |
|
||||
| 最大弃光率 | 0.1 | 允许的最大弃光率(0.0-1.0) | 0.0-1.0 | 0.1 |
|
||||
| 最大上网电量比例 | 0.2 | 允许的最大上网电量比例 | ≥0.0 | 0.2 |
|
||||
| 储能效率 | 0.9 | 储能充放电效率(0.0-1.0) | 0.0-1.0 | 0.9 |
|
||||
| 放电倍率 | 1.0 | 储能放电倍率(C-rate,>0) | >0 | 1.0 |
|
||||
| 充电倍率 | 1.0 | 储能充电倍率(C-rate,>0) | >0 | 1.0 |
|
||||
|
||||
**3. 经济参数工作表(经济优化参数)**
|
||||
| 参数名称 | 参数值 | 参数说明 | 取值范围 | 默认值 |
|
||||
|---------|--------|---------|---------|--------|
|
||||
| 光伏建设成本 | 3000000 | 光伏发电系统建设成本 (元/MW) | >0 | 3,000,000 |
|
||||
| 风电建设成本 | 2500000 | 风力发电系统建设成本 (元/MW) | >0 | 2,500,000 |
|
||||
| 储能建设成本 | 800000 | 储能系统建设成本 (元/MWh) | >0 | 800,000 |
|
||||
| 购电价格 | 600 | 从电网购电价格 (元/MWh) | >0 | 600 |
|
||||
| 上网电价 | 400 | 向电网售电价格 (元/MWh) | ≥0 | 400 |
|
||||
| 光伏运维成本 | 50000 | 光伏系统年度运维成本 (元/MW/年) | ≥0 | 50,000 |
|
||||
| 风电运维成本 | 45000 | 风电系统年度运维成本 (元/MW/年) | ≥0 | 45,000 |
|
||||
| 储能运维成本 | 3000 | 储能系统年度运维成本 (元/MW/年) | ≥0 | 3,000 |
|
||||
| 项目寿命 | 25 | 项目运营寿命 (年) | >0 | 25 |
|
||||
| 折现率 | 0.08 | 项目折现率 (用于NPV计算) | 0-1 | 0.08 |
|
||||
| 储能容量搜索范围-最小值 | 0 | 储能容量优化搜索范围下限 (MWh) | ≥0 | 0 |
|
||||
| 储能容量搜索范围-最大值 | 1000 | 储能容量优化搜索范围上限 (MWh) | >0 | 1000 |
|
||||
| 充放电倍率搜索范围-最小值 | 0.1 | 充放电倍率优化搜索范围下限 | >0 | 0.1 |
|
||||
| 充放电倍率搜索范围-最大值 | 2.0 | 充放电倍率优化搜索范围上限 | >0 | 2.0 |
|
||||
| 最大迭代次数 | 100 | 优化算法最大迭代次数 | >0 | 100 |
|
||||
| 收敛容差 | 0.01 | 优化算法收敛容差 | >0 | 0.01 |
|
||||
|
||||
**4. 说明工作表**
|
||||
包含使用说明和注意事项。
|
||||
|
||||
#### 数据处理逻辑
|
||||
|
||||
**24小时数据扩展:**
|
||||
当提供24小时数据时,程序会自动将其扩展到8760小时:
|
||||
- 将24小时模式重复365次
|
||||
- 模拟全年数据,便于进行长期储能优化
|
||||
|
||||
**数据验证:**
|
||||
程序会自动验证:
|
||||
- 文件是否存在
|
||||
- 数据行数是否正确
|
||||
- 必需列是否存在
|
||||
- 数据类型是否为数值
|
||||
- 是否包含负值
|
||||
|
||||
**错误处理:**
|
||||
如果数据格式不正确,程序会显示详细的错误信息:
|
||||
```
|
||||
错误:数据行数应为8760,实际为1000
|
||||
错误:缺少必需的列:['光伏出力(MW)']
|
||||
错误:列'光伏出力(MW)'包含负值
|
||||
```
|
||||
|
||||
#### 注意事项
|
||||
|
||||
1. **文件格式**:仅支持.xlsx格式(Excel 2007及以上)
|
||||
2. **编码**:建议使用UTF-8编码保存Excel文件
|
||||
3. **数据精度**:保留小数点后2位即可
|
||||
4. **文件大小**:8760小时数据文件通常小于1MB
|
||||
5. **内存要求**:处理8760小时数据需要约100-200MB额外内存
|
||||
|
||||
#### 故障排除
|
||||
|
||||
**常见问题:**
|
||||
|
||||
1. **"文件不存在"错误**
|
||||
- 检查文件路径是否正确
|
||||
- 确保文件没有被其他程序占用
|
||||
|
||||
2. **"缺少必需的列"错误**
|
||||
- 检查列名是否完全匹配(包括括号和单位)
|
||||
- 确保没有多余的空格
|
||||
|
||||
3. **"数据类型错误"**
|
||||
- 确保所有数据列都是数值格式
|
||||
- 检查是否有文本格式混入
|
||||
|
||||
4. **"包含负值"错误**
|
||||
- 所有功率数据必须为非负数
|
||||
- 检查数据源是否有异常值
|
||||
|
||||
**性能优化建议:**
|
||||
|
||||
1. **大文件处理**:对于8760小时数据,确保系统有足够内存
|
||||
2. **数据预处理**:在Excel中预先清理和验证数据
|
||||
3. **批量处理**:可以编写脚本批量处理多个Excel文件
|
||||
|
||||
### 编程接口格式
|
||||
|
||||
### 24小时模式
|
||||
所有输入数据必须是长度为24的数值列表,表示24小时的电力数据
|
||||
|
||||
### 8760小时模式
|
||||
所有输入数据必须是长度为8760的数值列表,表示全年8760小时的电力数据
|
||||
|
||||
### 支持的数据类型
|
||||
- **solar_output**: 光伏出力曲线 (MW)
|
||||
- **wind_output**: 风电出力曲线 (MW)
|
||||
- **thermal_output**: 火电出力曲线 (MW)
|
||||
- **load_demand**: 负荷曲线 (MW)
|
||||
|
||||
## 编程接口使用
|
||||
|
||||
```python
|
||||
from storage_optimization import optimize_storage_capacity, SystemParameters
|
||||
|
||||
# 定义输入数据(24小时示例)
|
||||
solar_output = [0.0] * 6 + [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0] + [0.0] * 6
|
||||
wind_output = [2.0, 3.0, 4.0, 3.0, 2.0, 1.0] * 4
|
||||
thermal_output = [5.0] * 24
|
||||
load_demand = [3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 18.0,
|
||||
16.0, 14.0, 12.0, 10.0, 8.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 2.0]
|
||||
|
||||
# 系统参数
|
||||
params = SystemParameters(
|
||||
max_curtailment_wind=0.1, # 最大弃风率10%
|
||||
max_curtailment_solar=0.1, # 最大弃光率10%
|
||||
max_grid_ratio=0.2, # 最大上网电量比例20%
|
||||
storage_efficiency=0.9, # 储能效率90%
|
||||
discharge_rate=1.0, # 1C放电
|
||||
charge_rate=1.0, # 1C充电
|
||||
max_storage_capacity=50.0 # 储能容量上限50MWh(可选)
|
||||
)
|
||||
|
||||
# 购电场景示例
|
||||
params_purchase = SystemParameters(
|
||||
max_curtailment_wind=0.05, # 严格的弃风控制
|
||||
max_curtailment_solar=0.02, # 严格的弃光控制
|
||||
max_grid_ratio=-0.3, # 负值表示购电,最大购电比例30%
|
||||
storage_efficiency=0.9, # 储能效率90%
|
||||
discharge_rate=2.0, # 2C放电,满足高峰需求
|
||||
charge_rate=1.0, # 1C充电
|
||||
max_storage_capacity=30.0 # 限制储能容量
|
||||
)
|
||||
|
||||
# 不设置储能容量上限(默认行为)
|
||||
# params = SystemParameters(
|
||||
# max_curtailment_wind=0.1,
|
||||
# max_curtailment_solar=0.1,
|
||||
# max_grid_ratio=0.2,
|
||||
# storage_efficiency=0.9,
|
||||
# discharge_rate=1.0,
|
||||
# charge_rate=1.0
|
||||
# )
|
||||
|
||||
# 计算最优储能容量
|
||||
result = optimize_storage_capacity(solar_output, wind_output, thermal_output, load_demand, params)
|
||||
|
||||
# 输出结果
|
||||
print(f"所需储能容量: {result['required_storage_capacity']:.2f} MWh")
|
||||
print(f"实际弃风率: {result['total_curtailment_wind_ratio']:.3f}")
|
||||
print(f"实际弃光率: {result['total_curtailment_solar_ratio']:.3f}")
|
||||
print(f"实际上网电量比例: {result['total_grid_feed_in_ratio']:.3f}")
|
||||
```
|
||||
|
||||
## 经济优化模块
|
||||
|
||||
### 功能概述
|
||||
|
||||
经济优化模块在光伏、风电、负荷确定的前提下,进行储能配置优化,目标函数是光伏建设费用、风电建设费用、储能建设费用、购电费用最小。
|
||||
|
||||
### 主要功能
|
||||
|
||||
1. **经济参数配置**
|
||||
- 建设成本:光伏、风电、储能(元/MW 或 元/MWh)
|
||||
- 运行成本:购电价格、上网电价、运维成本
|
||||
- 财务参数:项目寿命、折现率
|
||||
|
||||
2. **优化算法**
|
||||
- 网格搜索优化算法
|
||||
- 精细搜索(在最优解附近进行小范围搜索)
|
||||
- 支持储能容量和充放电倍率的联合优化
|
||||
|
||||
3. **经济指标计算**
|
||||
- **LCOE(平准化电力成本)**:考虑建设、运维、电费成本
|
||||
- **NPV(净现值)**:基于折现率的现金流分析
|
||||
- **总成本分析**:建设成本、运维成本、电费成本
|
||||
|
||||
4. **系统性能评估**
|
||||
- 新能源消纳比例
|
||||
- 弃风弃光量统计
|
||||
- 购电量和上网电量分析
|
||||
|
||||
### 使用方法
|
||||
|
||||
#### 1. 演示模式
|
||||
```bash
|
||||
python economic_optimization.py --demo
|
||||
```
|
||||
|
||||
#### 2. Excel数据模式
|
||||
```bash
|
||||
python economic_optimization.py --excel <Excel文件路径>
|
||||
```
|
||||
|
||||
#### 3. 编程接口
|
||||
```python
|
||||
from economic_optimization import EconomicParameters, optimize_storage_economic
|
||||
|
||||
# 经济参数
|
||||
econ_params = EconomicParameters(
|
||||
solar_capex=3000000, # 光伏建设成本 (元/MW)
|
||||
wind_capex=2500000, # 风电建设成本 (元/MW)
|
||||
storage_capex=800000, # 储能建设成本 (元/MWh)
|
||||
electricity_price=600, # 购电价格 (元/MWh)
|
||||
feed_in_price=400, # 上网电价 (元/MWh)
|
||||
solar_om=50000, # 光伏运维成本 (元/MW/年)
|
||||
wind_om=45000, # 风电运维成本 (元/MW/年)
|
||||
storage_om=3000, # 储能运维成本 (元/MW/年)
|
||||
project_lifetime=25, # 项目寿命 (年)
|
||||
discount_rate=0.08 # 折现率
|
||||
)
|
||||
|
||||
# 系统参数
|
||||
system_params = SystemParameters(
|
||||
max_curtailment_wind=0.1,
|
||||
max_curtailment_solar=0.1,
|
||||
max_grid_ratio=0.2,
|
||||
storage_efficiency=0.9,
|
||||
discharge_rate=1.0,
|
||||
charge_rate=1.0
|
||||
)
|
||||
|
||||
# 运行优化
|
||||
result = optimize_storage_economic(
|
||||
solar_output, wind_output, thermal_output, load_demand,
|
||||
econ_params, system_params,
|
||||
storage_capacity_range=(0, 1000),
|
||||
rate_range=(0.1, 2.0),
|
||||
max_iterations=100,
|
||||
tolerance=0.01
|
||||
)
|
||||
|
||||
# 输出结果
|
||||
print(f"最优储能容量: {result.storage_capacity:.2f} MWh")
|
||||
print(f"最优充电倍率: {result.charge_rate:.2f}")
|
||||
print(f"最优放电倍率: {result.discharge_rate:.2f}")
|
||||
print(f"总建设成本: {result.total_capex:.2f} 元")
|
||||
print(f"LCOE: {result.total_lcoe:.2f} 元/MWh")
|
||||
print(f"NPV: {result.total_npv:.2f} 元")
|
||||
print(f"新能源消纳比例: {result.renewable_ratio:.2f}%")
|
||||
```
|
||||
|
||||
### 输出结果
|
||||
|
||||
经济优化模块返回 `OptimizationResult` 对象,包含:
|
||||
|
||||
```python
|
||||
{
|
||||
'storage_capacity': float, # 最优储能容量 (MWh)
|
||||
'charge_rate': float, # 最优充电倍率 (C-rate)
|
||||
'discharge_rate': float, # 最优放电倍率 (C-rate)
|
||||
'total_capex': float, # 总建设成本 (元)
|
||||
'total_om_cost': float, # 总运维成本 (元)
|
||||
'total_electricity_cost': float # 总电费成本 (元)
|
||||
'total_lcoe': float, # 平准化电力成本 (元/MWh)
|
||||
'total_npv': float, # 净现值 (元)
|
||||
'total_curtailment': float, # 总弃风弃光量 (MWh)
|
||||
'grid_purchase': float, # 总购电量 (MWh)
|
||||
'grid_feed_in': float, # 总上网电量 (MWh)
|
||||
'renewable_ratio': float # 新能源消纳比例 (%)
|
||||
}
|
||||
```
|
||||
|
||||
### 报告生成
|
||||
|
||||
程序自动生成Excel报告,包含:
|
||||
- 优化结果汇总
|
||||
- 经济参数配置
|
||||
- 详细的成本分析
|
||||
|
||||
### 可视化图表
|
||||
|
||||
生成经济分析图表:
|
||||
- NPV vs 储能容量
|
||||
- LCOE vs 储能容量
|
||||
- 新能源消纳比例 vs 储能容量
|
||||
- 成本构成饼图
|
||||
|
||||
## 系统参数说明
|
||||
|
||||
- **max_curtailment_wind**: 最大允许弃风率 (0.0-1.0)
|
||||
- **max_curtailment_solar**: 最大允许弃光率 (0.0-1.0)
|
||||
- **max_grid_ratio**: 最大允许上网电量比例 (0.0-∞,正值限制上网比例,负值不限制上网电量,无论正负都允许购电)
|
||||
- **storage_efficiency**: 储能充放电效率 (0.0-1.0)
|
||||
- **discharge_rate**: 储能放电倍率 (C-rate)
|
||||
- **charge_rate**: 储能充电倍率 (C-rate)
|
||||
- **max_storage_capacity**: 储能容量上限 (MWh,可选,None表示无限制)
|
||||
|
||||
## 输出结果格式
|
||||
|
||||
程序返回一个字典,包含以下信息:
|
||||
|
||||
```python
|
||||
{
|
||||
'required_storage_capacity': float, # 所需储能总容量(MWh)
|
||||
'storage_profile': list, # 储能状态曲线(MWh)
|
||||
'charge_profile': list, # 充电功率曲线(MW)
|
||||
'discharge_profile': list, # 放电功率曲线(MW)
|
||||
'curtailed_wind': list, # 弃风量曲线(MW)
|
||||
'curtailed_solar': list, # 弃光量曲线(MW)
|
||||
'grid_feed_in': list, # 上网电量曲线(MW)
|
||||
'total_curtailment_wind_ratio': float, # 实际弃风率
|
||||
'total_curtailment_solar_ratio': float, # 实际弃光率
|
||||
'total_grid_feed_in_ratio': float, # 实际上网电量比例
|
||||
'energy_balance_check': bool, # 能量平衡校验结果
|
||||
'capacity_limit_reached': bool, # 是否达到容量上限
|
||||
'theoretical_optimal_capacity': float, # 理论最优容量(如果找到可行解)
|
||||
'max_storage_limit': float # 储能容量上限设置值
|
||||
}
|
||||
```
|
||||
|
||||
## 算法原理
|
||||
|
||||
### 电能平衡原则
|
||||
程序遵循电能平衡原则:
|
||||
```
|
||||
总发电量 + 储能放电/效率 = 总负荷 + 储能充电×效率 + 弃风弃光 + 上网电量
|
||||
```
|
||||
|
||||
### 优化算法
|
||||
采用二分搜索算法寻找满足所有约束的最小储能容量:
|
||||
1. 设置搜索边界(0到最大可能容量或用户设定的上限)
|
||||
2. 迭代测试中间容量
|
||||
3. 验证所有约束条件
|
||||
4. 调整搜索范围直到收敛
|
||||
|
||||
### 储能容量上限处理
|
||||
当设置了`max_storage_capacity`参数时:
|
||||
1. 搜索范围上限被限制为设定值
|
||||
2. 如果在容量限制内无法找到满足所有约束的解,程序会:
|
||||
- 输出警告信息
|
||||
- 使用最大允许容量计算结果
|
||||
- 返回`capacity_limit_reached=True`标记
|
||||
- 某些约束条件可能无法满足
|
||||
|
||||
### 购电功能处理
|
||||
当设置`max_grid_ratio`为负值时:
|
||||
1. 系统允许从电网购电,负值表示最大购电比例
|
||||
2. 约束条件调整为:实际购电比例 ≥ 设定的购电比例
|
||||
3. 在结果中,负的上网电量表示购电量
|
||||
4. 适用于负荷高峰期本地发电不足的场景
|
||||
|
||||
### 约束条件处理
|
||||
1. **弃风弃光约束**:控制可再生能源弃用比例
|
||||
2. **上网电量约束**:限制向电网输送电量比例
|
||||
3. **储能运行约束**:考虑容量、效率和功率限制
|
||||
4. **周期平衡约束**:确保储能状态恢复到初始值
|
||||
|
||||
## 可视化功能
|
||||
|
||||
### 基础图表(main.py)
|
||||
- 发电与负荷曲线对比
|
||||
- 储能充放电功率柱状图
|
||||
- 储能状态变化曲线
|
||||
|
||||
### 高级图表(advanced_visualization.py)
|
||||
- 综合分析图表(包含多个子图)
|
||||
- 时间序列图表
|
||||
- 能量分配饼图
|
||||
- 发电构成饼图
|
||||
- 关键指标展示
|
||||
|
||||
## 性能说明
|
||||
|
||||
- **24小时数据处理**:通常 < 1秒
|
||||
- **8760小时数据处理**:通常 < 10秒
|
||||
- **内存使用**:8760小时数据约需要100-200MB额外内存
|
||||
|
||||
## 示例输出
|
||||
|
||||
### 24小时数据示例
|
||||
```
|
||||
使用24小时示例数据...
|
||||
正在计算最优储能容量...
|
||||
正在绘制系统运行曲线...
|
||||
|
||||
=== 系统运行统计 ===
|
||||
所需储能总容量: 217.00 MWh
|
||||
最大储能状态: 21.60 MWh
|
||||
最小储能状态: 0.00 MWh
|
||||
总充电量: 42.00 MWh
|
||||
总放电量: 11.60 MWh
|
||||
弃风率: 0.000
|
||||
弃光率: 0.000
|
||||
上网电量比例: 0.000
|
||||
|
||||
曲线图已保存为 'system_curves.png'
|
||||
```
|
||||
|
||||
### 8760小时数据示例
|
||||
```
|
||||
生成8760小时全年数据...
|
||||
数据长度: 8760 小时
|
||||
正在计算最优储能容量...
|
||||
正在绘制系统运行曲线...
|
||||
|
||||
=== 系统运行统计 ===
|
||||
所需储能总容量: 79211.74 MWh
|
||||
最大储能状态: 7343.76 MWh
|
||||
最小储能状态: 0.00 MWh
|
||||
总充电量: 17621.88 MWh
|
||||
总放电量: 14281.12 MWh
|
||||
弃风率: 0.000
|
||||
弃光率: 0.000
|
||||
上网电量比例: 0.000
|
||||
|
||||
曲线图已保存为 'system_curves.png'
|
||||
```
|
||||
|
||||
## 测试用例
|
||||
|
||||
程序包含完整的测试套件:
|
||||
|
||||
### 基础功能测试
|
||||
- 输入验证测试
|
||||
- 电能平衡计算测试
|
||||
- 约束条件检查测试
|
||||
- 储能容量优化测试
|
||||
|
||||
### 边界条件测试
|
||||
- 零可再生能源场景
|
||||
- 极端负荷场景
|
||||
- 完美平衡场景
|
||||
- 高可再生能源渗透场景
|
||||
|
||||
### 8760小时数据测试
|
||||
- 全年数据验证测试
|
||||
- 长时间序列优化测试
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
D:\code\storage\
|
||||
├── storage_optimization.py # 主程序文件(储能容量优化)
|
||||
├── economic_optimization.py # 经济优化模块
|
||||
├── excel_reader.py # Excel数据读取和模板生成
|
||||
├── main.py # 基础可视化程序
|
||||
├── advanced_visualization.py # 高级可视化程序
|
||||
├── example_usage.py # 使用示例
|
||||
├── requirements.txt # 依赖包列表
|
||||
├── pyproject.toml # 项目配置文件
|
||||
├── main.spec # PyInstaller配置文件
|
||||
└── README.md # 本文档
|
||||
```
|
||||
|
||||
### 主要模块说明
|
||||
|
||||
- **storage_optimization.py**: 储能容量优化核心算法
|
||||
- **economic_optimization.py**: 经济优化模块,包含LCOE、NPV计算
|
||||
- **excel_reader.py**: Excel文件读取、验证和模板生成
|
||||
- **main.py**: 基础可视化和系统分析
|
||||
- **advanced_visualization.py**: 高级图表和综合分析
|
||||
|
||||
### 生成的文件
|
||||
|
||||
运行程序后会生成以下文件:
|
||||
- `system_curves.png`: 系统运行曲线图
|
||||
- `time_series_curves.png`: 时间序列曲线图
|
||||
- `comprehensive_analysis.png`: 综合分析图
|
||||
- `economic_analysis.png`: 经济分析图
|
||||
- `economic_optimization_report_*.xlsx`: 经济优化报告
|
||||
- `storage_optimization_results_*.xlsx`: 储能优化结果
|
||||
|
||||
## 扩展性
|
||||
|
||||
程序设计具有良好的扩展性:
|
||||
- 易于添加更多能源类型(如水电、核电等)
|
||||
- 支持不同时间分辨率调整
|
||||
- 预留了储能成本和寿命模型接口
|
||||
- 可集成更复杂的优化算法
|
||||
- **经济模块扩展**:支持更多经济指标和优化目标
|
||||
- **Excel集成**:易于添加新的参数类型和配置选项
|
||||
- **可视化扩展**:模块化的图表生成系统
|
||||
|
||||
## 使用场景
|
||||
|
||||
适用于以下领域:
|
||||
- 电力系统规划
|
||||
- 可再生能源集成
|
||||
- 储能系统设计
|
||||
- 能源政策分析
|
||||
- 学术研究
|
||||
- **经济性评估**:项目投资决策和成本效益分析
|
||||
- **储能配置优化**:基于经济指标的最优储能容量确定
|
||||
- **能源交易分析**:购电成本和上网收益分析
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有输入数据必须为非负值
|
||||
2. 约束参数必须在0.0-1.0范围内
|
||||
3. 储能效率必须大于0且小于等于1.0
|
||||
4. 充放电倍率必须大于0
|
||||
5. 8760小时数据处理需要足够内存和时间
|
||||
|
||||
## 开发要求完成情况
|
||||
|
||||
✅ **代码质量**: 详细注释,解释关键计算步骤
|
||||
✅ **测试覆盖**: 包含单元测试和验证测试
|
||||
✅ **错误处理**: 处理无效输入并提供有意义的错误信息
|
||||
✅ **示例数据**: 提供示例数据和预期结果
|
||||
✅ **扩展性**: 设计允许未来增加更多能源类型
|
||||
✅ **可视化**: 提供丰富的图表展示功能
|
||||
✅ **多时间尺度**: 支持24小时和8760小时数据
|
||||
|
||||
## 验证状态
|
||||
|
||||
经过完整的测试验证,程序满足所有需求:
|
||||
- **功能完整性**: ✅ 实现了所有要求的功能模块
|
||||
- **算法正确性**: ✅ 优化算法逻辑正确,考虑了所有约束条件
|
||||
- **接口规范性**: ✅ 输入输出格式符合要求
|
||||
- **代码质量**: ✅ 代码结构清晰,注释详细,易于维护
|
||||
|
||||
**验证状态:✅ 通过**
|
||||
|
||||
---
|
||||
|
||||
*该项目仅供学习和研究使用。*
|
||||
86
docs/README_exe.md
Normal file
86
docs/README_exe.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 多能互补系统储能容量优化程序 - 独立可执行版本
|
||||
|
||||
## 文件说明
|
||||
|
||||
- **文件名**: `storage_optimization.exe`
|
||||
- **大小**: 约 52.7 MB
|
||||
- **位置**: `dist/storage_optimization.exe`
|
||||
- **类型**: 独立可执行程序(无需安装Python环境)
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 基本用法
|
||||
|
||||
```bash
|
||||
# 使用24小时示例数据
|
||||
storage_optimization.exe
|
||||
|
||||
# 从Excel文件读取数据
|
||||
storage_optimization.exe --excel data.xlsx
|
||||
|
||||
# 显示图形窗口
|
||||
storage_optimization.exe --excel data.xlsx --show
|
||||
|
||||
# 只显示图形窗口,不保存文件
|
||||
storage_optimization.exe --excel data.xlsx --display-only
|
||||
|
||||
# 创建Excel模板
|
||||
storage_optimization.exe --create-template 8760
|
||||
storage_optimization.exe --create-template 24
|
||||
```
|
||||
|
||||
### Excel文件格式要求
|
||||
|
||||
Excel文件应包含以下列:
|
||||
- 小时
|
||||
- 光伏出力(MW)
|
||||
- 风电出力(MW)
|
||||
- 火电出力(MW)
|
||||
- 负荷需求(MW)
|
||||
|
||||
可选的系统参数工作表(工作表名为"参数"):
|
||||
- 参数名称:最大弃风率、最大弃光率、最大上网电量比例等
|
||||
- 参数值:对应的数值
|
||||
- 参数说明:参数说明
|
||||
|
||||
### 输出结果
|
||||
|
||||
程序运行后会生成:
|
||||
1. **控制台输出**:系统运行统计、弃风弃光统计、电网交互统计、新能源统计
|
||||
2. **Excel结果文件**:`storage_optimization_results_YYYYMMDD_HHMMSS.xlsx`
|
||||
- 运行数据:小时级运行数据
|
||||
- 统计结果:关键性能指标
|
||||
- 系统参数:输入参数汇总
|
||||
- 说明:文件使用说明
|
||||
3. **图形文件**:`system_curves.png`(系统运行曲线图)
|
||||
|
||||
## 功能特点
|
||||
|
||||
- ✅ 完全独立运行,无需安装Python环境
|
||||
- ✅ 支持Excel数据输入和模板生成
|
||||
- ✅ 自动储能容量优化
|
||||
- ✅ 弃风弃光智能处理(已修复bug)
|
||||
- ✅ 新能源利用率统计
|
||||
- ✅ 图形化结果展示
|
||||
- ✅ 详细Excel报告导出
|
||||
|
||||
## 系统要求
|
||||
|
||||
- Windows操作系统
|
||||
- 至少100MB可用磁盘空间
|
||||
- 支持Excel文件(.xlsx格式)
|
||||
|
||||
## 故障排除
|
||||
|
||||
如果程序无法运行:
|
||||
1. 检查Windows版本兼容性
|
||||
2. 确保有足够的磁盘空间
|
||||
3. 检查Excel文件格式是否正确
|
||||
4. 确保没有杀毒软件阻止程序运行
|
||||
|
||||
## 技术信息
|
||||
|
||||
- 基于Python 3.14.0
|
||||
- 使用PyInstaller打包
|
||||
- 包含所有必需依赖库
|
||||
- 支持中文显示和输入
|
||||
Reference in New Issue
Block a user