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

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

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥



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



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


📋 📋 📋 本文目录如下: 🎁 🎁 🎁

目录

💥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 算例结果


7375c60c0fe1b5bdf8f0efdc60186d2e.png


145112cca031f2042e9170c30c8968d4.png


13d1413f894d6106472a75f44513b4fc.png


24abf5a1ae1c627f725d8f990d481706.png


2.2 仿真结果


4ead0bd2239f9af9da27cc3054425c95.png


333fee174b6d3b0423c9b29e56660785.png


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代码、数据、文章讲解

相关文章
|
2天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
2天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
2天前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
2天前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
2天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
2天前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
2天前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
2天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
2天前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)

热门文章

最新文章