储能容量优化配置, 遗传算法+cplex迭代求解综合能源双层规划 综合能源系统储能容量双层优化配置(遗传算法+CPLEX) 储能容量优化配置 遗传算法cplex迭代求解综合能源双层规划从能量供需平衡角度建立综合能源系统中储能设备优化配置双层模型。规划模型以全生命周期折算年储能投资总运维成本为目标和日综合能源系统运行成本最小为目标建立储能双层优化模型在典型日下根据用户侧冷/热/电用能需求进行分析采用遗传算法混合整数线性规划方法对优化模型求解。·这套模型是综合能源系统IES储能规划的经典双层优化框架上层用遗传算法GA优化储能容量/功率下层用CPLEX求解典型日最优调度迭代求解全生命周期成本最低的配置方案。下面给你讲清应用场景、建模思路并附上完整Python代码。一、模型应用场景综合能源系统冷/热/电储能规划确定最优储能容量/功率配置全生命周期经济性优化平衡投资成本与运行成本典型日调度优化根据用户侧冷/热/电负荷求解设备最优出力适用于园区级、楼宇级综合能源系统的储能规划与运行优化。二、双层模型核心逻辑层级优化目标决策变量求解方法约束条件上层全生命周期折算年成本最低储能投资运维系统运行成本储能容量、功率遗传算法GA投资预算、储能容量/功率上下限下层典型日运行成本最小购电/购气成本、设备运维成本各设备出力、储能充放电计划CPLEX混合整数线性规划MILP冷/热/电能量平衡、设备出力上下限、储能SOC约束数据传递上层将储能容量/功率传递给下层下层将日运行成本反馈给上层作为GA的适应度函数。三、Python实现代码含GACPLEX接口1. 依赖安装pipinstalldocplex deap numpy pandas2. 下层CPLEX典型日调度优化lower_layer.pyfromdocplex.mp.modelimportModelimportpandasaspddeflower_layer_optimization(ess_cap,ess_p,day_load_data): 下层典型日综合能源系统运行优化MILP :param ess_cap: 储能容量kWh :param ess_p: 储能功率kW :param day_load_data: 典型日冷/热/电负荷每小时数据 :return: 日运行成本 # 1. 基础参数T24# 典型日24小时dt1elec_price[0.3,0.3,0.3,0.3,0.3,0.5,0.5,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,1.0,1.0,1.0,0.8,0.5,0.3,0.3]# 分时电价gas_price2.5# 气价元/m³eta_chp_elec0.35# CHP发电效率eta_chp_heat0.45# CHP供热效率eta_abs0.7# 吸收式制冷效率cop_ac3.0# 电制冷COPsoc_min,soc_max0.2,0.9# 储能SOC上下限eta_ch,eta_dis0.9,0.9# 充放电效率# 2. 初始化模型mdlModel(nameIES_operation)# 3. 决策变量# 购电/购气grid_buymdl.continuous_var_list(T,namegrid_buy,lb0)gas_buymdl.continuous_var_list(T,namegas_buy,lb0)# 设备出力chp_elecmdl.continuous_var_list(T,namechp_elec,lb0,ub1000)chp_heatmdl.continuous_var_list(T,namechp_heat,lb0)ac_coldmdl.continuous_var_list(T,nameac_cold,lb0)abs_coldmdl.continuous_var_list(T,nameabs_cold,lb0)# 储能变量ess_socmdl.continuous_var_list(T1,nameess_soc,lbsoc_min*ess_cap,ubsoc_max*ess_cap)ess_chmdl.continuous_var_list(T,nameess_ch,lb0,ubess_p)ess_dismdl.continuous_var_list(T,nameess_dis,lb0,ubess_p)ess_binmdl.binary_var_list(T,nameess_bin)# 充放电互斥变量# 4. 目标函数日运行成本最小objmdl.sum(elec_price[t]*grid_buy[t]fortinrange(T))\ mdl.sum(gas_price*gas_buy[t]fortinrange(T))mdl.minimize(obj)# 5. 约束条件# 5.1 电平衡fortinrange(T):mdl.add_constraint(grid_buy[t]chp_elec[t]ess_dis[t]day_load_data[elec][t]ess_ch[t]ac_cold[t]/cop_ac)# 5.2 热平衡fortinrange(T):mdl.add_constraint(chp_heat[t]day_load_data[heat][t])# 5.3 冷平衡fortinrange(T):mdl.add_constraint(ac_cold[t]abs_cold[t]day_load_data[cold][t])# 5.4 CHP热电耦合fortinrange(T):mdl.add_constraint(chp_heat[t](gas_buy[t]*eta_chp_heat/eta_chp_elec)*chp_elec[t])# 5.5 吸收式制冷耦合fortinrange(T):mdl.add_constraint(abs_cold[t]chp_heat[t]*eta_abs)# 5.6 储能SOC递推mdl.add_constraint(ess_soc[0]0.5*ess_cap)# 初始SOCfortinrange(T):mdl.add_constraint(ess_soc[t1]ess_soc[t]eta_ch*ess_ch[t]*dt-ess_dis[t]*dt/eta_dis)mdl.add_constraint(ess_soc[T]0.5*ess_cap)# 日末SOC等于初始值# 5.7 充放电互斥fortinrange(T):mdl.add_constraint(ess_ch[t]ess_p*ess_bin[t])mdl.add_constraint(ess_dis[t]ess_p*(1-ess_bin[t]))# 6. 求解solutionmdl.solve(log_outputFalse)ifsolution:daily_costsolution.objective_valuereturndaily_costelse:# 不可行解返回一个大的惩罚值return1e123. 上层遗传算法GA优化upper_layer.pyimportrandomimportnumpyasnpfromdeapimportbase,creator,tools,algorithmsfromlower_layerimportlower_layer_optimization# 1. 模型参数lifetime15# 储能寿命年discount_rate0.05# 折现率ess_cap_cost1500# 储能容量成本元/kWhess_p_cost800# 储能功率成本元/kWOM_rate0.02# 运维成本比例days_year365# 年运行天数# 2. 典型日负荷数据示例可替换为你的数据day_load_data{elec:[300,280,270,260,260,280,320,380,420,450,460,470,460,450,440,430,420,450,480,460,420,380,340,310],heat:[200,190,180,170,170,180,200,220,230,240,250,250,240,230,220,220,230,240,250,240,220,200,190,180],cold:[0,0,0,0,0,0,0,50,100,150,200,220,210,200,180,160,150,120,80,30,0,0,0,0]}# 3. 定义适应度函数deffitness(individual): 适应度函数全生命周期折算年成本 :param individual: [ess_cap, ess_p] :return: 目标值取负因为GA默认最大化 ess_cap,ess_pindividualifess_cap0oress_p0:return1e12,# 下层求解日运行成本daily_costlower_layer_optimization(ess_cap,ess_p,day_load_data)annual_operation_costdaily_cost*days_year# 全生命周期折算年投资成本crf(discount_rate*(1discount_rate)**lifetime)/((1discount_rate)**lifetime-1)annual_investment(ess_cap*ess_cap_costess_p*ess_p_cost)*crf annual_OM(ess_cap*ess_cap_costess_p*ess_p_cost)*OM_rate total_annual_costannual_investmentannual_OMannual_operation_costreturntotal_annual_cost,# 4. GA配置creator.create(FitnessMin,base.Fitness,weights(-1.0,))creator.create(Individual,list,fitnesscreator.FitnessMin)toolboxbase.Toolbox()# 决策变量上下限容量500-5000kWh功率100-1000kWtoolbox.register(attr_cap,random.uniform,500,5000)toolbox.register(attr_p,random.uniform,100,1000)toolbox.register(individual,tools.initCycle,creator.Individual,(toolbox.attr_cap,toolbox.attr_p),n1)toolbox.register(population,tools.initRepeat,list,toolbox.individual)toolbox.register(evaluate,fitness)toolbox.register(mate,tools.cxTwoPoint)toolbox.register(mutate,tools.mutUniformInt,low[500,100],up[5000,1000],indpb0.2)toolbox.register(select,tools.selTournament,tournsize3)# 5. 运行GAdefrun_ga():poptoolbox.population(n30)hoftools.HallOfFame(1)statstools.Statistics(lambdaind:ind.fitness.values)stats.register(avg,np.mean)stats.register(min,np.min)stats.register(max,np.max)pop,logalgorithms.eaSimple(pop,toolbox,cxpb0.7,mutpb0.2,ngen20,statsstats,halloffamehof,verboseTrue)best_indhof[0]print(\n最优配置)print(f储能容量{best_ind[0]:.2f}kWh)print(f储能功率{best_ind[1]:.2f}kW)print(f折算年总成本{best_ind.fitness.values[0]:.2f}元)returnbest_indif__name____main__:bestrun_ga()四、模型使用说明与调优建议1. 基础使用步骤替换典型日负荷数据将day_load_data替换为你的实际冷/热/电负荷数据修改经济参数根据实际情况调整ess_cap_cost、ess_p_cost、discount_rate、lifetime运行upper_layer.pyGA迭代求解最优储能配置如需调整精度可增大GA种群数、迭代次数。2. 关键调优技巧若CPLEX求解时间过长可简化下层模型或使用log_outputFalse关闭日志若GA收敛慢可增大种群数n30→n50、迭代次数ngen20→ngen30可扩展模型加入光伏、风电等新能源设备优化多源协同配置如需考虑多典型日可修改lower_layer_optimization计算多个典型日的平均运行成本。五、模型拓展方向多典型日扩展将12个月典型日数据加入模型考虑季节差异多目标优化同时优化经济性与碳排放量不确定性优化考虑风光出力、负荷的不确定性采用鲁棒优化/随机规划多能互补扩展加入地源热泵、电锅炉等设备优化冷/热/电多能流。