【配电网重构】【SOE】随机配电网重构中的开关开换方法研究(Matlab代码实现)

news2024/11/15 17:42:23
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
2.1 算例结果
2.2 仿真结果
2.3 结论
🎉3 参考文献
🌈4 Matlab代码、数据、文章讲解

💥1 概述

摘要:配电网重构(DNR)的目的是确定配电网的最优拓扑结构,是降低电网功率损耗的有效措施。电力负荷需求和光伏(PV)输出是不确定的,并随时间变化,将影响最佳网络拓扑结构。单小时确定性DNR无法处理这种不确定性和可变性。为此,本文提出了求解多小时随机DNR (SDNR)的方法。现有的DNR求解方法要么不准确,要么过于耗时,因此无法求解大型配电网的多小时sdnr。为此,提出了一种开关开交换(SOE)方法。从所有开关关闭的环路网络开始,SOE由三个步骤组成。第一步是依次打开开关,直到打开所有循环。第二步和第三步修改第一步中获得的分支的状态,以获得更好的径向拓扑。通过5个试验系统验证了该方法的准确性和快速求解速度,以及多小时SDNR优于单小时确定性DNR的优越性。

📚2 运行结果

2.1 算例结果

编辑

2.2 仿真结果

2.3 结论

提出了一个多小时的SDNR来处理可变和不确定的负载和PV输出。现有的SDNR方法要么不准确,要么太耗时。因此,提出了一种精确、快速的启发式方法SOE,同时求解SDNR和DDNR。SOE由三个步骤组成。第一步可以快速获得相对准确的初始解,第二步和第三步进一步提高精度。仿真结果表明,与其他启发式方法相比,SOE 1)精度更高,2)在单小时DDNRs中的精度几乎与MP相当(99.71% ~ 100%),3)在求解多小时DDNRs时明显优于MP(例如损失减少19.65%)。SOE的解决速度明显快于MP(例如,快72-2325倍)。因此,SOE在精度和/或求解速度方面优于MP和其他启发式方法,特别是在求解大规模多小时DDNRs时。仿真结果还表明:1)解决多小时DDNR/SDNR比解决单小时DDNR/SDNR能获得更好的结果,即具有更低的损耗和/或满足电压限制;2)阻塞DDNR/SDNR能在损耗和开关动作数之间实现良好的平衡,而小时DDNR/SDNR有很多开关动作,24小时DDNR/SDNR有很高的损耗;3) SDNR优于DDNR,当负载(PV输出)低于(高于)其预测值时,DDNR的结果可能会违反电压上限。

部分代码:

warning('off')

addpath(pathdef)

mpopt = mpoption;

mpopt.out.all = 0; % do not print anything

mpopt.verbose = 0;

version_LODF = 0 % 1: use decrease_reconfig_algo_LODF.m

% 0: use decrease_reconfig_algo.m

distancePara = 10

combine3 = 1

candi_brch_bus = []; % candidate branch i added to bus j

% mpc0 = case417;

casei=4

d417_v2

substation_node = 1; n_bus = 417;

n1 = 3

n2 = 2

n1_down_substation = n1+1; n2_up_ending = n2;

Branch0 = Branch;

brch_idx_in_loop0 = unique(brch_idx_in_loop(:));

show_biograph1 = 0;

show_biograph = 0;

%% original network's power flow (not radial)

% show_biograph(Branch, Bus)

from_to = show_biograph_not_sorted(Branch, substation_node, show_biograph1);

mpc = generate_mpc(Bus, Branch, n_bus);

res_orig = runpf(mpc, mpopt);

losses = get_losses(res_orig.baseMVA, res_orig.bus, res_orig.branch);

loss0 = sum(real(losses));

fprintf('case417_tabu: original loop network''s loss is %.5f \n\n', loss0)

% for each branch in a loop,

% if open that branch does not cause isolation, check the two ending buses

% of that branch for connectivity, realized by shortestpath or conncomp

% calculate the lowest loss increase, print out the sorted loss increase

% open the branch with lowest loss increase

% stop criterion: number of buses - number of branches = 1

%% ------------------------ Core algorithm ------------------------%%

ff0 = Branch(:, 1); ff = ff0;

tt0 = Branch(:, 2); tt = tt0;

t1 = toc;

if version_LODF

[Branch] = decrease_reconfig_algo_LODF(Bus, Branch, brch_idx_in_loop, ...

ff0, tt0, substation_node, n_bus, loss0, distancePara); %%% core algorithm

else

[Branch] = decrease_reconfig_algo(Bus, Branch, brch_idx_in_loop, ff0, tt0, ...

substation_node, n_bus, loss0); %%% core algorithm

end

t2 = toc;

time_consumption.core = t2 - t1

% output of core algorithm

from_to = show_biograph_not_sorted(Branch(:, [1 2]), substation_node, ...

show_biograph1);

from_to0 = from_to;

mpc = generate_mpc(Bus, Branch, n_bus);

res_pf_dec = runpf(mpc, mpopt);

