完成基本多场景功能。

This commit is contained in:
dmy
2025-12-27 19:15:56 +08:00
parent 2956bc80fb
commit b55f083be8
23 changed files with 3910 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
"""测试储能容量计算"""
import sys
sys.path.append('src')
from storage_optimization import calculate_energy_balance, SystemParameters
# 使用简单的示例数据
solar_output = [0.0] * 6 + [10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 50.0, 40.0, 30.0, 20.0, 10.0, 0.0] + [0.0] * 6
wind_output = [20.0, 30.0, 40.0, 30.0, 20.0, 10.0] * 4
thermal_output = [50.0] * 24
load_demand = [30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 140.0, 160.0, 180.0, 200.0, 180.0,
160.0, 140.0, 120.0, 100.0, 80.0, 60.0, 50.0, 40.0, 30.0, 20.0, 10.0, 20.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,
max_storage_capacity=200.0 # 设置储能容量上限
)
# 测试不同储能容量下的储能状态
test_capacities = [50.0, 100.0, 150.0, 200.0]
print("="*70)
print("测试不同储能容量下的实际最大储能状态")
print("="*70)
print(f"储能容量上限: {params.max_storage_capacity} MWh")
print(f"充放电倍率: {params.charge_rate} C\n")
for capacity in test_capacities:
result = calculate_energy_balance(
solar_output, wind_output, thermal_output, load_demand,
params, capacity, initial_soc=0.0
)
storage_profile = result['storage_profile']
max_storage_state = max(storage_profile)
min_storage_state = min(storage_profile)
total_curtailed = sum(result['curtailed_wind']) + sum(result['curtailed_solar'])
print(f"储能容量: {capacity:.1f} MWh")
print(f" 实际最大储能状态: {max_storage_state:.2f} MWh ({max_storage_state/capacity*100:.1f}%)")
print(f" 实际最小储能状态: {min_storage_state:.2f} MWh")
print(f" 总弃电量: {total_curtailed:.2f} MWh")
# 检查是否有充电受限的情况
charge_profile = result['charge_profile']
discharge_profile = result['discharge_profile']
max_possible_charge = capacity * params.charge_rate # 最大充电功率
max_possible_discharge = capacity * params.discharge_rate # 最大放电功率
max_actual_charge = max(charge_profile)
max_actual_discharge = max(discharge_profile)
print(f" 最大充电功率: {max_actual_charge:.2f} MW (限制: {max_possible_charge:.2f} MW)")
print(f" 最大放电功率: {max_actual_discharge:.2f} MW (限制: {max_possible_discharge:.2f} MW)")
# 检查是否达到功率限制
charge_limited = any(c >= max_possible_charge * 0.99 for c in charge_profile)
discharge_limited = any(d >= max_possible_discharge * 0.99 for d in discharge_profile)
if charge_limited:
print(f" ⚠ 充电功率受限")
if discharge_limited:
print(f" ⚠ 放电功率受限")
# 检查储能容量利用率
utilization = max_storage_state / capacity * 100
if utilization < 90:
print(f" ⚠ 储能容量利用率低 ({utilization:.1f}%)")
print()
print("="*70)
print("分析:为什么实际储能状态达不到设定的储能容量上限?")
print("="*70)
print("可能的原因:")
print("1. 电力供需平衡:如果发电量和负荷基本平衡,不需要大量储能")
print("2. 充放电倍率限制:充放电功率受限,无法快速填满储能")
print("3. 约束条件限制:弃风弃光率、上网电量比例等约束限制了储能使用")
print("4. 周期性平衡要求:储能需要在周期结束时回到接近初始状态")
print("5. 初始SOC设置初始SOC从0开始可能需要多周期才能稳定")