含多种需求响应及电动汽车的微网/虚拟电厂日前优化调度3 关键词:需求响应 空调负荷 电动汽车 微网优化调度 虚拟电厂调度 参考文档:《计及电动汽车和需求响应的多类电力市场下虚拟电厂竞标模型》参考其电动汽车模型以及需求响应模型; 《Stochastic Adaptive Robust Dispatch for Virtual Power Plants Using the Binding Scenario Identification Approach》参考其空调部分的数学模型和参数 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个微网/虚拟电厂的日前优化调度模型,在日前经济调度模型中,我们加入了电动汽车模型,且电动汽车模型考虑了其出行规律以及充放电规律,更加符合实际情况,除此之外,程序里还考虑了多种类型的需求响应资源,如可中断负荷资源,并加入了空调负荷的需求响应调控,充分利用热力学原理以及能量守恒,对空调机组实行最优能耗曲线控制策略,除此之外,模型中还考虑了燃气轮机、储能的单元,非常全面且实用,是研究微网和虚拟电厂的必备程序。
在微网和虚拟电厂领域,日前优化调度一直是研究的重点。今天就来聊聊我基于MATLAB + CPLEX平台开发的一个日前优化调度模型,它融合了多种关键元素,实用性满满。
一、电动汽车模型
我们参考了《计及电动汽车和需求响应的多类电力市场下虚拟电厂竞标模型》中的电动汽车模型。这个模型充分考虑了电动汽车的出行规律以及充放电规律,这在实际应用中至关重要。毕竟现实里电动汽车的使用不是随机的,而是遵循一定的出行模式。
比如在代码中,对于电动汽车充放电的实现可能是这样的(简化示意代码):
% 定义电动汽车相关参数 numEVs = 10; % 假设10辆电动汽车 chargingRate = 5; % 充电功率 5kW dischargingRate = 4; % 放电功率 4kW socInitial = 0.3; % 初始电量 socMin = 0.2; % 最小允许电量 socMax = 0.9; % 最大允许电量 % 模拟一天24小时的调度 for t = 1:24 % 根据出行规律决定是否可以充放电 if isAvailable(t) % 假设isAvailable函数判断该时刻电动汽车是否可用 if shouldCharge(t) % 假设shouldCharge函数判断该时刻是否需要充电 if soc(t - 1) + chargingRate / batteryCapacity < socMax soc(t) = soc(t - 1) + chargingRate / batteryCapacity; else soc(t) = socMax; end elseif shouldDischarge(t) % 假设shouldDischarge函数判断该时刻是否可以放电 if soc(t - 1) - dischargingRate / batteryCapacity > socMin soc(t) = soc(t - 1) - dischargingRate / batteryCapacity; else soc(t) = socMin; end else soc(t) = soc(t - 1); end else soc(t) = soc(t - 1); end end这里,通过一系列的判断逻辑,结合实际的出行规律,来确定电动汽车在每个时刻的充放电状态以及电量变化,使得模型更加贴合现实场景。
二、多种需求响应资源
程序里考虑了多种类型的需求响应资源,可中断负荷资源就是其中之一。这种资源可以在电力系统出现紧急情况或者为了优化调度时,暂时中断部分非关键负荷,以达到平衡电力供需的目的。
三、空调负荷的需求响应调控
空调负荷在电力消耗中占比不小,对其进行优化调控意义重大。我们参考了《Stochastic Adaptive Robust Dispatch for Virtual Power Plants Using the Binding Scenario Identification Approach》里空调部分的数学模型和参数,利用热力学原理以及能量守恒,对空调机组实行最优能耗曲线控制策略。
大概的代码思路如下(简化示意):
% 定义空调相关参数 numACs = 20; % 假设20台空调 tempSetpoint = 25; % 设定温度 25摄氏度 ambientTemp = [28 29 30 30 29 28 27 26 26 27 28 29 30 31 31 30 29 28 27 26 26 27 28 29]; % 一天24小时环境温度 powerCoefficient = 0.5; % 功率与温度差的系数 for t = 1:24 tempDiff = ambientTemp(t) - tempSetpoint; % 根据温度差和系数计算空调功率 acPower(t) = powerCoefficient * tempDiff; % 这里还可以加入一些约束条件,比如空调最大功率限制等 if acPower(t) > maxACPower acPower(t) = maxACPower; end end通过这样的计算,根据环境温度和设定温度的差值,动态调整空调的功率,从而实现能耗的优化。
四、其他关键单元
模型中还考虑了燃气轮机、储能等单元。燃气轮机可以在电力供应不足时提供稳定的电力输出,而储能单元则可以存储多余的电能,在需要时释放,起到削峰填谷的作用。
燃气轮机的代码实现可能涉及到效率计算、功率输出范围等方面(简化示意):
% 燃气轮机参数 minGTPower = 10; % 最小功率 10kW maxGTPower = 50; % 最大功率 50kW efficiency = 0.3; % 效率 30% for t = 1:24 % 根据电力需求和其他电源情况决定燃气轮机功率输出 if powerDemand(t) > availablePower(t) && gasAvailable(t) % 假设gasAvailable函数判断燃气是否可用 if powerDemand(t) - availablePower(t) < maxGTPower gtPower(t) = powerDemand(t) - availablePower(t); else gtPower(t) = maxGTPower; end else gtPower(t) = 0; end fuelConsumption(t) = gtPower(t) / efficiency; % 根据功率和效率计算燃料消耗 end储能单元也类似,会有充放电的逻辑判断以及电量状态的更新。
这个基于MATLAB + CPLEX的微网/虚拟电厂日前优化调度模型,综合考虑了多种元素,为研究微网和虚拟电厂提供了一个全面且实用的基础,希望能给相关领域的朋友带来一些启发和帮助。后续还可以在此基础上进一步优化和拓展,比如考虑更多复杂的实际场景因素等。