losses = get_losses(res_pf_dec.baseMVA, res_pf_dec.bus, res_pf_dec.branch);

loss0_dec = sum(real(losses)); %

fprintf('case417_tabu: radial network obtained by my core algorithm''s loss is %.5f \n\n', loss0_dec)

Branch_loss_record = [];

% record Branch and loss

Branch_loss_record.core.Branch = Branch;

Branch_loss_record.core.loss = loss0_dec;

%% prepare force open branches for tabu: branch_idx_focused

if get_brch_tabu_v2 == 1

[branch_idx_focused] = get_branch_idx_focused_for_tabu_v2( ...

from_to, Branch0, Branch, substation_node, brch_idx_in_loop0, n_bus, ...

n1_down_substation, n2_up_ending); % to answer reviewer 5-5's question

else

[branch_idx_focused] = get_branch_idx_focused_for_tabu( ...

from_to, Branch0, Branch, substation_node, brch_idx_in_loop0, n_bus, ...

n1_down_substation, n2_up_ending);

end

%% ------------------------ Tabu algorithm ------------------------%%

% run the core program for each upstream branch connected to the idx_force_open

% idx_considered = [35 69]

% for iter = idx_considered

for iter = 1:length(branch_idx_focused)

fprintf('iter=%d/%d\n', iter, length(branch_idx_focused));

Branch = Branch0;

Branch(branch_idx_focused(iter), :) = [];

ff0 = Branch(:, 1); ff = ff0;

tt0 = Branch(:, 2); tt = tt0;

brch_idx_in_loop = brch_idx_in_loop0;

idx_tmp = find(brch_idx_in_loop == branch_idx_focused(iter));

if isempty(idx_tmp)

else

brch_idx_in_loop(idx_tmp) = [];

brch_idx_in_loop(idx_tmp:end) = brch_idx_in_loop(idx_tmp:end)-1;

end

t1 = toc;

%%------------------- core algorithm in Tabu loop--------------------%%

if version_LODF

[Branch] = decrease_reconfig_algo_LODF(Bus, Branch, brch_idx_in_loop, ...

ff0, tt0, substation_node, n_bus, loss0, distancePara); %%% core algorithm

else

[Branch] = decrease_reconfig_algo(Bus, Branch, brch_idx_in_loop, ff0, tt0, ...

substation_node, n_bus, loss0); %%% core algorithm

end

t2 = toc;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码、数据、文章讲解

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

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

相关文章

数组index相同的数组进行合并

