目录

1 主要内容

2 程序难点及问题说明

3 部分程序

4 下载链接 


主要内容

该程序分为两部分,日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面方法,根据每个居民的实际需要得到响应储能充放电功率,优化得到整体的储能充放电功率情况。日内滚动mpc跟踪部分——采用《基于MPC的微电网并网优化调度》P31-36页相关内容,通过预测模型、滚动优化、反馈校正得到soc跟踪情况。

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

程序难点及问题说明

  • 代码修正
for i=1:96    
    C=[C;
       P_C1(i) == P_G1(i)+P_PV1(i);%储能功率=电网供电+光伏储能
       P_PV1(i)<=P_C1(i)<=P_cap;%储能值约束
       0<=P_G1(i)<=P_cap;%电网供电约束
       E1(1)+sum(P_C1)*nc*t==E_cap;%soc约束,到储能结束soc=1
      ];
end

该程序含有这段代码,最后一句代码和i不相关,却重复循环96次,这句代码和下面的代码功能重复,在学习和修改代码的时候增加了复杂度。此外,还有几处类似问题已经修正。

原文献有储能充放电功率模型如下,该部分约束能够保证充放电功率不能同时不为0,但是在代码里面却存在这方面问题,已经进行了修正。

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

  • 部分问题

代码原来的出图效果如下:

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

得到两个阶段的soc跟踪效果图,但是为什么只是充电阶段的跟踪图呢​?为什么第一个图效果那么好呢​?第一个问题留给大家思考,第二个问题一会揭晓​。

  • 修正后的代码运行结果

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

修正代码实现了全过程的soc跟踪控制。

Matlab|基于模型预测控制(MPC)的微电网调度优化的研究-LMLPHP

部分程序

clc;clear all;
%% 数据准备
data = xlsread('预测数据.xlsx');
​
p_pv = data;%正值代表负荷。负值代表用户光伏发电量高于负荷的部分
p_pv(data<0) = 0;    %用户的剩余光伏数据
prepv=sum(p_pv,2);
data_d = data;
data_d(data>0) = 0;   %用户放电负荷数据
data_d = -1.*data_d;
preload=sum(data_d,2);
%% 参数设置
e_cap = xlsread('各用户租赁容量.xlsx');  %各用户租赁的能量容量
p_cap = 0.5.*e_cap;                                %各用户租赁的功率容量
E_cap = 175;                                       %CES储能容量
P_cap = 90;                                        %CES功率容量
​
e0 = 0.2.*e_cap;                                   %各用户初始电量
E0 = 0.2*E_cap;                                    %CES初始电量
emin = 0.1.*e_cap; 
Emin = 0.1*E_cap;
​
nc = 0.96;  %充电效率
nd = 0.96;  %放电效率
​
r1 = 0.32;   %低谷电价
r2 = 0.66;   %平谷电价
r3 = 1.1;    %高峰电价
r = zeros(288,1);  %各时段电价
r(1:96) = r1;
r(97:144) = r3;
r(145:204) = r2;
r(205:252) = r3;
r(253:288) = r2;
​
t = 5/60;  %时间间隔
%% 定义变量
E1 = sdpvar(96,1);%储能容量变量
E1(1) = E0;
P_PV1 = sum(p_pv(1:96,:),2);%充电时段0-8:00整体光伏出力
P_C1 = sdpvar(96,1);%储能出力变量
P_G1 = sdpvar(96,1);%电网供电变量
C=[];%初始化约束
for i=1:96    
    C=[C;
       P_C1(i) == P_G1(i)+P_PV1(i);%储能功率=电网供电+光伏储能
       P_PV1(i)<=P_C1(i)<=P_cap;%储能值约束
       0<=P_G1(i)<=P_cap;%电网供电约束
%        E1(1)+sum(P_C1)*nc*t==E_cap;%soc约束,到储能结束soc=1
      ];
end

4 下载链接 

03-26 05:24