Matlab|【重磅】配电网故障重构/孤岛划分

目录

1 主要内容

1.1 背景

1.2 流程图

2 部分代码

3 程序结果

4 下载链接


主要内容

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

1.1 背景

当配电网系统发生系统故障由正常的运行状态进入故障状态运行时,一般的恢复性重构的做法是控制一些开关的通断来将故障线路断开,并将非故障线路重新恢复供电,当配电网中含有 DG 并网运行时,这种做法有可能会导致 DG被迫断开停止供电或者转为孤岛运行,只有等到电力系统的故障排除恢复正常后DG 才能重新接入电网运行,这种做法使得 DG 的利用率和供电能力大大降低,使得 DG 无法充分利用。所以当系统发生故障时,如何使 DG 能够充分的参与到网络的恢复性重构,而不是中断供电,对于提高 DG 的利用率和供电可靠性、降低系统中线路的有功损耗、提高系统的电能质量。

恢复重构目标:当配电系统发生系统故障时,具有独立供电能力的 DG 划为孤岛,使得失电负荷量尽可能最小;孤岛外的配电网可以通过控制开关的通断实现故障后的恢复。对孤岛外的配电网进行恢复性重构的过程中,需要检测岛外是否还有失电负荷,若有,则需要利用联络开关将其接入剩余的配电网中,若存在能够和主网相连接且不具有独立供电能力的 DG,将其接入主网,进行配电网重构。

1.2 流程图

部分代码

