excel结果中输出弃电量。
This commit is contained in:
121
docs/GRID_FEED_IN_RATIO_CALCULATION.md
Normal file
121
docs/GRID_FEED_IN_RATIO_CALCULATION.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# 上网电量比例计算方法说明
|
||||
|
||||
## 计算公式
|
||||
|
||||
**上网电量比例** = 总上网电量 / 总发电量
|
||||
|
||||
其中:
|
||||
- **总上网电量** = sum(grid_feed_in) - 只计算正值(上网电量)
|
||||
- **总发电量** = 火电发电量 + 实际风电发电量 + 实际光伏发电量
|
||||
|
||||
## 详细计算过程
|
||||
|
||||
### 1. 基础数据获取
|
||||
|
||||
在 [`check_constraints()`](src/storage_optimization.py:350) 函数中:
|
||||
|
||||
```python
|
||||
# 计算总量
|
||||
total_wind_potential = sum(wind_output) # 风电总潜力
|
||||
total_solar_potential = sum(solar_output) # 光伏总潜力
|
||||
total_thermal = sum(thermal_output) # 火电总量
|
||||
|
||||
total_curtailed_wind = sum(balance_result['curtailed_wind']) # 弃风总量
|
||||
total_curtailed_solar = sum(balance_result['curtailed_solar']) # 弃光总量
|
||||
total_grid_feed_in = sum(balance_result['grid_feed_in']) # 电网交互总量
|
||||
```
|
||||
|
||||
### 2. 计算实际发电量
|
||||
|
||||
```python
|
||||
# 实际发电量(考虑弃风弃光)
|
||||
actual_wind_generation = total_wind_potential - total_curtailed_wind
|
||||
actual_solar_generation = total_solar_potential - total_curtailed_solar
|
||||
total_generation = total_thermal + actual_wind_generation + actual_solar_generation
|
||||
```
|
||||
|
||||
### 3. 计算上网电量比例
|
||||
|
||||
```python
|
||||
actual_grid_feed_in_ratio = total_grid_feed_in / total_generation if total_generation > 0 else 0
|
||||
```
|
||||
|
||||
## 数据来源说明
|
||||
|
||||
### grid_feed_in 数据含义
|
||||
在 [`calculate_energy_balance()`](src/storage_optimization.py:107) 函数中:
|
||||
|
||||
- **正值** = 向电网输送的电量(上网)
|
||||
- **负值** = 从电网购买的电量(购电)
|
||||
|
||||
```python
|
||||
# 上网情况
|
||||
grid_feed_in[hour] = grid_feed_allowed # 正值
|
||||
|
||||
# 购电情况
|
||||
grid_feed_in[hour] = -remaining_deficit # 负值
|
||||
```
|
||||
|
||||
### 分母说明
|
||||
**总发电量**包括:
|
||||
1. **火电发电量** - 全部计入(不考虑弃火电)
|
||||
2. **实际风电发电量** = 风电总潜力 - 弃风量
|
||||
3. **实际光伏发电量** = 光伏总潜力 - 弃光量
|
||||
|
||||
## 计算示例
|
||||
|
||||
假设有如下数据:
|
||||
- 火电总量:120 MWh (24小时 × 5MW)
|
||||
- 风电总量:72 MWh (24小时 × 平均3MW)
|
||||
- 光伏总量:48 MWh (24小时 × 平均2MW)
|
||||
- 弃风量:7.2 MWh
|
||||
- 弃光量:4.8 MWh
|
||||
- 上网电量:10 MWh
|
||||
|
||||
计算过程:
|
||||
```python
|
||||
# 1. 实际发电量
|
||||
actual_wind = 72 - 7.2 = 64.8 MWh
|
||||
actual_solar = 48 - 4.8 = 43.2 MWh
|
||||
total_generation = 120 + 64.8 + 43.2 = 228 MWh
|
||||
|
||||
# 2. 上网电量比例
|
||||
grid_feed_in_ratio = 10 / 228 = 0.0438 ≈ 4.38%
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
### 1. 购电情况的处理
|
||||
- 如果系统净购电(total_grid_feed_in < 0),上网电量比例仍按公式计算
|
||||
- 负的上网电量会降低比例值
|
||||
|
||||
### 2. 零分母处理
|
||||
- 如果总发电量为0,比例设为0,避免除零错误
|
||||
|
||||
### 3. 约束检查
|
||||
在优化算法中,上网电量比例用于约束检查:
|
||||
```python
|
||||
grid_constraint_satisfied = constraint_results['total_grid_feed_in_ratio'] <= params.max_grid_ratio
|
||||
```
|
||||
|
||||
## 输出位置
|
||||
|
||||
上网电量比例在以下位置输出:
|
||||
1. **控制台输出**:[`main.py:749`](main.py:749)
|
||||
```python
|
||||
print(f"实际上网电量比例: {result['total_grid_feed_in_ratio']:.3f}")
|
||||
```
|
||||
|
||||
2. **Excel统计结果**:[`main.py:393`](main.py:393)
|
||||
```python
|
||||
f"{result['total_grid_feed_in_ratio']:.3f}",
|
||||
```
|
||||
|
||||
3. **可视化显示**:[`src/advanced_visualization.py:158`](src/advanced_visualization.py:158)
|
||||
```python
|
||||
上网电量比例: {result['total_grid_feed_in_ratio']:.1%}
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
上网电量比例反映的是系统向电网输送电量占总发电量的比例,是评估系统电网交互特性的重要指标。该比例越低,说明系统越倾向于本地消纳新能源;比例越高,说明系统向电网输出的电量越多。
|
||||
Reference in New Issue
Block a user