103 lines
3.6 KiB
Python
103 lines
3.6 KiB
Python
|
|
"""
|
|||
|
|
创建一个明确的测试算例,验证只有风电时弃电量不受限制
|
|||
|
|
这个测试会创建一个风电远超负荷的场景,来验证弃风是否真的不受限制
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import sys
|
|||
|
|
import os
|
|||
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'src'))
|
|||
|
|
|
|||
|
|
import pandas as pd
|
|||
|
|
import numpy as np
|
|||
|
|
|
|||
|
|
def create_extreme_wind_test():
|
|||
|
|
"""创建极端风电测试场景:风电远超负荷"""
|
|||
|
|
|
|||
|
|
# 创建24小时数据
|
|||
|
|
hours = list(range(1, 25))
|
|||
|
|
|
|||
|
|
# 风电出力:设计为远超负荷,强制产生弃风
|
|||
|
|
wind_output = [200, 180, 160, 140, 120, 100, 80, 60, 50, 40, 30, 25, 20, 15, 10, 8, 6, 5, 4, 3, 2, 1, 0.5, 0.2]
|
|||
|
|
|
|||
|
|
# 光伏出力:全部为0
|
|||
|
|
solar_output = [0.0] * 24
|
|||
|
|
|
|||
|
|
# 火电出力:全部为0
|
|||
|
|
thermal_output = [0.0] * 24
|
|||
|
|
|
|||
|
|
# 负荷需求:较低,确保风电远超负荷
|
|||
|
|
load_demand = [20.0] * 24 # 只有20MW负荷,风电最高200MW
|
|||
|
|
|
|||
|
|
# 创建DataFrame
|
|||
|
|
data = {
|
|||
|
|
'小时': hours,
|
|||
|
|
'光伏出力(MW)': solar_output,
|
|||
|
|
'风电出力(MW)': wind_output,
|
|||
|
|
'火电出力(MW)': thermal_output,
|
|||
|
|
'负荷需求(MW)': load_demand
|
|||
|
|
}
|
|||
|
|
df = pd.DataFrame(data)
|
|||
|
|
|
|||
|
|
# 保存为Excel文件
|
|||
|
|
excel_file = 'extreme_wind_test.xlsx'
|
|||
|
|
df.to_excel(excel_file, index=False, sheet_name='data')
|
|||
|
|
print(f"已创建极端风电测试文件: {excel_file}")
|
|||
|
|
print(f"风电总出力: {sum(wind_output):.1f} MWh")
|
|||
|
|
print(f"负荷总需求: {sum(load_demand):.1f} MWh")
|
|||
|
|
print(f"风电超额: {sum(wind_output) - sum(load_demand):.1f} MWh (应该被弃掉)")
|
|||
|
|
|
|||
|
|
return excel_file
|
|||
|
|
|
|||
|
|
def create_extreme_solar_test():
|
|||
|
|
"""创建极端光伏测试场景:光伏远超负荷"""
|
|||
|
|
|
|||
|
|
# 创建24小时数据
|
|||
|
|
hours = list(range(1, 25))
|
|||
|
|
|
|||
|
|
# 风电出力:全部为0
|
|||
|
|
wind_output = [0.0] * 24
|
|||
|
|
|
|||
|
|
# 光伏出力:设计为远超负荷,强制产生弃光
|
|||
|
|
solar_output = [0, 0, 0, 0, 0, 0, 50, 100, 150, 200, 180, 150, 120, 100, 80, 60, 40, 20, 10, 5, 2, 1, 0.5, 0.2]
|
|||
|
|
|
|||
|
|
# 火电出力:全部为0
|
|||
|
|
thermal_output = [0.0] * 24
|
|||
|
|
|
|||
|
|
# 负荷需求:较低,确保光伏远超负荷
|
|||
|
|
load_demand = [30.0] * 24 # 只有30MW负荷,光伏最高200MW
|
|||
|
|
|
|||
|
|
# 创建DataFrame
|
|||
|
|
data = {
|
|||
|
|
'小时': hours,
|
|||
|
|
'光伏出力(MW)': solar_output,
|
|||
|
|
'风电出力(MW)': wind_output,
|
|||
|
|
'火电出力(MW)': thermal_output,
|
|||
|
|
'负荷需求(MW)': load_demand
|
|||
|
|
}
|
|||
|
|
df = pd.DataFrame(data)
|
|||
|
|
|
|||
|
|
# 保存为Excel文件
|
|||
|
|
excel_file = 'extreme_solar_test.xlsx'
|
|||
|
|
df.to_excel(excel_file, index=False, sheet_name='data')
|
|||
|
|
print(f"已创建极端光伏测试文件: {excel_file}")
|
|||
|
|
print(f"光伏总出力: {sum(solar_output):.1f} MWh")
|
|||
|
|
print(f"负荷总需求: {sum(load_demand):.1f} MWh")
|
|||
|
|
print(f"光伏超额: {sum(solar_output) - sum(load_demand):.1f} MWh (应该被弃掉)")
|
|||
|
|
|
|||
|
|
return excel_file
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
print("创建极端单一可再生能源测试文件...")
|
|||
|
|
wind_file = create_extreme_wind_test()
|
|||
|
|
print()
|
|||
|
|
solar_file = create_extreme_solar_test()
|
|||
|
|
print()
|
|||
|
|
print(f"测试文件已创建完成:")
|
|||
|
|
print(f"1. {wind_file} - 极端单一风电场景 (风电远超负荷)")
|
|||
|
|
print(f"2. {solar_file} - 极端单一光伏场景 (光伏远超负荷)")
|
|||
|
|
print(f"\n预期结果:")
|
|||
|
|
print(f"- 如果弃电量不受限制,应该能看到大量的弃风/弃光")
|
|||
|
|
print(f"- 如果弃电量受限制,系统会通过其他方式处理超额电力")
|
|||
|
|
print(f"\n可以使用以下命令测试:")
|
|||
|
|
print(f"uv run python main.py --excel {wind_file}")
|
|||
|
|
print(f"uv run python main.py --excel {solar_file}")
|