完成基本多场景功能。
This commit is contained in:
184
tests/test_excel_parameters.py
Normal file
184
tests/test_excel_parameters.py
Normal file
@@ -0,0 +1,184 @@
|
||||
"""
|
||||
测试Excel参数设置功能
|
||||
|
||||
该程序演示如何修改Excel参数工作表中的参数,并验证参数是否被正确读取。
|
||||
|
||||
作者: iFlow CLI
|
||||
创建日期: 2025-12-25
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'src'))
|
||||
|
||||
import pandas as pd
|
||||
from excel_reader import read_excel_data, validate_system_parameters
|
||||
from storage_optimization import optimize_storage_capacity
|
||||
|
||||
|
||||
def test_parameter_modification():
|
||||
"""测试参数修改功能"""
|
||||
print("=== 测试Excel参数设置功能 ===\n")
|
||||
|
||||
# 1. 读取原始参数
|
||||
print("1. 读取原始Excel参数...")
|
||||
original_data = read_excel_data('data_template_24.xlsx', include_parameters=True)
|
||||
original_params = original_data['system_parameters']
|
||||
|
||||
print("原始参数:")
|
||||
print(f" 最大弃风率: {original_params.max_curtailment_wind}")
|
||||
print(f" 最大弃光率: {original_params.max_curtailment_solar}")
|
||||
print(f" 最大上网电量比例: {original_params.max_grid_ratio}")
|
||||
print(f" 储能效率: {original_params.storage_efficiency}")
|
||||
print(f" 放电倍率: {original_params.discharge_rate}")
|
||||
print(f" 充电倍率: {original_params.charge_rate}")
|
||||
print(f" 最大储能容量: {original_params.max_storage_capacity}")
|
||||
|
||||
# 2. 使用原始参数进行优化
|
||||
print("\n2. 使用原始参数进行储能容量优化...")
|
||||
original_result = optimize_storage_capacity(
|
||||
original_data['solar_output'],
|
||||
original_data['wind_output'],
|
||||
original_data['thermal_output'],
|
||||
original_data['load_demand'],
|
||||
original_params
|
||||
)
|
||||
|
||||
print(f"原始参数优化结果:")
|
||||
print(f" 所需储能容量: {original_result['required_storage_capacity']:.2f} MWh")
|
||||
print(f" 弃风率: {original_result['total_curtailment_wind_ratio']:.3f}")
|
||||
print(f" 弃光率: {original_result['total_curtailment_solar_ratio']:.3f}")
|
||||
print(f" 上网电量比例: {original_result['total_grid_feed_in_ratio']:.3f}")
|
||||
|
||||
# 3. 修改Excel参数
|
||||
print("\n3. 修改Excel参数...")
|
||||
|
||||
# 创建测试用的参数DataFrame
|
||||
new_params_df = pd.DataFrame({
|
||||
'参数名称': [
|
||||
'最大弃风率',
|
||||
'最大弃光率',
|
||||
'最大上网电量比例',
|
||||
'储能效率',
|
||||
'放电倍率',
|
||||
'充电倍率',
|
||||
'最大储能容量'
|
||||
],
|
||||
'参数值': [
|
||||
0.15, # 增加弃风率
|
||||
0.12, # 增加弃光率
|
||||
0.25, # 增加上网电量比例
|
||||
0.85, # 降低储能效率
|
||||
1.2, # 增加放电倍率
|
||||
1.2, # 增加充电倍率
|
||||
1000.0 # 设置储能容量上限
|
||||
],
|
||||
'参数说明': [
|
||||
'允许的最大弃风率(0.0-1.0)',
|
||||
'允许的最大弃光率(0.0-1.0)',
|
||||
'允许的最大上网电量比例(0.0-∞,只限制上网电量)',
|
||||
'储能充放电效率(0.0-1.0)',
|
||||
'储能放电倍率(C-rate,>0)',
|
||||
'储能充电倍率(C-rate,>0)',
|
||||
'储能容量上限(MWh,空表示无限制)'
|
||||
],
|
||||
'取值范围': [
|
||||
'0.0-1.0',
|
||||
'0.0-1.0',
|
||||
'≥0.0',
|
||||
'0.0-1.0',
|
||||
'>0',
|
||||
'>0',
|
||||
'>0或空'
|
||||
],
|
||||
'默认值': [
|
||||
'0.1',
|
||||
'0.1',
|
||||
'0.2',
|
||||
'0.9',
|
||||
'1.0',
|
||||
'1.0',
|
||||
'无限制'
|
||||
]
|
||||
})
|
||||
|
||||
# 读取原始Excel文件
|
||||
with pd.ExcelFile('data_template_24.xlsx') as xls:
|
||||
data_df = pd.read_excel(xls, sheet_name='数据')
|
||||
description_df = pd.read_excel(xls, sheet_name='说明')
|
||||
|
||||
# 保存修改后的Excel文件
|
||||
with pd.ExcelWriter('data_template_24_modified.xlsx', engine='openpyxl') as writer:
|
||||
data_df.to_excel(writer, sheet_name='数据', index=False)
|
||||
new_params_df.to_excel(writer, sheet_name='参数', index=False)
|
||||
description_df.to_excel(writer, sheet_name='说明', index=False)
|
||||
|
||||
print("已创建修改后的Excel文件: data_template_24_modified.xlsx")
|
||||
print("修改后的参数:")
|
||||
print(f" 最大弃风率: 0.15 (原: {original_params.max_curtailment_wind})")
|
||||
print(f" 最大弃光率: 0.12 (原: {original_params.max_curtailment_solar})")
|
||||
print(f" 最大上网电量比例: 0.25 (原: {original_params.max_grid_ratio})")
|
||||
print(f" 储能效率: 0.85 (原: {original_params.storage_efficiency})")
|
||||
print(f" 放电倍率: 1.2 (原: {original_params.discharge_rate})")
|
||||
print(f" 充电倍率: 1.2 (原: {original_params.charge_rate})")
|
||||
print(f" 最大储能容量: 1000.0 (原: {original_params.max_storage_capacity})")
|
||||
|
||||
# 4. 读取修改后的参数
|
||||
print("\n4. 读取修改后的参数...")
|
||||
modified_data = read_excel_data('data_template_24_modified.xlsx', include_parameters=True)
|
||||
modified_params = modified_data['system_parameters']
|
||||
|
||||
print("修改后的参数读取结果:")
|
||||
print(f" 最大弃风率: {modified_params.max_curtailment_wind}")
|
||||
print(f" 最大弃光率: {modified_params.max_curtailment_solar}")
|
||||
print(f" 最大上网电量比例: {modified_params.max_grid_ratio}")
|
||||
print(f" 储能效率: {modified_params.storage_efficiency}")
|
||||
print(f" 放电倍率: {modified_params.discharge_rate}")
|
||||
print(f" 充电倍率: {modified_params.charge_rate}")
|
||||
print(f" 最大储能容量: {modified_params.max_storage_capacity}")
|
||||
|
||||
# 5. 验证修改后的参数
|
||||
validation = validate_system_parameters(modified_params)
|
||||
if validation['valid']:
|
||||
print("[OK] 修改后的参数验证通过")
|
||||
else:
|
||||
print("[ERROR] 修改后的参数验证失败:")
|
||||
for error in validation['errors']:
|
||||
print(f" - {error}")
|
||||
|
||||
if validation['warnings']:
|
||||
print("[WARNING] 修改后的参数警告:")
|
||||
for warning in validation['warnings']:
|
||||
print(f" - {warning}")
|
||||
|
||||
# 6. 使用修改后的参数进行优化
|
||||
print("\n5. 使用修改后的参数进行储能容量优化...")
|
||||
modified_result = optimize_storage_capacity(
|
||||
modified_data['solar_output'],
|
||||
modified_data['wind_output'],
|
||||
modified_data['thermal_output'],
|
||||
modified_data['load_demand'],
|
||||
modified_params
|
||||
)
|
||||
|
||||
print(f"修改后参数优化结果:")
|
||||
print(f" 所需储能容量: {modified_result['required_storage_capacity']:.2f} MWh")
|
||||
print(f" 弃风率: {modified_result['total_curtailment_wind_ratio']:.3f}")
|
||||
print(f" 弃光率: {modified_result['total_curtailment_solar_ratio']:.3f}")
|
||||
print(f" 上网电量比例: {modified_result['total_grid_feed_in_ratio']:.3f}")
|
||||
print(f" 容量限制是否达到: {modified_result['capacity_limit_reached']}")
|
||||
|
||||
# 7. 对比结果
|
||||
print("\n6. 结果对比:")
|
||||
print(f"储能容量变化: {original_result['required_storage_capacity']:.2f} -> {modified_result['required_storage_capacity']:.2f} MWh")
|
||||
print(f"弃风率变化: {original_result['total_curtailment_wind_ratio']:.3f} -> {modified_result['total_curtailment_wind_ratio']:.3f}")
|
||||
print(f"弃光率变化: {original_result['total_curtailment_solar_ratio']:.3f} -> {modified_result['total_curtailment_solar_ratio']:.3f}")
|
||||
print(f"上网电量比例变化: {original_result['total_grid_feed_in_ratio']:.3f} -> {modified_result['total_grid_feed_in_ratio']:.3f}")
|
||||
|
||||
print("\n=== 测试完成 ===")
|
||||
print("Excel参数设置功能测试成功!")
|
||||
print("用户可以通过修改Excel文件中的'参数'工作表来调整系统参数。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_parameter_modification()
|
||||
Reference in New Issue
Block a user