134 lines
4.6 KiB
Markdown
134 lines
4.6 KiB
Markdown
|
|
# 弃电损失量功能增强文档
|
|||
|
|
|
|||
|
|
## 修改概述
|
|||
|
|
|
|||
|
|
在用户要求下,对 `main.py` 文件的 Excel 输出功能进行了增强,新增了**弃电损失量**相关的统计和输出。
|
|||
|
|
|
|||
|
|
## 主要修改内容
|
|||
|
|
|
|||
|
|
### 1. 统计结果工作表增强
|
|||
|
|
|
|||
|
|
在 `export_results_to_excel` 函数的 `stats_df` 中新增了以下指标:
|
|||
|
|
|
|||
|
|
| 新增指标 | 说明 | 单位 |
|
|||
|
|
|---------|------|------|
|
|||
|
|
| 总弃风电量 | 全部时间的弃风量总和 | MWh |
|
|||
|
|
| 总弃光电量 | 全部时间的弃光量总和 | MWh |
|
|||
|
|
| 总弃电量 | 弃风量 + 弃光量 | MWh |
|
|||
|
|
| 弃电损失比例 | 总弃电量 / 总潜在发电量 | % |
|
|||
|
|
|
|||
|
|
**代码位置**:[`main.py:374-377`](main.py:374-377)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 计算弃电损失量
|
|||
|
|
total_curtail_wind = sum(result['curtailed_wind'])
|
|||
|
|
total_curtail_solar = sum(result['curtailed_solar'])
|
|||
|
|
total_curtail_energy = total_curtail_wind + total_curtail_solar
|
|||
|
|
|
|||
|
|
# 计算总潜在发电量
|
|||
|
|
total_potential_generation = sum(solar_output) + sum(wind_output) + sum(thermal_output)
|
|||
|
|
curtailment_loss_ratio = (total_curtail_energy / total_potential_generation * 100) if total_potential_generation > 0 else 0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 运行数据工作表增强
|
|||
|
|
|
|||
|
|
在 `data_df` 中新增了以下列:
|
|||
|
|
|
|||
|
|
| 新增列名 | 说明 | 计算方式 |
|
|||
|
|
|---------|------|----------|
|
|||
|
|
| 弃电损失量(MW) | 每小时的弃电损失量 | 弃风量 + 弃光量 |
|
|||
|
|
| 累计弃电量(MWh) | 从开始到当前的累计弃电量 | 逐小时累加弃电损失量 |
|
|||
|
|
|
|||
|
|
**代码位置**:[`main.py:323-348`](main.py:323-348)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 计算弃电损失量(弃风+弃光)
|
|||
|
|
curtailment_loss = [result['curtailed_wind'][i] + result['curtailed_solar'][i] for i in range(len(result['curtailed_wind']))]
|
|||
|
|
|
|||
|
|
# 计算累计弃电损失量
|
|||
|
|
cumulative_curtailment = []
|
|||
|
|
cumulative = 0
|
|||
|
|
for loss in curtailment_loss:
|
|||
|
|
cumulative += loss
|
|||
|
|
cumulative_curtailment.append(cumulative)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 功能特点
|
|||
|
|
|
|||
|
|
### 1. 完整的弃电损失分析
|
|||
|
|
- **小时级分析**:`弃电损失量(MW)` 提供每小时的弃电情况
|
|||
|
|
- **累计分析**:`累计弃电量(MWh)` 提供弃电的累积趋势
|
|||
|
|
- **总量统计**:总弃风量、总弃光量、总弃电量的完整统计
|
|||
|
|
- **比例分析**:弃电损失比例,评估系统效率
|
|||
|
|
|
|||
|
|
### 2. 数据一致性保证
|
|||
|
|
- 运行数据中的累计弃电量 = 统计结果中的总弃电量
|
|||
|
|
- 弃电损失量 = 弃风量 + 弃光量(逐小时匹配)
|
|||
|
|
- 所有计算基于原始优化结果,确保数据一致性
|
|||
|
|
|
|||
|
|
### 3. 用户友好的输出
|
|||
|
|
- Excel文件中清晰的工作表分类
|
|||
|
|
- 中文列名,便于理解
|
|||
|
|
- 合理的单位标注(MW用于功率,MWh用于能量)
|
|||
|
|
|
|||
|
|
## 输出效果
|
|||
|
|
|
|||
|
|
### 统计结果工作表示例
|
|||
|
|
```
|
|||
|
|
指标 | 数值
|
|||
|
|
-------------------|------------------
|
|||
|
|
总弃风电量 | 12.50 MWh
|
|||
|
|
总弃光电量 | 8.30 MWh
|
|||
|
|
总弃电量 | 20.80 MWh
|
|||
|
|
弃电损失比例 | 2.34%
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 运行数据工作表新增列
|
|||
|
|
```
|
|||
|
|
小时 | 弃风量(MW) | 弃光量(MW) | 弃电损失量(MW) | 累计弃电量(MWh)
|
|||
|
|
-----|-----------|-----------|---------------|--------------
|
|||
|
|
1 | 0.5 | 0.3 | 0.8 | 0.8
|
|||
|
|
2 | 0.2 | 0.4 | 0.6 | 1.4
|
|||
|
|
3 | 0.0 | 0.5 | 0.5 | 1.9
|
|||
|
|
... | ... | ... | ... | ...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
1. **运行程序**:`python main.py --excel data.xlsx`
|
|||
|
|
2. **查看结果**:在生成的Excel文件中查看"统计结果"和"运行数据"工作表
|
|||
|
|
3. **分析弃电**:
|
|||
|
|
- 统计结果:了解总体弃电情况和损失比例
|
|||
|
|
- 运行数据:分析逐小时弃电模式和累计趋势
|
|||
|
|
|
|||
|
|
## 技术细节
|
|||
|
|
|
|||
|
|
### 计算公式
|
|||
|
|
- **弃电损失量** = 弃风量 + 弃光量
|
|||
|
|
- **累计弃电量** = Σ(弃电损失量) (逐小时累加)
|
|||
|
|
- **弃电损失比例** = (总弃电量 / 总潜在发电量) × 100%
|
|||
|
|
- **总潜在发电量** = 光伏总出力 + 风电总出力 + 火电总出力
|
|||
|
|
|
|||
|
|
### 数据来源
|
|||
|
|
- 基于 `storage_optimization.py` 中的 `result` 字典
|
|||
|
|
- 使用 `curtailed_wind` 和 `curtailed_solar` 数据
|
|||
|
|
- 确保与优化算法结果完全一致
|
|||
|
|
|
|||
|
|
## 兼容性
|
|||
|
|
|
|||
|
|
- ✅ 向后兼容:不影响原有功能
|
|||
|
|
- ✅ Excel格式:保持原有文件结构
|
|||
|
|
- ✅ 时间尺度:支持24小时和8760小时数据
|
|||
|
|
- ✅ 数据精度:保持原有计算精度
|
|||
|
|
|
|||
|
|
## 验证
|
|||
|
|
|
|||
|
|
创建了测试文件 `test_main_modifications.py` 用于验证功能正确性:
|
|||
|
|
- 验证Excel文件导出成功
|
|||
|
|
- 检查新增列是否正确添加
|
|||
|
|
- 验证数据计算的一致性
|
|||
|
|
- 确认统计结果的准确性
|
|||
|
|
|
|||
|
|
## 总结
|
|||
|
|
|
|||
|
|
此次修改成功地在Excel输出中增加了完整的弃电损失量分析功能,为用户提供了更详细和直观的弃电情况分析工具,有助于优化储能系统配置和运行策略。
|