""" 测试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()