Matlab|考虑源-荷-储协同互动的主动配电网优化调度研究

目录

主要内容   

  部分代码   

  结果一览   


主要内容   

该程序以33节点系统为例实现了考虑源-荷-储协同互动的主动配电网优化调度模型,程序采用配电网二阶锥约束、储能约束、分布式电源约束、可平移、可削减负荷约束等,以负荷调用成本、储能调用成本、储能补贴和收益、购电成本、网损成本之和作为目标函数,程序参考下图文献,虽然给出了riqian和rinei两个matlab程序,但是实际上未对日内进行滚动优化,程序采用matlab+cplex求解,程序注释清楚,方便学习!

  部分代码   

mpc = IEEE33BW;
pload = mpc.Pload*100;%节点有功负荷,原数据100MVA,改为1MVA
PPload=[1.77184023  1.760691425  1.985343246  2.164759614  2.525216573  2.836282757  2.717289933  2.912703959  2.938170633  3.200578131  3.93626314  3.680872774  3.53168293  3.215685929  2.903666471  2.626416093  2.33835944  2.582209352  3.063339069  3.465731913  3.01938202  2.591419695  2.254491338  1.784180138];
qload = mpc.Qload*100;%节点无功负荷
branch = mpc.branch;
branch(:,3) = branch(:,3)*1/(10^2);%求阻抗标幺值
R = real(branch(:,3));
X = imag(branch(:,3));
T = 24;%时段数为24小时
nb = 33;%节点数
nl = 32;%支路数
nwt = 2;%风机
npv = 1;%光伏
S_pv=1.5;
RR=xlsread('光照强度数据.xlsx','B2:B25');
pp_pv=xlsread('光照强度数据.xlsx','D3:AA3');
C_e=xlsread('电价.xlsx','A1:X1');
C_ae=xlsread('激励电价.xlsx','A1:X1');
C_de=xlsread('需求响应激励价格.xlsx','A1:X1');
R_STD=1000;%标准太阳辐射
R_C=150;%辐射点
PP_pv=zeros(npv,T);
% %%%%光伏出力模型
for i=1:1:npv 
    for t=1:1:T
        if(0<=RR(t))&(RR(t)<=R_C)
            PP_pv(i,t)=S_pv*((RR(t))^2)/(R_STD*R_C);
        else if(R_C<=RR(t))&(RR(t)<=R_STD)
                PP_pv(i,t)=S_pv*RR(t)/R_STD;
            else if(R_STD<=RR(t))
                    PP_pv(i,t)=S_pv;
                end
            end
        end
    end