clear,clc,close all
currentFolder = pwd;
​
addpath(genpath(currentFolder));% 将matpower加入搜索路径
dgData.dgBus = [6 13 24 31]+1;
dgData.bFlag = [0 1 1 1];% 是否具有独立供电能力
dgData.sFlag = [1 1 0 1];% 故障后能够与主网保持连接
dgData.cFlag = [1 1 1 1];% 是否具有控制调度中心保持通信的能力
dgData.factor = [0.85 0.9 0.8 0.9];
dgData.power = [700 500 1000 650];
netData = case33bw;
disp('****************划分孤岛******************');
island = SetIsland(dgData,netData);% 设置孤岛
falutBranch  = [28];
% falutBranch = [9 22];% 故障支路
disp('****************发生故障******************');
netData = RunIsland(netData,dgData,island,falutBranch);%根据故障确定实际孤岛
disp('****************恢复重构******************');
netData = Reconfig(netData);% 恢复重构
rmpath(genpath(currentFolder));if nargin<1dgBus = [6 13 24 31]+1;bFlag = [0 1 1 1];% 是否具有独立供电能力sFlag = [0 0 1 0];% 故障后能够与主网保持连接cFlag = [1 1 1 1];% 是否具有控制调度中心保持通信的能力
​dgPower = [700 500 1000 650];netData = case33bw;elsedgBus = dgData.dgBus;bFlag = dgData.bFlag;% 是否具有独立供电能力sFlag = dgData.sFlag;% 故障后能够与主网保持连接cFlag = dgData.cFlag;% 是否具有控制调度中心保持通信的能力
​dgPower = dgData.power;endbus = netData.bus;busPower = bus(:,3)'*1e3;% 有功功率busQower = bus(:,4)'*1e3;% 无功功率branch = netData.branch;branch(branch(:,11)==0,:) = [];% 删除联络开关busNum = length(netData.bus(:,1));% 节点数量island = zeros(1,busNum);w = zeros(1,busNum);w([5 6 12 13 23 24 29 31]+1) = 100;% 一类负荷w([7 11 15 22 26 30 32]+1) = 10;% 二类负荷w([1 2 3 4 8 9 10 14 16 17 18 19 20 21 25 27 28]+1) = 1;% 三类负荷M1 = sparse(branch(:,1),branch(:,2),branch(:,3),busNum,busNum);% tril returns the lower triangular part of the matrix.islandPower = zeros(1,length(dgBus));M2 = tril(M1+M1');for idg = 1:length(dgBus)if bFlag(idg)==1% 是否具有独立供电能力island(dgBus(idg)) = idg;islandPower(idg) = busPower(dgBus(idg));flag = 1;while flag% 当flag=0跳出循环islandBus = find(island==idg);% 已纳入孤岛的节点willBus = [];willPower = [];willDis = [];for ibus = 1:busNumif island(ibus)==0% 节点ibus尚未纳入孤岛[dist,path] = graphshortestpath(M2,dgBus(idg),ibus,'Directed',false);path(end) = [];if all(ismember(path,islandBus))% 拟加入节点到DG的路径上的节点已经被纳入孤岛willPower = [willPower,busPower(ibus)*w(ibus)];willDis = [willDis,dist];willBus = [willBus,ibus];endendend[~,idx] = sort(willPower,'descend');% 排序% willPower = willPower(idx);% willDis = willDis(idx);willBus = willBus(idx);flag = 0;for ift = 1:length(willBus)if islandPower(idg)+busPower(willBus(ift))<=dgPower(idg)% 判断新纳入的节点容量是否超过DG容量island(willBus(ift)) = idg;islandPower(idg) = islandPower(idg)+busPower(willBus(ift));flag = 1;break;endendendendendfor idg = 1:length(dgData.dgBus)fprintf('DG%d对应的孤岛\n',idg);disp(find(island==idg));fprintf('岛内负荷%d+j%d\n',sum(busPower(island==idg)),sum(busQower(island==idg)));end
end

程序结果

4 下载链接

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法训练记录——Day24】

Day24——回溯算法Ⅰ 77.组合 今日内容&#xff1a; ● 理论基础 ● 77. 组合 理论&#xff1a;代码随想录 77.组合 思路&#xff1a;k层for循环&#xff0c;不会 回溯&#xff0c;将组合问题抽象成n叉树&#xff0c;for循环控制宽度&#xff0c;递归的深度控制二叉树的深度 …

CSS学习笔记之高级教程(五)

23、CSS 媒体查询 - 实例 /* 如果屏幕尺寸超过 600 像素&#xff0c;把 <div> 的字体大小设置为 80 像素 */ media screen and (min-width: 600px) {div.example {font-size: 80px;} }/* 如果屏幕大小为 600px 或更小&#xff0c;把 <div> 的字体大小设置为 30px …

程序员的五大职业素养,你知道吗?

程序员职业生涯的挑战与机遇 在当今这个科技日新月异的时代&#xff0c;程序员作为技术行业的中坚力量&#xff0c;其职业生涯无疑充满了无数挑战与机遇。技术的快速迭代要求他们必须不断学习新知识、掌握新技能&#xff0c;以跟上时代的步伐。同时&#xff0c;云计算、人工智…

学习经验分享篇(1)——怎样将示波器数据(.CSV数据)导入Matlab/Simulink中并进行FFT分析(电机控制/电力电子方向必备技能)

最近比较忙&#xff0c;没怎么更新&#xff0c;后续打算不断出一些学习贴。 1.为什么要出这篇文章&#xff1f; &#xff08;1&#xff09;我当时第一次导示波器数据进入Matlab里面的时候&#xff0c;一直疯狂报错&#xff0c;搞了好久。 &#xff08;2&#xff09;好多同学现…

一点连接千家银行,YonSuite让“银行回单”一键获取

在当今日益复杂多变的商业环境中&#xff0c;企业的资金管理变得尤为重要。传统的银行回单管理方式&#xff0c;如手动登录网银、逐一下载回单、核对信息等&#xff0c;不仅效率低下&#xff0c;而且容易出错&#xff0c;给企业的财务管理带来了极大的挑战。 然而&#xff0c;…

【Pytorch】深入Pytorch模型的训练、log、可视化

文章目录 模型训练的模板综合案例-Pytorch 官网demo优化记录日志解析日志增加tensorboard数据记录保存训练曲线模型参数可视化增加wandb数据记录模型训练的模板 综合案例-Pytorch 官网demo pytorch 官网tutorial-quickstart https://blog.csdn.net/weixin_39107270/article/de…

安装 Android Studio 2024.1.1.6(Koala SDK35)和过程问题解决

记录更新Android Studio版本及适配Android V应用配置的一些过程问题。 安装包&#xff1a;android-studio-2024.1.1.6-windows.exe原版本&#xff1a;Android Studio23.2.1.23 Koala 安装过程 Uninstall old version 不会删除原本配置&#xff08;左下角提示&#xff09; Un…

YOLOv5改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 + 完整代码】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 目标检测是计算机视觉中一个重要的下游任务。对于边缘盒子的计算平台来说&#xff0c;一个大型模型很难实现实时检测的要求。基于一系列消融…

MQ之初识kafka

1. MQ简介 1.1 MQ的诞生背景 以前网络上的计算机&#xff08;或者说不同的进程&#xff09;传递数据&#xff0c;通信都是点对点的&#xff0c;而且要实现相同的协议&#xff08;HTTP、 TCP、WebService&#xff09;。1983 年的时候&#xff0c;有个在 MIT 工作的印度小伙突发…

前端开发记录

一.Node相关 镜像&#xff1a;registry "https://registry.npmmirror.com" 二.Eslint格式检查 关闭语法格式检查

【MySQL03】【 Buffer Pool】

文章目录 一、前言二、缓冲池&#xff08;Buffer Pool &#xff09;1. 缓冲池的概念2. LRU List、Free List 和 Flush List2.1 Free 链表2.1.1 缓冲页的哈希处理 2.2 Flush 链表2.3 LRU 链表2.3.1 简单 LRU 链表2.3.2 优化后的 LRU 列表2.3.3 更进一步的优化 3. 脏页的刷新4. 多…

B端产品无爆款,说有的都是忽悠和外行!

前言&#xff1a;网上经常有人讲运营&#xff0c;把C端那一套硬搬到B端&#xff0c;讲的自我陶醉&#xff0c;稍微有点常识的人就知道不能这么玩。 一、什么是B端和C端 B端&#xff08;Business-to-Business&#xff09;是指面向企业客户的市场和产品。B端产品或服务主要是为…

Elastic Connectors:增量同步对性能的影响

作者&#xff1a;Artem Shelkovnikov Elastic 连接器是一种 Elastic 集成&#xff0c;可将数据从原始数据源同步到 Elasticsearch 索引。连接器使你能够创建可搜索的只读数据源副本。 有许多连接器支持各种第三方&#xff0c;例如&#xff1a; MongoDB各种 SQL DBMS&#xff…

【大学物理实验】速通双语版

0首先&#xff0c;我们要学什么&#xff1f;outlook&#xff01; 1measurement 2system error&random error 3significant figures 4uncertainty of direct measurement and indirect measurement 5data processing 1 measurement Important points to remember&#…

从Multisim到Proteus,再到SmartEDA:电子设计软件的进化之旅

在电子设计领域&#xff0c;软件工具的演进犹如一条璀璨的轨迹&#xff0c;记录着科技进步的每一个步伐。从Multisim的初创&#xff0c;到Proteus的崛起&#xff0c;再到如今SmartEDA的崭露头角&#xff0c;这些电子设计软件不仅极大地提升了设计效率&#xff0c;更推动了整个行…

fly-barrage 前端弹幕库(6):实现人像免遮挡

项目官网地址&#xff1a;https://fly-barrage.netlify.app/&#xff1b; &#x1f451;&#x1f40b;&#x1f389;如果感觉项目还不错的话&#xff0c;还请点下 star &#x1f31f;&#x1f31f;&#x1f31f;。 Gitee&#xff1a;https://gitee.com/fei_fei27/fly-barrage&a…

vue3+vant4 二次封装IndexBar城市列表组件以及性能优化

前言 二次封装城市列表以及对静态资源的引入做异步引入优化。 版本号: vue3.3 vant4 效果图 数据源 城市列表 city.json 永久网盘链接 链接&#xff1a;https://pan.baidu.com/s/10E-b441-4P7mjvomlJhm0g 提取码&#xff1a;m92c 字段大致讲解 indexList &#xff1a;每个字…

开窗函数!

开窗函数&#xff08;Window Function&#xff09;是SQL中的一种高级功能&#xff0c;允许你在一组相关行&#xff08;一个“窗口”&#xff09;上执行聚合操作&#xff0c;而不像传统聚合函数&#xff08;如SUM(), AVG(), COUNT()&#xff09;那样将所有匹配行合并成单个汇总行…

大数据的数据采集

大数据采集是指从各种来源收集大量数据的过程&#xff0c;这些数据通常是结构化或非结构化的&#xff0c;并且可能来自不同的平台、设备或应用程序。大数据采集是大数据分析和处理的第一步&#xff0c;对于企业决策、市场分析、产品改进等方面具有重要意义。以下是大数据采集的…

Vue3项目炫酷实战,检测密码强度值

在前端项目开发中&#xff0c;确保用户密码的强度是保护账户安全的重要措施。本文将演示如何使用Vue 3实现一个简单的密码强度检测功能。通过实时反馈&#xff0c;帮助用户创建更安全的密码&#xff0c;从而提升整体系统的安全性。无论您是前端开发新手还是经验丰富的开发者&am…