【优化配置】基于粒子群算法PSO求解电力系统网络重配置优化问题附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
一、研究背景
(一)电力系统运行优化的重要性
电力系统作为现代社会的能源支柱,其高效、稳定运行至关重要。网络重配置作为一种重要的运行优化手段,旨在通过改变电力系统中开关的状态,调整网络拓扑结构,从而优化电力系统的性能。这不仅有助于降低网络损耗,提高电能质量,还能增强系统的可靠性和安全性,满足日益增长的电力需求。
(二)传统方法的局限性
传统的电力系统网络重配置方法,如枚举法、线性规划法等,存在一定的局限性。枚举法虽然能够保证找到全局最优解,但随着系统规模的增大,计算量呈指数级增长,在实际应用中往往不可行。线性规划法通常需要对问题进行线性化假设,然而电力系统具有高度的非线性特性,这使得线性规划法的求解结果可能与实际最优解存在较大偏差。因此,需要一种更高效、更能适应电力系统复杂特性的优化算法。
(三)智能优化算法的兴起
随着智能计算技术的发展,智能优化算法逐渐应用于电力系统网络重配置领域。粒子群算法(PSO)作为一种高效的智能优化算法,以其原理简单、易于实现、收敛速度快等优点,在解决复杂优化问题方面展现出独特的优势,为电力系统网络重配置优化提供了新的思路和方法。
二、粒子群算法 PSO 原理
(一)基本概念
粒子群算法源于对鸟群觅食行为的模拟。在 PSO 中,每个优化问题的潜在解被看作是搜索空间中的一只 “粒子”,所有粒子都有一个由优化问题的适应度函数决定的适应度值,并且每个粒子都有自己的速度,用于决定粒子在搜索空间中的移动方向和距离。粒子通过跟踪两个 “极值” 来更新自己的位置:一个是粒子自身所找到的最优解,称为个体极值(pbest);另一个是整个粒子群目前找到的最优解,称为全局极值(gbest)。
(二)算法流程
- 初始化
:随机生成一定数量的粒子,每个粒子在搜索空间中都有初始位置和初始速度。粒子的位置代表电力系统网络重配置问题的一个可能解,即开关状态的一种组合。
- 适应度计算
:根据电力系统网络重配置的目标函数(如最小化网络损耗、最大化系统可靠性等),计算每个粒子的适应度值。适应度值反映了该粒子所代表的网络配置方案的优劣程度。
- 更新个体极值和全局极值
:将每个粒子当前的适应度值与其历史最佳适应度值(pbest)进行比较,如果当前适应度值更好,则更新 pbest。同时,比较所有粒子的 pbest,找出其中最优的粒子,将其位置和适应度值作为全局极值(gbest)。
(二)PSO 应用
- 编码方式
:将电力系统网络中的开关状态进行编码,每个粒子的位置对应一种开关状态组合。例如,可以用二进制编码,“0” 表示开关断开,“1” 表示开关闭合。这样,粒子在搜索空间中的位置就代表了电力系统网络的一种重配置方案。
- 适应度函数
:将电力系统网络重配置的目标函数作为 PSO 的适应度函数。在每次迭代中,根据粒子所代表的网络重配置方案,计算潮流分布,进而计算适应度值,评估该方案的优劣。
- 约束处理
:对于潮流约束、电压约束和线路容量约束等,采用罚函数法或可行解搜索策略等方法进行处理。罚函数法是在适应度函数中加入与约束违反程度相关的惩罚项,当粒子所代表的解违反约束时,通过增大惩罚项的值来降低其适应度值,从而引导粒子向满足约束的区域搜索。可行解搜索策略则是在生成初始粒子或更新粒子位置时,确保粒子始终处于满足约束的可行解空间内。
⛳️ 运行结果
📣 部分代码
function [RugiRugi]=LoadFlow(Switch,k,i)
% ===========load flow ==============================%
basemva = 1100; accuracy = 0.001; maxiter = 100; accel = 1.8;
% Bus Bus Voltage Angle ---Load--- -----Generator----- Shunt
% No code Mag. Degree MW Mvar MW Mvar Qmin Qmax Mvar
busdata=[70 1 1.0 0.0 0.0 0.0 0.0 0.0 0 0 0
1 1 1.0 0.0 0.0 0.0 0.0 0.0 0 0 0
2 0 1.0 0.0 100.0 90.0 0.0 0.0 0 0 0
3 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
4 0 1.0 0.0 150.0 130.0 0.0 0.0 0 0 0
5 0 1.0 0.0 75.0 50.0 0.0 0.0 0 0 0
6 0 1.0 0.0 15.0 9.0 0.0 0.0 0 0 0
7 0 1.0 0.0 18.0 14.0 0.0 0.0 0 0 0
8 0 1.0 0.0 13.0 10.0 0.0 0.0 0 0 0
9 0 1.0 0.0 16.0 11.0 0.0 0.0 0 0 0
10 0 1.0 0.0 20.0 10.0 0.0 0.0 0 0 0
11 0 1.0 0.0 16.0 9.0 0.0 0.0 0 0 0
12 0 1.0 0.0 50.0 40.0 0.0 0.0 0 0 0
13 0 1.0 0.0 105.0 90.0 0.0 0.0 0 0 0
14 0 1.0 0.0 25.0 15.0 0.0 0.0 0 0 0
15 0 1.0 0.0 40.0 25.0 0.0 0.0 0 0 0
16 0 1.0 0.0 100.0 60.0 0.0 0.0 0 0 0
17 0 1.0 0.0 40.0 30.0 0.0 0.0 0 0 0
18 0 1.0 0.0 60.0 30.0 0.0 0.0 0 0 0
19 0 1.0 0.0 40.0 25.0 0.0 0.0 0 0 0
20 0 1.0 0.0 15.0 9.0 0.0 0.0 0 0 0
21 0 1.0 0.0 13.0 7.0 0.0 0.0 0 0 0
22 0 1.0 0.0 30.0 20.0 0.0 0.0 0 0 0
23 0 1.0 0.0 90.0 50.0 0.0 0.0 0 0 0
24 0 1.0 0.0 50.0 30.0 0.0 0.0 0 0 0
25 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
26 0 1.0 0.0 100.0 80.0 0.0 0.0 0 0 0
27 0 1.0 0.0 80.0 65.0 0.0 0.0 0 0 0
28 0 1.0 0.0 100.0 60.0 0.0 0.0 0 0 0
29 0 1.0 0.0 100.0 55.0 0.0 0.0 0 0 0
30 0 1.0 0.0 120.0 70.0 0.0 0.0 0 0 0
31 0 1.0 0.0 105.0 70.0 0.0 0.0 0 0 0
32 0 1.0 0.0 80.0 50.0 0.0 0.0 0 0 0
33 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
34 0 1.0 0.0 13.0 8.0 0.0 0.0 0 0 0
35 0 1.0 0.0 16.0 9.0 0.0 0.0 0 0 0
36 0 1.0 0.0 50.0 30.0 0.0 0.0 0 0 0
37 0 1.0 0.0 40.0 28.0 0.0 0.0 0 0 0
38 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
39 0 1.0 0.0 40.0 30.0 0.0 0.0 0 0 0
40 0 1.0 0.0 30.0 25.0 0.0 0.0 0 0 0
41 0 1.0 0.0 150.0 100.0 0.0 0.0 0 0 0
42 0 1.0 0.0 60.0 35.0 0.0 0.0 0 0 0
43 0 1.0 0.0 120.0 70.0 0.0 0.0 0 0 0
44 0 1.0 0.0 90.0 60.0 0.0 0.0 0 0 0
45 0 1.0 0.0 18.0 10.0 0.0 0.0 0 0 0
46 0 1.0 0.0 16.0 10.0 0.0 0.0 0 0 0
47 0 1.0 0.0 100.0 50.0 0.0 0.0 0 0 0
48 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
49 0 1.0 0.0 90.0 70.0 0.0 0.0 0 0 0
50 0 1.0 0.0 85.0 55.0 0.0 0.0 0 0 0
51 0 1.0 0.0 100.0 70.0 0.0 0.0 0 0 0
52 0 1.0 0.0 140.0 90.0 0.0 0.0 0 0 0
53 0 1.0 0.0 60.0 40.0 0.0 0.0 0 0 0
54 0 1.0 0.0 20.0 11.0 0.0 0.0 0 0 0
55 0 1.0 0.0 40.0 30.0 0.0 0.0 0 0 0
56 0 1.0 0.0 36.0 24.0 0.0 0.0 0 0 0
57 0 1.0 0.0 30.0 20.0 0.0 0.0 0 0 0
58 0 1.0 0.0 43.0 30.0 0.0 0.0 0 0 0
59 0 1.0 0.0 80.0 50.0 0.0 0.0 0 0 0
60 0 1.0 0.0 240.0 120.0 0.0 0.0 0 0 0
61 0 1.0 0.0 125.0 110.0 0.0 0.0 0 0 0
62 0 1.0 0.0 25.0 10.0 0.0 0.0 0 0 0
63 0 1.0 0.0 10.0 5.0 0.0 0.0 0 0 0
64 0 1.0 0.0 150.0 130.0 0.0 0.0 0 0 0
65 0 1.0 0.0 50.0 30.0 0.0 0.0 0 0 0
66 0 1.0 0.0 30.0 20.0 0.0 0.0 0 0 0
67 0 1.0 0.0 130.0 120.0 0.0 0.0 0 0 0
68 0 1.0 0.0 150.0 130.0 0.0 0.0 0 0 0
69 0 1.0 0.0 25.0 15.0 0.0 0.0 0 0 0
];
% Line code
% Bus bus R X 1/2 B = 1 for lines
% nl nr p.u. p.u. p.u. > 1 or < 1 tr. tap at bus nl
linedata=[1 2 .01097 .01074 0.0 1 %1
2 3 .01463 .01432 0.0 1 %2
3 4 .00731 .00716 0.0 1 %3
4 5 .00366 .00358 0.0 1 %4
5 6 .01828 .01790 0.0 1 %5
6 7 .01097 .01074 0.0 1 %6
7 8 .00731 .00716 0.0 1 %7
8 9 .00731 .00716 0.0 1 %8
15 9 .00681 .00544 0.0 1 %9 switch 9 dipilih
4 10 .01080 .00734 0.0 1 %10
10 11 .01620 .01101 0.0 1 %11
11 12 .01080 .00734 0.0 1 %12
12 13 .01350 .00917 0.0 1 %13
13 14 .00810 .00550 0.0 1 %14
14 15 .01944 .01321 0.0 1 %15 ------------
7 68 .01080 .00734 0.0 1 %16
68 69 .01620 .01101 0.0 1 %17
1 16 .01097 .01074 0.0 1 %18
16 17 .00366 .00358 0.0 1 %19
17 18 .01463 .01432 0.0 1 %20
18 19 .00914 .00895 0.0 1 %21
19 20 .00804 .00787 0.0 1 %22
20 21 .01133 .01110 0.0 1 %23
22 67 .00254 .00203 0.0 1 %24 Switch 1
21 22 .00475 .00465 0.0 1 %25
62 65 .01080 .00734 0.0 1 %26
65 66 .00540 .00367 0.0 1 %27 dipilih
66 67 .01080 .00734 0.0 1 %28 -------- batas...
21 27 .00454 .00363 0.0 1 %29 Switch 3
17 23 .02214 .01505 0.0 1 %30
23 24 .01620 .01110 0.0 1 %31
24 25 .01080 .00734 0.0 1 %32
25 26 .00540 .00367 0.0 1 %33
26 27 .00540 .00367 0.0 1 %34 -------- dipilih
70 30 .00366 .00358 0.0 1 %35
30 31 .00731 .00716 0.0 1 %36
31 32 .00731 .00716 0.0 1 %37
32 33 .00804 .00787 0.0 1 %38
33 34 .01170 .01145 0.0 1 %39
34 35 .00768 .00752 0.0 1 %40
43 38 .00454 .00363 0.0 1 %41 Switch 8
35 36 .00731 .00716 0.0 1 %42 dipilih
36 37 .01097 .01074 0.0 1 %43
37 38 .01463 .01432 0.0 1 %44
42 43 .01296 .00881 0.0 1 %45 ------
39 59 .00454 .00363 0.0 1 %46 Switch 10 dipilih
32 39 .01080 .00734 0.0 1 %47 ------
39 40 .00540 .00367 0.0 1 %48
40 41 .01080 .00734 0.0 1 %49
41 42 .01836 .01248 0.0 1 %50
45 60 .00254 .00203 0.0 1 %51 Switch 7
40 44 .01188 .00807 0.0 1 %52
44 45 .00540 .00367 0.0 1 %53 dipilih
59 60 .01296 .00881 0.0 1 %54 --------
15 46 .00681 .00544 0.0 1 %55 Switch 11
42 46 .01080 .00734 0.0 1 %56 -------- dipilih
29 64 .00254 .00203 0.0 1 %57 Switch 5
27 28 .01080 .00734 0.0 1 %58
28 29 .01080 .00734 0.0 1 %59
62 63 .00810 .00550 0.0 1 %60
63 64 .01620 .01101 0.0 1 %61 ------ dipilih
9 50 .00908 .00726 0.0 1 %62 Switch 4 dipilih
35 47 .00540 .00367 0.0 1 %63
47 48 .01080 .00734 0.0 1 %64
48 49 .01080 .00734 0.0 1 %65
49 50 .01080 .00734 0.0 1 %66 --------
70 51 .00366 .00358 0.0 1 %67
51 52 .01463 .01432 0.0 1 %68
52 53 .01463 .01432 0.0 1 %69
53 54 .00914 .00895 0.0 1 %70
54 55 .01097 .01074 0.0 1 %71
55 56 .01097 .01074 0.0 1 %72
52 57 .00270 .00183 0.0 1 %73
57 58 .00270 .00183 0.0 1 %74
58 59 .00810 .00550 0.0 1 %75
55 61 .01188 .00807 0.0 1 %76
61 62 .01188 .00807 0.0 1 %77
9 38 .00381 .00244 0.0 1 %78 Switch 6
67 15 .00454 .00363 0.0 1]; %79 Switch 2
%Tabu=[27 79 34 62 61 78 53 42 9 46 56]
Tabu=[78 79];
linedata(Tabu,:)=[];
linedata(Switch(k,:,i),:)=[];
%---------------------------------------------------------------------------Pembentukan Matrix Ybus
%j=sqrt(-1); i = sqrt(-1);
nl = linedata(:,1);nr = linedata(:,2); R = linedata(:,3);
X = linedata(:,4); Bc = j*linedata(:,5); a = linedata(:, 6);
nbr=length(linedata(:,1));nbus = max(max(nl), max(nr));
Z = R + j*X; y= ones(nbr,1)./Z; % admitansi cabang
for n = 1:nbr
if a(n) <= 0, a(n) = 1; else end
Ybus=zeros(nbus,nbus); % inisialisasi Ybus
% pembentukan elemen off diagonal
for k=1:nbr;
Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k);
Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k));
end
end
% pembentukan elemen diagonal
for n=1:nbus
for k=1:nbr
if nl(k)==n
Ybus(n,n) = Ybus(n,n)+y(k)/(a(k)^2) + Bc(k);
elseif nr(k)==n
Ybus(n,n) = Ybus(n,n)+y(k) +Bc(k);
else, end
end
end
Ybus;
%-------------------------------------------------------------------Load Flow dengan Newton-Raphson
ns=0; ng=0; Vm=0; delta=0; yload=0; deltad=0;
nbus = length(busdata(:,1));
for k=1:nbus
n=busdata(k,1);
kb(n)=busdata(k,2);Vm(n)=busdata(k,3);delta(n)=busdata(k, 4);
Pd(n)=busdata(k,5); Qd(n)=busdata(k,6); Pg(n)=busdata(k,7); Qg(n) = busdata(k,8);
Qmin(n)=busdata(k, 9); Qmax(n)=busdata(k, 10);
Qsh(n)=busdata(k, 11);
if Vm(n) <= 0 Vm(n) = 1.0; V(n) = 1 + j*0;
else delta(n) = pi/180*delta(n);
V(n) = Vm(n)*(cos(delta(n)) + j*sin(delta(n)));
P(n)=(Pg(n)-Pd(n))/basemva;
Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;
S(n) = P(n) + j*Q(n);
end
end
for k=1:nbus
if kb(k) == 1, ns = ns+1; else, end
if kb(k) == 2 ng = ng+1; else, end
ngs(k) = ng;
nss(k) = ns;
end
Ym=abs(Ybus); t = angle(Ybus);
m=2*nbus-ng-2*ns;
maxerror = 1; converge=1;
iter = 0;
% Mulai Iterasi
clear A DC J DX
while maxerror >= accuracy & iter <= maxiter % Tes untuk Maks. Daya yang Tidak Sesuai
for i=1:m
for k=1:m
A(i,k)=0; %Inisialisasi Matrix Jacobian
end, end
iter = iter+1;
for n=1:nbus
nn=n-nss(n);
lm=nbus+n-ngs(n)-nss(n)-ns;
J11=0; J22=0; J33=0; J44=0;
for i=1:nbr
if nl(i) == n | nr(i) == n
if nl(i) == n, l = nr(i); end
if nr(i) == n, l = nl(i); end
J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));
if kb(n)~=1
J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));
J44=J44+ Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
else, end
if kb(n) ~= 1 & kb(l) ~=1
lk = nbus+l-ngs(l)-nss(l)-ns;
ll = l -nss(l);
% element off diagonal J1
A(nn, ll) =-Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
if kb(l) == 0 % element off diagonal J2
A(nn, lk) =Vm(n)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));end
if kb(n) == 0 % element off diagonal J3
A(lm, ll) =-Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n)+delta(l)); end
if kb(n) == 0 & kb(l) == 0 % element off diagonal J4
A(lm, lk) =-Vm(n)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));end
else end
else , end
end
Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;
Qk = -Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;
if kb(n) == 1 P(n)=Pk; Q(n) = Qk; end % Swing bus P
if kb(n) == 2 Q(n)=Qk;
if Qmax(n) ~= 0
Qgc = Q(n)*basemva + Qd(n) - Qsh(n);
if iter <= 7 % Antara Iterasi Ke-2 dan Ke-6
if iter > 2 % MVAR Bus-Bus Generator dites.
if Qgc < Qmin(n), % Jika tidak dalam batas Vm(n)
Vm(n) = Vm(n) + 0.01; % Maka Dirubah ke Langkah 0.01pu
elseif Qgc > Qmax(n), % untuk Memberi MVAR dengan Batas
Vm(n) = Vm(n) - 0.01;end % yang telah Ditentukan
else, end
else,end
else,end
end
if kb(n) ~= 1
A(nn,nn) = J11; %element diagonal J1
DC(nn) = P(n)-Pk;
end
if kb(n) == 0
A(nn,lm) = 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22; %element diagonal J2
A(lm,nn)= J33; %element diagonal J3
A(lm,lm) =-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44; %element diagonal J4
DC(lm) = Q(n)-Qk;
end
end
DX=A\DC';
for n=1:nbus
nn=n-nss(n);
lm=nbus+n-ngs(n)-nss(n)-ns;
if kb(n) ~= 1
delta(n) = delta(n)+DX(nn); end
if kb(n) == 0
Vm(n)=Vm(n)+DX(lm); end
end
maxerror=max(abs(DC));
if iter == maxiter & maxerror > accuracy
fprintf('\nPERINGATAN : Solusi Iteratif tidak Konvergen Setelah')
fprintf('%g', iter), fprintf(' iterasi.\n\n')
fprintf('Tekan Enter untuk Mengakhiri Iterasi dan Cetak Hasil Komputasi\n')
converge = 0; pause, else, end
end
if converge ~= 1
tech= (' SOLUSI ITERATIF TIDAK KONVERGEN'); else,
tech=(' Solusi Aliran Daya dengan Metode Newton-Raphson');
end
V = Vm.*cos(delta)+j*Vm.*sin(delta);
deltad=180/pi*delta;
i=sqrt(-1);
k=0;
for n = 1:nbus
if kb(n) == 1
k=k+1;
S(n)= P(n)+j*Q(n);
Pg(n) = P(n)*basemva + Pd(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); %june 97
elseif kb(n) ==2
k=k+1;
S(n)=P(n)+j*Q(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); % June 1997
end
yload(n) = (Pd(n)- j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);
end
busdata(:,3)=Vm'; busdata(:,4)=deltad';
Pgt = sum(Pg); Qgt = sum(Qg); Pdt = sum(Pd); Qdt = sum(Qd); Qsht = sum(Qsh);
%clear A DC DX J11 J22 J33 J44 Qk delta lk ll lm
%clear A DC DX J11 J22 J33 Qk delta lk ll lm
%---------------------------------------------------------------------------------------Data BusOut
disp(tech)
fprintf(' Maksimum Daya Tidak Sesuai = %g \n', maxerror)
fprintf(' Nomor Iterasi = %g \n\n', iter)
head =[' Bus Voltage Angle ------Load------ ---Generation--- Injected'
' No. Mag. Degree MW Mvar MW Mvar Mvar '
' '];
disp(head)
for n=1:nbus
fprintf(' %5g', n), fprintf(' %7.3f', Vm(n)),
fprintf(' %8.3f', deltad(n)), fprintf(' %9.3f', Pd(n)),
fprintf(' %9.3f', Qd(n)), fprintf(' %9.3f', Pg(n)),
fprintf(' %9.3f ', Qg(n)), fprintf(' %8.3f\n', Qsh(n))
end
fprintf(' \n'), fprintf(' Total ')
fprintf(' %9.3f', Pdt), fprintf(' %9.3f', Qdt),
fprintf(' %9.3f', Pgt), fprintf(' %9.3f', Qgt), fprintf(' %9.3f\n\n', Qsht)
%----------------------------------------------------------------Line Flow
SLT = 0;
fprintf('\n')
fprintf(' Line Flow and Losses \n\n')
fprintf(' --Line-- Power at bus & line flow --Line loss-- Transformer\n')
fprintf(' from to MW Mvar MVA MW Mvar tap\n')
for n = 1:nbus
busprt = 0;
for L = 1:nbr;
if busprt == 0
P(n)*basemva;fprintf(' \n'), fprintf('%6g', n), fprintf(' %9.3f', P(n)*basemva)
Q(n)*basemva;abs(S(n)*basemva);fprintf('%9.3f', Q(n)*basemva), fprintf('%9.3f\n', abs(S(n)*basemva))
busprt = 1;
else, end
if nl(L)==n k = nr(L);
In = (V(n) - a(L)*V(k))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(n);
Ik = (V(k) - V(n)/a(L))*y(L) + Bc(L)*V(k);
Snk = V(n)*conj(In)*basemva;
Skn = V(k)*conj(Ik)*basemva;
SL = Snk + Skn;
SLT = SLT + SL;
elseif nr(L)==n k = nl(L);
In = (V(n) - V(k)/a(L))*y(L) + Bc(L)*V(n);
Ik = (V(k) - a(L)*V(n))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(k);
Snk = V(n)*conj(In)*basemva;
Skn = V(k)*conj(Ik)*basemva;
SL = Snk + Skn;
SLT = SLT + SL;
else, end
if nl(L)==n | nr(L)==n
fprintf('%12g', k),
real(Snk);imag(Snk);fprintf('%9.3f', real(Snk)), fprintf('%9.3f', imag(Snk))
abs(Snk);fprintf('%9.3f', abs(Snk)),
real(SL);fprintf('%9.3f', real(SL)),
if nl(L) ==n & a(L) ~= 1
imag(SL);a(L);fprintf('%9.3f', imag(SL)), fprintf('%9.3f\n', a(L))
else,imag(SL); fprintf('%9.3f\n', imag(SL))
end
else, end
end
end
SLT = SLT/2;
fprintf(' \n'), fprintf(' Total loss ')
real(SLT);imag(SLT);fprintf('%9.4f', real(SLT)), fprintf('%9.4f\n', imag(SLT))
RugiRugi=real(SLT);
% %clear Ik In SL SLT Skn Snk
🔗 参考文献
🍅更多创新智能优化算法模型和应用场景可扫描关注
🌟机器学习/深度学习类:BP、SVM、RVM、DBN、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、XGBoost、LightGBM、TCN、BiTCN、ESN、Transformer、模糊小波神经网络、宽度学习等等均可~
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟组合预测类:CNN/TCN/BiTCN/DBN/Transformer/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可(可任意搭配非常新颖)~
🌟分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD、JMD等分解模型均可~
🌟路径规划类:旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化等等~
🌟小众优化类:生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化、微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化等等均可~
🌟 无人机应用方面:无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌟通信方面:传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟信号处理方面:信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面: 微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化
🌟原创改进优化算法(适合需要创新的同学):原创改进2025年的波动光学优化算法WOO以及三国优化算法TKOA、白鲸优化算法BWO等任意优化算法均可,保证测试函数效果,一般可直接核心
