【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

简介: 【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

1 主要内容

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


2 程序难点及问题说明

  • 代码修正
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,但是在代码里面却存在这方面问题,已经进行了修正。

  • 部分问题

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

该部分是第一阶段优化结果,对于云储能用户,考虑最简单的调度策略,即根据电价详细分清楚每个时间段的充放电状态,所以soc曲线也较为规律(该图应该为5段,即充-放-充-放-充,但是考虑到前四段已经能够说明问题,就只分析前四段)。

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

  • 修正后的代码运行结果

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

本模型的跟踪控制主要是由于光伏波动引起的,在不存在光伏波动的时间段就会出现soc完美的跟踪效果,也就回答了上面第二个问题。

3 部分程序

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
相关文章
|
1天前
|
算法 调度
基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图
**摘要:** 实现变异混合蛙跳算法的MATLAB2022a版车间调度优化程序,支持动态调整工件和机器数,输出甘特图。核心算法结合SFLA与变异策略,解决Job-Shop Scheduling Problem,最小化总完成时间。SFLA模拟蛙群行为,分组进行局部搜索和全局信息交换。变异策略增强全局探索,避免局部最优。程序初始化随机解,按规则更新,经多次迭代和信息交换后终止。
|
9天前
|
算法 调度 决策智能
基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘特图
这是一个使用MATLAB2022a实现的自适应遗传算法解决车间调度问题的程序,能调整工件数和机器数,输出甘特图和适应度收敛曲线。程序通过编码初始化、适应度函数、遗传操作(选择、交叉、变异)及自适应机制进行优化,目标如最小化完工时间。算法在迭代过程中动态调整参数,以提升搜索效率和全局优化。
|
1月前
|
数据可视化 算法
MATLAB Simulink 交交变流电路性能研究
MATLAB Simulink 交交变流电路性能研究
21 2
|
1月前
|
数据可视化 算法
MATLAB Simulink 直流斩波电路性能研究
MATLAB Simulink 直流斩波电路性能研究
35 1
|
1月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1月前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
1月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1月前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)

热门文章

最新文章