MATLAB代码:含多种需求响应及电动汽车的微网/虚拟电厂日前优化调度 关键词:需求响应 空调负荷 电动汽车 微网优化调度 虚拟电厂调度 参考文档:《计及电动汽车和需求响应的多类电力市场下虚拟电厂竞标模型》参考其电动汽车模型以及需求响应模型; 《Stochastic Adaptive Robust Dispatch for Virtual Power Plants Using the Binding Scenario Identification Approach》参考其空调部分的数学模型和参数 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个微网/虚拟电厂的日前优化调度模型,在日前经济调度模型中,我们加入了电动汽车模型,且电动汽车模型考虑了其出行规律以及充放电规律,更加符合实际情况,除此之外,程序里还考虑了多种类型的需求响应资源,如可中断负荷资源,并加入了空调负荷的需求响应调控,充分利用热力学原理以及能量守恒,对空调机组实行最优能耗曲线控制策略,除此之外,模型中还考虑了燃气轮机、储能的单元,非常全面且实用,是研究微网和虚拟电厂的必备程序。

最近一直在研究微网和虚拟电厂的优化调度问题,终于把代码写完了。说实话,看到这个代码的时候,自己都感叹了一下,这个模型可算得上是全能型选手了!今天就和大家聊聊这个代码的故事,顺便带点代码片段。

一、电动汽车:不仅仅是代步工具

说实话,刚开始把电动汽车放进优化调度模型的时候,我还真有点紧张,毕竟这东西跟传统负荷不太一样。它不仅要考虑充电,还得考虑用户的出行规律。好在参考了那篇论文,把模型整出来了。

MATLAB代码:含多种需求响应及电动汽车的微网/虚拟电厂日前优化调度 关键词:需求响应 空调负荷 电动汽车 微网优化调度 虚拟电厂调度 参考文档:《计及电动汽车和需求响应的多类电力市场下虚拟电厂竞标模型》参考其电动汽车模型以及需求响应模型; 《Stochastic Adaptive Robust Dispatch for Virtual Power Plants Using the Binding Scenario Identification Approach》参考其空调部分的数学模型和参数 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个微网/虚拟电厂的日前优化调度模型,在日前经济调度模型中,我们加入了电动汽车模型,且电动汽车模型考虑了其出行规律以及充放电规律,更加符合实际情况,除此之外,程序里还考虑了多种类型的需求响应资源,如可中断负荷资源,并加入了空调负荷的需求响应调控,充分利用热力学原理以及能量守恒,对空调机组实行最优能耗曲线控制策略,除此之外,模型中还考虑了燃气轮机、储能的单元,非常全面且实用,是研究微网和虚拟电厂的必备程序。

代码里,我们通过状态转移矩阵来建模电动汽车的充放电过程。比如,我们来看看这部分:

% 电动汽车状态转移矩阵
for i=1:24
    SOC(i+1) = SOC(i) + (P_charge(i)/V)/eta - (P_discharge(i)*eta)/V;
    SOC(i+1) = max(0, SOC(i+1));
    SOC(i+1) = min(1, SOC(i+1));
end

这个代码块的意思就是,每个小时的SOC状态都会受到充放电功率的影响。充电的时候,功率直接加到电池里;放电的时候,功率会从电池里拿出去,不过放电效率比充电低一点,对吧?这样,我们就把电动汽车的动态特性考虑进去了。

二、空调负荷:舒适与节能的平衡

空调负荷这部分,我觉得自己还挺有成就感的。以前的模型总是假设空调是静态的,但这次不一样,我们引入了热力学原理,把温度变化也算进去了。具体来说,我们用了如下公式来建模:

% 空调负荷温度控制
dTdt = (Q_solar + Q_internal - C_ac * P_ac(t)) / (m_air * c_air);
T(t+1) = T(t) + dTdt * dt;

这里,dTdt 表示温度的变化率,Qsolar和Qinternal 是太阳辐射和内部热源的热量,Pac(t) 是空调的功率。通过控制Pac(t),我们就可以调节温度的变化率,从而实现最优能耗控制。

三、燃气轮机和储能:稳定的背后

说实话,这俩模块相比之下比较简单,不过也是整个系统稳定的基石。燃气轮机那边,我们主要考虑了燃料成本和排放约束。储能部分,主要处理充放电效率和循环寿命的问题。

代码里的燃气轮机成本计算如下:

% 燃气轮机成本
cost = sum(P_gt .* (a + b .* P_gt + c .* P_gt.^2));
total_cost = cost + ...;

这里,我们用了一个二次函数来表示燃气轮机的燃料成本,系数a、b、c都是参考文献里的数据。储能部分就不用多说了,这部分和电动汽车类似,主要是 SOC 的变化。

四、优化模型:把所有东西都串起来

最后,我们把这些东西都扔进优化模型里。由于这是一个线性规划问题,我们用CPLEX来解。整个优化目标是最小化总成本,同时满足各种约束条件。

% 定义优化模型
model = optimproblem('Objective', total_cost, 'Solver', 'cplex');

% 添加变量
variables(model, P_gt(24), P_charge(24), P_discharge(24), T(25));

% 添加约束
for t=1:24
    model.Constraints = [sum([P_gt(t), P_charge(t), P_discharge(t)]) == Load(t)];
end

% 求解
result = solve(model);

当然,这只是个简化的版本。实际代码里还有更多细致入微的约束条件,比如温度上下限、SOC范围、功率平衡等等。

五、总结起来

总的来说,这个代码把各种资源都考虑进去了,既有电动汽车、空调这些动态负荷,也有燃气轮机、储能在内的传统机组,再加上各种需求响应资源,整个模型确实够用。如果你也在做相关研究,不妨试试看吧!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