index相等的数据进行合并 let formJson [{remind: "请输入电话",sort: 0,title: "电话",type: 1,uuid: "15e343c1-060d-TL51f-8ace-23a968e9e2b9"},{remind: "请输入姓名",sort: 0,title: "姓名",type: 1,uuid: "15e…

文件,IO流,FileInputStream,FileOutputStream,FileReader和FileWriter是字符流

文件就是保存数据的地方文件流&#xff1a;文件在程序中是以流的形式来操作的 java程序&#xff08;内存&#xff09;<-----输入流-----文件&#xff08;磁盘&#xff0c;光盘等&#xff09;java程序&#xff08;内存&#xff09;------输出流----->文件&#xff08;磁盘…

用栈的思想实现将一个十进制数字转换为八进制--数据结构

魔王的介绍&#xff1a;&#x1f636;‍&#x1f32b;️一名双非本科大一小白。魔王的目标&#xff1a;&#x1f92f;努力赶上周围卷王的脚步。魔王的主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王.&#x1f525;&#x1f525;&#x1f525; ❤️‍&#x1f…

单点定位2米精度?这张卡差点干掉了RTK(内有轨迹对比图)

单点定位2米精度&#xff1f;现在的定位芯片卷成这样了&#xff1f;上面两张卡一款是主打高性能融合定位的星斗3&#xff0c;另一款是主打高性价比高精度低功耗的DNA-1&#xff0c;今天小编给两张定位卡做评测。 话不多说先上轨迹图&#xff1a; 这张图是我们拿着星斗3号RTK定…

小程序封装拖拽菜单组件(uniapp拖拽排序,自定义菜单)

效果展示 思路 使用movable-area作为可移动区域,并在内部循环渲染列表项view,绑定touch事件。在mounted生命周期函数内获取区域movable-area的dom信息,记录列表项的坐标信息。在methods中定义了列表项的touchstart、touchmove和touchend事件的方法,用于实现列表项的拖拽移动和…

偶数社区投稿丨OushuDB学习实践系列(一):开一家超市

大家好&#xff0c;我是镜镜呀&#xff0c;也是一名技术开发人员。本系列内容&#xff0c;也将由技术点出发&#xff0c;从数据库的使用、实践开始&#xff0c;逐步增加对整体的认知&#xff0c;由点及面&#xff0c;真正理解 OushuDB、数据湖仓一体在技术上的变革&#xff0c;…

@Configuration 和 @Component 注解的区别

一句话概括就是 Configuration 中所有带 Bean 注解的方法都会被动态代理&#xff0c;因此调用该方法返回的都是同一个实例。 理解&#xff1a;调用Configuration类中的Bean注解的方法&#xff0c;返回的是同一个示例&#xff1b; 而调用Component类中的Bean注解的方法&#x…

【社区图书馆】携程架构与实践图书

发这篇博文主要是想学习一下携程的架构。携程出了一本《携程架构实践》&#xff0c;无奈现在还没开源。看京东价大概109元人民币。如果看到次博文的网友能发我一本《携程架构实践》pdf。不胜感谢。或者实体书籍也行。其实我不怎么需要实体书籍&#xff0c;因为技术的东西很快会…

使用 IDEA 远程 Debug 调试

背景 有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以springboot微服务为例。首先&#xff0c;启动springboot需要加上特定的参数。…

小白下载以后打不开怎么解决

我们重装系统时&#xff0c;大家会遇到各种各样的问题&#xff0c;现在有一些想用小白一键重装系统工具来帮助自己完成系统重装时&#xff0c;却发现我们打不开这个工具&#xff0c;现在不知道其原因有哪些&#xff0c;那么大家今天就来告诉小伙伴们小白一键重装官网下载以后打…

计算机概述

计算机&#xff1a; 硬件&#xff1a; CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09;靠大脑思考&#xff0c;电脑靠CPU来运算、控制。硬盘&#xff08;Hard Disk Drive&#xff09; 计算机最主要的存储设备&#xff0c;容量大&#xff0c;断电数…

创新,阿里首发微服务实施手册我粉了,原来微服务还可以这样玩

微服务 相信大家在网上会看到很多帖子把分布式跟微服务放在一起讨论。确实&#xff0c;微服务就是一种分布式架构的设计方法。但是&#xff0c;在微服务概念还没有出现之前&#xff0c;分布式这个概念并不能引起人们的强烈关注&#xff0c;如果说自己擅长分布式架构设计&#…

TCP,TCP 连接建立,TCP 连接断开,Socket 编程

目录 TCP基本认识 TCP 头格式有哪些&#xff1f; 为什么需要 TCP 协议&#xff1f; TCP 工作在哪一层&#xff1f; 什么是 TCP &#xff1f; 什么是 TCP 连接&#xff1f; #如何唯一确定一个 TCP 连接呢&#xff1f; UDP 和 TCP 有什么区别呢&#xff1f;分别的应用场景是…

【教学类-34-02】拼图(英文大写字母)3*2格子(中班主题《个别化拼图》偏艺术-美术)

作品展示&#xff1a; 背景需求 3*4块运动拼图对幼儿有点难&#xff08;不熟悉图案内容、拼图数量多&#xff09; 1、选择幼儿相对熟悉的的字母&#xff08;26个&#xff0c;基本满足28人&#xff09; 2、拼图数量&#xff1a;2*36块 3、做的小一点&#xff0c;一张2份&am…

【软件测试面试】全网最全,自动化测试面试题总结大全(付答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题1&#xff…

企企通项目入选《2023爱分析·供应链和采购数字化最佳实践案例》

近日&#xff0c;“2023爱分析供应链和采购数字化最佳实践案例”评选活动落下帷幕&#xff0c;主要围绕实践领先性、案例创新性、应用成熟度、价值创造四个维度对候选实践案例进行评选。企企通凭借自身丰富的采购供应链解决方案经验&#xff0c;以“迈金科技采购数字化管理平台…

美洽迈入“生成式AI时代”,开启智能客服新纪元!

生成式 AI&#xff0c;当前科技领域最热门的话题之一。 它指的是一类人工智能模型&#xff0c;可以根据输入的数据&#xff0c;自动生成新的数据或者输出一些有用的信息&#xff0c;例如&#xff1a;文本、图像、音频、视频等等。 在实际应用中&#xff0c;生成式AI可以帮助人…

“COMSOL电化学系列,锂离子电池仿真,燃料电池仿真

背景&#xff1a; 电化学仿真技术通过对电池微观行为进行研究&#xff0c;明晰电池内部多现象机理&#xff0c;并将其数值化&#xff0c;通过数值方法实现对物理特征联合计算&#xff0c;建立完整的电池模型。COMSOL Multiphysics具有强大的多物理场全耦合仿真分析功能、高效的…

Django框架介绍及搭建开发环境

介绍 是一个开放源代码的web应用框架&#xff0c;由python编写。 与常规的MVC架构不同&#xff0c;为MTV架构。 MTV Model(模型)&#xff1a;负责业务对象和数据库的关系映射&#xff08;ORM&#xff09;。 Template(视图)&#xff1a;负责把页面展示给用户&#xff08;htm…

Win32API之实现远程线程注入(九)

什么是注入 注入是一种在不知情或未经许可的情况下向其他进程中注入模块并试图执行它们的技术 常见的注入方式有&#xff1a;远程线程注入、APC注入、消息钩子注入、注册表注入、导入表注入、输入法注入等等 什么是远程线程注入 远程线程注入是一种技术&#xff0c;可以将一…