MATLAB代码:含电热联合系统的微电网运行优化 关键词:微网 电热联合系统 优化调度 [火]参考文档:《含电热联合系统的微电网运行优化》完全复现 仿真平台:MATLAB yalmip+cplex [火]主要内容:提出基于电热联合调度的区域并网型微电网运行优化模型。 综合网内储能特性、分时电价、电热负荷与分布式电源的时序特征,以包含风机、光伏电池、热电联产系统、电锅炉、 燃料电池和储能系统的并网型微电网为例, 采用 Cplex优化软件求得调度周期内各微电源最佳出力及总运行成本,并与两种常见电热调度方式进行比较。 仿真算例表明:联合调度模型能实现电热统一协调调度并降低微电网运行成本。 该模型可为电热之间能源互联及规划运营提供参考。
在能源领域,微电网的优化运行一直是研究的热点。尤其是含电热联合系统的微电网,它涉及到电力和热力的协同调度,对于提高能源利用效率、降低运行成本有着重要意义。今天就来和大家分享一下基于 MATLAB 的含电热联合系统的微电网运行优化代码实现。
研究背景
在实际的微电网中,包含了风机、光伏电池、热电联产系统、电锅炉、燃料电池和储能系统等多种微电源。这些微电源的出力特性各不相同,而且网内存在储能特性、分时电价以及电热负荷与分布式电源的时序特征等因素。为了实现微电网的高效运行,我们需要提出一种合适的运行优化模型。
这里我们提出基于电热联合调度的区域并网型微电网运行优化模型。该模型的目标是在调度周期内求得各微电源的最佳出力,从而降低微电网的总运行成本。
仿真平台
本次仿真使用的是 MATLAB,结合了 yalmip 建模工具和 cplex 优化软件。yalmip 可以方便地进行数学模型的构建,而 cplex 则是一款强大的优化求解器,能够高效地求解复杂的优化问题。
代码实现及分析
模型构建
首先,我们需要定义一些参数,比如各微电源的相关参数、分时电价、电热负荷等。以下是一段简单的参数定义代码示例:
% 定义调度周期(单位:小时) T = 24; % 分时电价(元/kWh) price = [0.5, 0.5, 0.5, 0.5, 0.8, 0.8, 1.2, 1.2, 1.2, 0.8, 0.8, 0.8, 0.8, 0.8, 1.2, 1.2, 1.2, 0.8, 0.8, 0.8, 0.5, 0.5, 0.5, 0.5]; % 电负荷(kW) P_load = [100, 120, 130, 140, 150, 160, 180, 200, 220, 200, 180, 160, 140, 130, 150, 170, 190, 210, 200, 180, 160, 140, 120, 100]; % 热负荷(kW) H_load = [80, 90, 100, 110, 120, 130, 140, 150, 160, 150, 140, 130, 120, 110, 120, 130, 140, 150, 140, 130, 120, 110, 100, 90];在这段代码中,我们定义了调度周期为 24 小时,分时电价根据不同时段有所变化,电负荷和热负荷也随时间变化。这些参数是后续优化计算的基础。
接下来,我们使用 yalmip 来构建优化模型。以下是一个简化的模型构建代码:
% 定义决策变量 P_wind = sdpvar(1, T); % 风机出力 P_pv = sdpvar(1, T); % 光伏电池出力 P_chp = sdpvar(1, T); % 热电联产系统电出力 H_chp = sdpvar(1, T); % 热电联产系统热出力 P_eb = sdpvar(1, T); % 电锅炉电出力 P_fc = sdpvar(1, T); % 燃料电池电出力 P_es = sdpvar(1, T); % 储能系统电出力 % 定义约束条件 Constraints = []; % 功率平衡约束 for t = 1:T Constraints = [Constraints, P_wind(t) + P_pv(t) + P_chp(t) + P_fc(t) + P_es(t) - P_eb(t) == P_load(t)]; Constraints = [Constraints, H_chp(t) == H_load(t)]; end % 各微电源出力上下限约束 for t = 1:T Constraints = [Constraints, 0 <= P_wind(t) <= 200]; Constraints = [Constraints, 0 <= P_pv(t) <= 150]; Constraints = [Constraints, 0 <= P_chp(t) <= 180]; Constraints = [Constraints, 0 <= H_chp(t) <= 150]; Constraints = [Constraints, 0 <= P_eb(t) <= 120]; Constraints = [Constraints, 0 <= P_fc(t) <= 100]; Constraints = [Constraints, -50 <= P_es(t) <= 50]; end % 定义目标函数 Objective = 0; for t = 1:T Objective = Objective + price(t) * (P_chp(t) + P_eb(t) + P_fc(t) - P_wind(t) - P_pv(t) - P_es(t)); end % 求解优化问题 options = sdpsettings('solver', 'cplex'); result = optimize(Constraints, Objective, options);在这段代码中,我们首先定义了各种微电源的出力作为决策变量。然后,添加了功率平衡约束和各微电源出力上下限约束。功率平衡约束保证了电力和热力在每个时段都能满足负荷需求,而出力上下限约束则限制了各微电源的实际出力范围。目标函数是计算调度周期内的总运行成本,通过分时电价和各微电源的出力来计算。最后,使用optimize函数调用 cplex 求解器来求解优化问题。
结果分析
求解完成后,我们可以获取各微电源的最佳出力和总运行成本。以下是获取结果的代码:
if result.problem == 0 P_wind_opt = value(P_wind); P_pv_opt = value(P_pv); P_chp_opt = value(P_chp); H_chp_opt = value(H_chp); P_eb_opt = value(P_eb); P_fc_opt = value(P_fc); P_es_opt = value(P_es); Cost_opt = value(Objective); disp(['总运行成本: ', num2str(Cost_opt), ' 元']); % 绘制各微电源出力曲线 figure; subplot(3, 1, 1); plot(1:T, P_wind_opt, 'b', 1:T, P_pv_opt, 'g', 1:T, P_chp_opt, 'r'); legend('风机出力', '光伏电池出力', '热电联产系统电出力'); xlabel('时间(小时)'); ylabel('功率(kW)'); subplot(3, 1, 2); plot(1:T, H_chp_opt, 'm'); legend('热电联产系统热出力'); xlabel('时间(小时)'); ylabel('功率(kW)'); subplot(3, 1, 3); plot(1:T, P_eb_opt, 'c', 1:T, P_fc_opt, 'k', 1:T, P_es_opt, 'y'); legend('电锅炉电出力', '燃料电池电出力', '储能系统电出力'); xlabel('时间(小时)'); ylabel('功率(kW)'); else disp('优化求解失败!'); end通过这段代码,我们可以得到各微电源的最佳出力值和总运行成本,并将各微电源的出力曲线绘制出来,直观地观察各微电源在调度周期内的出力变化情况。
与常见电热调度方式比较
为了验证联合调度模型的有效性,我们可以将其结果与两种常见电热调度方式进行比较。这里就不详细给出比较的代码了,一般来说,我们可以使用同样的参数和模型结构,只是改变调度策略,然后分别求解不同调度方式下的总运行成本,最后进行对比。
仿真算例表明,联合调度模型能实现电热统一协调调度并降低微电网运行成本。该模型可为电热之间能源互联及规划运营提供参考。
通过以上的代码实现和分析,我们可以看到利用 MATLAB 和 yalmip + cplex 平台可以有效地实现含电热联合系统的微电网运行优化。希望这篇文章能对大家在微电网优化调度方面的研究有所帮助。