end
v=xlsread('风速数据.xlsx','B2:B25');
pp_wt=xlsread('风速数据.xlsx','G2:AD2');
v_in=3;%切入风速
v_r=11.3;%额定风速
v_out=25;%切出风速
S_wt=[1;1.5];
PP_wt=zeros(nwt,T);
%%%风电出力模型
for i=1:1:nwt 
    for t=1:1:T
      if (0<=v(t)) &(v(t)<=v_in)|(v_out<=v(t))
          PP_wt(i,t)=0;
      else if(v_in<=v(t))&(v(t)else if(v_r<=v(t))&(v(t)2;%ESS数
v_in=3;%切入风速
v_r=11.3;%额定风速
v_out=25;%切出风速
upstream = zeros(nb,nl);
dnstream = zeros(nb,nl);
for t = 1:nl
    upstream(t,t)=1;
end
for t = [1:16,18:20,22:23,25:31]
    dnstream(t,t+1)=1;
end
dnstream(1,18) = 1;
dnstream(2,22) = 1;
dnstream(5,25) = 1;
dnstream(33,1) = 1;
Vmax = [1.05*1.05*ones(nb-1,T)
        1.05*1.05*ones(1,T)];
Vmin = [0.95*0.95*ones(nb-1,T)
        0.95*0.95*ones(1,T)];
Pgmax = [zeros(nb-1,T)
        5*ones(1,T)];
Pgmin = [zeros(nb-1,T)
         0*ones(1,T)]; 
Qgmax = [zeros(nb-1,T)
         3*ones(1,T)];
Qgmin = [zeros(nb-1,T)
         -1*ones(1,T)];
%% 2.设变量
V = sdpvar(nb,T);%电压的平方
I = sdpvar(nl,T);%电流的平方
P = sdpvar(nl,T);%线路有功
Q = sdpvar(nl,T);%线路无功
Pg = sdpvar(nb,T);%发电机有功
Qg = sdpvar(nb,T);%发电机无功
p_wt = sdpvar(nwt,T);%风机有功
p_pv = sdpvar(npv,T);%光伏有功
s_IL=binvar(1,T);
Temp_shift=binvar(3,T);
Lshift=sdpvar(3,T);
Lshift_old=xlsread('可转移负荷.xlsx','A1:X3');
PLOAD=sdpvar(nb,T);
Pload=sum(PLOAD);
p_dch = sdpvar(ness,T);%ESS放电功率
p_ch = sdpvar(ness,T);%ESS充电功率
u_dch = binvar(ness,T);%ESS放电状态
u_ch = binvar(ness,T);%ESS充电状态
E_ess = sdpvar(ness,T);%ESS的电量
S_IL1=sdpvar(1,T,'full');
S_IL2=sdpvar(1,T,'full');
%% 3.设约束
C = [];
%% 需求响应约束
%可平移负荷1约束,9-14为可平移负荷区间
 C = [C,sum(Temp_shift(1,1:8))==0,sum(Temp_shift(1,9:14))==1,sum(Temp_shift(1,15:24))==0];
 %可平移负荷2约束,19-22为可平移负荷区间
 C = [C,sum(Temp_shift(2,1:18))==0,sum(Temp_shift(2,19:22))==1,sum(Temp_shift(2,23:24))==0];
  %可平移负荷3约束,8-21为可平移负荷区间
 C = [C,sum(Temp_shift(3,1:7))==0,sum(Temp_shift(3,8:21))==1,sum(Temp_shift(3,22:24))==0];
 %可平移负荷1&可平移负荷2&可平移负荷3平移
 for k = 1:24
  C = [C, implies(Temp_shift(1,k),Lshift(1,:)==circshift(Lshift_old(1,:),[0,k-17]))];
  C = [C, implies(Temp_shift(2,k),Lshift(2,:)==circshift(Lshift_old(2,:),[0,k-3]))];
  C = [C, implies(Temp_shift(3,k),Lshift(3,:)==circshift(Lshift_old(3,:),[0,k-23]))];
 end
 TL1=[zeros(3,T);Lshift_old(1,:)-Lshift(1,:);zeros(29,T)];    
 TL2=[zeros(14,T);Lshift_old(2,:)-Lshift(2,:);zeros(18,T)];
 TL3=[zeros(29,T);Lshift_old(3,:)-Lshift(3,:);zeros(3,T)];
%%%%可削减负荷%%%%%
C=[C,0<=S_IL1<=0.8*pload(10,:)];
C=[C,0<=S_IL2<=0.8*pload(26,:)];
IL1=[zeros(9,T);S_IL1(1,:);zeros(23,T)];
IL2=[zeros(25,T);S_IL2(1,:);zeros(7,T)];
C=[C,pload+TL1+TL2+TL3-IL1-IL2==PLOAD];
​
%% 储能装置(ESS)约束
%充放电状态约束
C = [C, u_dch(1,:) + u_ch(1,:) <= 1];%表示充电,放电,不充不放三种状态
C = [C, u_dch(2,:) + u_ch(2,:) <= 1];
C = [C, u_dch(1,:) + u_dch(2,:) <= 1];
C = [C, u_ch(1,:) + u_ch(2,:) <= 1];
%充放电时刻约束
C = [C, [sum(u_dch(1,8:15))==0,sum(u_dch(1,18:21))==0]];
C = [C, [sum(u_ch(1,1:7))==0,sum(u_ch(1,14:18))==0,sum(u_ch(1,22:24))==0]];
C = [C, [sum(u_dch(2,8:15))==0,sum(u_dch(2,18:21))==0]];
%功率约束
C = [C, 0 <= p_dch <= u_dch*0.3];
C = [C, 0 <= p_ch<= u_ch*0.3];
%容量约束
for t = 1:23
        C = [C, E_ess(1,t+1) == E_ess(1,t) + 0.9*p_ch(1,t) - 0.9*p_dch(1,t)]; 
end
for t = 1:23
        C = [C, E_ess(2,t+1) == E_ess(2,t) + 0.9*p_ch(2,t) - 0.9*p_dch(2,t)]; 
end
C = [C,  0.1<=E_ess(1,:)/1.03<=0.9];
C = [C,  0.1<=E_ess(2,:)/1.21<=0.9];
%投入节点选择
P_dch1 = [zeros(16,T);p_dch(1,:);zeros(16,T)];
P_ch1 = [zeros(16,T);p_ch(1,:);zeros(16,T)];
P_dch2 = [zeros(16,T);p_dch(2,:);zeros(16,T)];
P_ch2 = [zeros(16,T);p_ch(2,:);zeros(16,T)];
%% 风机+光伏约束
C = [C, 0 <= p_wt,p_wt <= 1.2*PP_wt];
P_wt = [zeros(15,T);p_wt(1,:);zeros(10,T);p_wt(2,:);zeros(6,T)];
C = [C, 0 <= p_pv,p_pv <=1.2*PP_pv];
p_pv =1.2*PP_pv;
P_pv = [zeros(15,T);p_pv;zeros(17,T)];
%% 潮流约束
Pin = -upstream*P + upstream*(I.*(R*ones(1,T))) + dnstream*P;%节点注入有功
Qin = -upstream*Q + upstream*(I.*(X*ones(1,T))) + dnstream*Q;%节点注入无功
C = [C, Pin+pload+TL1+TL2+TL3-IL1-IL2- P_wt- P_pv- Pg-P_dch1+ P_ch1-P_dch2+ P_ch2==0];
C = [C, Qin + qload - Qg == 0];
%欧姆定律约束
C = [C, V(branch(:,2),:) == V(branch(:,1),:) - 2*(R*ones(1,24)).*P - 2*(X*ones(1,24)).*Q + ((R.^2 + X.^2)*ones(1,24)).*I];
%二阶锥约束
C = [C, V(branch(:,1),:).*I >= P.^2 + Q.^2];
%% 通用约束
%节点电压约束
C = [C, Vmin <= V,V <= Vmax];
%发电机功率约束
C = [C, Pgmin <= Pg,Pg <= Pgmax,Qgmin <= Qg,Qg <= Qgmax];
%支路电流约束
C = [C, 0 <= I,I <= 12];
%% 4.设目标函数
Pload2=PPload+sum(p_dch-p_ch);
Pload3=Pload+sum(p_dch-p_ch);
%%%%%%%%%
for t=1:1:23
    f1_0=0.25*[(max(PPload)-min(PPload))/mean(PPload(:))]+0.75*[(max(abs(PPload(t)-Pload(t+1))))/mean(PPload(:))];
     f1_1=0.25*[(max(Pload)-min(Pload))/mean(Pload(:))]+0.75*[(max(abs(Pload(t)-Pload(t+1))))/mean(Pload(:))];
     f1_2=0.25*[(max(Pload2)-min(Pload2))/mean(Pload2)]+0.75*[(max(abs(Pload2(t)-Pload2(t+1))))/mean(Pload2(:))];
     f1_3=0.25*[(max(Pload3)-min(Pload3))/mean(Pload3)]+0.75*[(max(abs(Pload3(t)-Pload3(t+1))))/mean(Pload3(:))];
end
%%%%%%%电压差最小%%%%%%%%%
f1=0;
for t=1:1:T
    for n=1:1:nb-1
        f1=f1+abs(V(n,t)-V(n+1,t));
    end
end
%%%%%%%%%
B1=sum(sum(p_dch-p_ch).*C_ae);
B2=sum(sum(p_dch))*200;
R_ess=B1+B2;   %储能补贴和收益%%%%%
C_LA=sum([0.062,0.043,0.048]*Temp_shift.*C_de)+sum((S_IL1+S_IL2).*C_de);%%%负荷调用成本%%%%
C_buy=sum(sum(Pg).*C_e);
C_loss=sum(sum(I.*(R*ones(1,T))))*400;  %%%网损成本%%%% 
C_ess=250*sum(sum(p_dch)+sum(p_ch));  %%%储能调用成本%%%%
f2=C_LA+C_loss+C_ess-(B1+B2)+C_buy;
%%%%储能寿命损耗成本%%%%
n=sum(sum(u_dch + u_ch));
L=0;
for D=0:0.1:1 
    L=L+n/(71470*D^4-170100*D^3+146400*D^2-56500*D+12230);
end
C_ESS1=819000*2+2953000*0.375;
C_ESS2=0;
for t=1:1:10
    C_ESS2=C_ESS2+69000*2*((1+0.015)/(1+0.09))^t;
end
C_ESS=C_ESS1+C_ESS2;
C_day=C_ESS*L;       %%%%%储能寿命损耗成本%%%%%%
%%%%%%%%%%%%%%%
%%%%%%配电网综合收益%%%%%%
peak_0=PPload(9)+PPload(10)+PPload(11)+PPload(12)+PPload(13)+PPload(14)+PPload(19)+PPload(20);
peak_3=Pload3(9)+Pload3(10)+Pload3(11)+Pload3(12)+Pload3(13)+Pload3(14)+Pload3(19)+Pload3(20);
lamda3=(peak_0-peak_3)/peak_0;  %%%%场景三的削峰率
C_gridup=1;
delta_n3=((log10(1+lamda3))/log10(1+0.015));   %%%%%%延缓改造年限%%%%
F1=C_gridup*[1-((1+0.015)/(1+0.09))^delta_n3];  %%%%%%减少配电网升级改造费用%%%%
​

  结果一览   

下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/422413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

USB4之ASM2464PD与ASM2464PDX兼容与运用

首先在NVMe上运用: 一&#xff1a;ASM2464PD&#xff08;现在可以做带PD的方案&#xff09; 二&#xff1a;ASM2464PDX 1&#xff1a; Application Guide- CFX card reader NVMe SSD 2&#xff1a;ASM2464PDX Application Guide- NVMe SSD x4 with data clone 三&#xff…

并查集(Disjoint Set)

目录 1.定义 2.初始化 3.查找 4.合并 4.1.按秩合并&#xff08;启发式合并&#xff09; 5.例题 题目描述 输入格式 输出格式 输入输出样例 说明/提示 1.定义 并查集&#xff0c;也称为不相交集合数据结构&#xff0c;是一种用于管理元素分组以及查找元素所属组的数…

回溯 Leetcode 47 全排列II

全排列II 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 Leetcode 47 学习记录自代码随想录 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输入&#xff1…

pd sink取电协议芯片介绍

前言&#xff1a; 在如今快节奏生活不断蔓延的背景下&#xff0c;人们对各种事情的处理也渐渐地开始要求在保证质量的情况下&#xff0c;不断加快。手机快充就是一个典型的例子&#xff0c;从开始的18W&#xff0c;30W快充&#xff0c;到现在已经有240W的超级快充出现。在这其…

ICLR 2024|ReLU激活函数的反击,稀疏性仍然是提升LLM效率的利器

论文题目&#xff1a; ReLU Strikes Back: Exploiting Activation Sparsity in Large Language Models 论文链接&#xff1a; https://arxiv.org/abs/2310.04564 参数规模超过十亿&#xff08;1B&#xff09;的大型语言模型&#xff08;LLM&#xff09;已经彻底改变了现阶段人工…

tritonserver学习之八:redis_caches实践

tritonserver学习之一&#xff1a;triton使用流程 tritonserver学习之二&#xff1a;tritonserver编译 tritonserver学习之三&#xff1a;tritonserver运行流程 tritonserver学习之四&#xff1a;命令行解析 tritonserver学习之五&#xff1a;backend实现机制 tritonserv…

【解决】虚幻导入FBX模型不是一个整体

问题&#xff1a; 现在有一个汽车的fbx模型&#xff0c;导入虚幻引擎&#xff0c;导入后变成了很多汽车零件模型。 解决&#xff1a; 把“合并网格体”勾选上&#xff0c;解决问题。

SpringBoot整合JdbcTemplate

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合JdbcTemplate 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

MySQL 数据库表设计和优化

一、数据结构设计 正确的数据结构设计对数据库的性能是非常重要的。 在设计数据表时&#xff0c;尽量遵循一下几点&#xff1a; 将数据分解为合适的表&#xff0c;每个表都应该有清晰定义的目的&#xff0c;避免将过多的数据存储在单个表中。使用适当的数据类型来存储数据&…

Python实现PPT演示文稿中视频的添加、替换及提取

无论是在教室、会议室还是虚拟会议中&#xff0c;PowerPoint 演示文稿都已成为一种无处不在的工具&#xff0c;用于提供具有影响力的可视化内容。PowerPoint 提供了一系列增强演示的功能&#xff0c;在其中加入视频的功能可以大大提升整体体验。视频可以传达复杂的概念、演示产…

谷歌seo推广推荐哪家好?

要想挑选好的谷歌seo服务&#xff0c;最好懂得区分这公司是技术型公司还是销售型公司&#xff0c;技术型公司自不必说&#xff0c;他们懂行&#xff0c;能根据自己的技术实力挑选合作伙伴&#xff0c;还能单飞提供顶尖的谷歌优化服务&#xff0c;这就好比你有个问题&#xff0c…

基于MUSIC算法的六阵元圆阵DOA估计matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于MUSIC算法的六阵元圆阵DOA估计matlab仿真. 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序 ........................................…

win10如何添加指纹登陆

1、首先进入设置,进入下一个设置页面 2、在下一个设置页面内,我们直接使用右上角的搜索框,输入“指纹/finger”进行搜索。回车之后进入设置指纹登陆选项 3、设置指纹登陆的前期是设置好你的密码和pin码(先要设定登录密码和pin码),这里pin和密码都可以直接登陆我们的win10,设…

修改docker默认存储位置【高版本的docker】

一、修改docker默认存储位置 1、停服务 systemctl stop docker 2、修改/etc/docker/daemon.json添加新的dcoker路径 如"data-root": "/mnt/hdd1/docker" 3、保存后重启服务&#xff1a;systemctl restart docker 二、其他服务的命令 systemctl disab…

【数据结构】之优先级队列(堆)

文章目录 一、优先级队列的概念二、优先级队列的模拟实现1.堆的存储2.堆的创建3.代码的实现 一、优先级队列的概念 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的…

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件&#xff1a; # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…

v70.字符串

1.字符数组 这个字符数组最后加入了0&#xff0c;变成了可以计算的字符数组&#xff0c;属于字符串了。 写0 和 写 ‘\0’ 是一样的。因为单引号里面使用了转义字符&#xff0c;他俩都表示的大小都是十进制的0。只不过占用的内存空间不同&#xff0c;一个是4字节&#xff0c…

微服务简介及其相关技术栈

目录 1、简介 2、技术栈 3、单体架构 4、分布式架构 5、微服务 6、总结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Pyth…

Day20-磁盘管理

Day20-磁盘管理 1. cut 切:2. 磁盘历史和内外部物理结构介绍2.1 磁盘发展趋势和实现措施2.2 磁盘知识的体系结构2.3 机械磁盘的外部结构2.4 SSD固态硬盘的外部结构2.5 固态硬盘内部结构2.6 缓存在服务器各硬件上的速度和大小对比另类维度图解&#xff0c;从上到下由高速到低速&…

【rust】12、编译为 linux x86 目标

一、编译为 linux x86 目标 1.1 musl-cross 要实现 Linux 平台可以运行的程序&#xff0c;那么需要使用 musl 来替代 glibc&#xff0c;musl 实现了Linux libc。 musl 在 macOS 上使用 musl-cross, musl-cross 是用来专门编译到 Linux 的工具链&#xff0c; 下面进行安装&…