Vous êtes sur la page 1sur 7

%% Newton-Raphson

clear all
clc
%% Ybus
% Se introducen los datos de las l�neas
% | From | To | R | X | B/2 | X' |
% | Bus | Bus | pu | pu | pu | TAP (a) |
line = [1 2 0.01938 0.05917 0.0264 1
1 5 0.05403 0.22304 0.0246 1
2 3 0.04699 0.19797 0.0219 1
2 4 0.05811 0.17632 0.0170 1
2 5 0.05695 0.17388 0.0173 1
3 4 0.06701 0.17103 0.0064 1
4 5 0.01335 0.04211 0.0 1
4 7 0.0 0.20912 0.0 0.978
4 9 0.0 0.55618 0.0 0.969
5 6 0.0 0.25202 0.0 0.932
6 11 0.09498 0.19890 0.0 1
6 12 0.12291 0.25581 0.0 1
6 13 0.06615 0.13027 0.0 1
7 8 0.0 0.17615 0.0 1
7 9 0.0 0.11001 0.0 1
9 10 0.03181 0.08450 0.0 1
9 14 0.12711 0.27038 0.0 1
10 11 0.08205 0.19207 0.0 1
12 13 0.22092 0.19988 0.0 1
13 14 0.17093 0.34802 0.0 1 ];
%Se determina entre que l�neas se encuentra la impedancia
de=line(:,1);
para=line(:,2);
R=line(:,3); %Resistencia de la l�neas
X=line(:,4); %Reactancia de la l�nea
B=1i*line(:,5); %Admitancia
a=line(:,6); %Tap
Z=R+i*X; %Impedancia
y=1./Z;
n=max(max(de),max(para));
e=length(de);
Yp=zeros(e+n,e+n);
A=zeros(e+n,n); %Se determina el tama�o de la matriz A

for i=1:n
for j=1:n
if(i==j)
A(i,i)=1; %Diagonal de la matriz A
end
end
end
%Se obtienen los elementos fuera de la diagonal en la matriz A
for i=n+1:n+e
for j=1:n
if(de(i-n)~=0)
A(i,de(i-n))=1;
end
if(para(i-n)~=0)
A(i,para(i-n))=-1;
end
end
end
% Se crea la matriz de admitancias primitivas
for i=1:e
Yp(i+n,i+n)=y(i)/a(i);
Yp(de(i),de(i))=Yp(de(i),de(i))+B(i)+(1-a(i))*y(i)/(a(i)^2);
Yp(para(i),para(i))=Yp(para(i),para(i))+B(i)+(a(i)-1)*y(i)/a(i);
end

Y=A'*Yp*A; %Ybus

clear i
clear a
clear n
clear e
%% Datos del sistema
B=[0 1.06 0 0;
1 1.045 18.3/100 0;
1 1.01 -94.2/100 0;
2 1 -47.8/100 3.9/100;
2 1 -7.6/100 -1.6/100;
1 1.07 -11.2/100 0;
2 1 0 0;
1 1.09 0 0;
2 1 -29.5/100 -16.6/100;
2 1 -9/100 -5.8/100;
2 1 -3.5/100 -1.8/100;
2 1 -6.1/100 -1.6/100;
2 1 -13.5/100 -5.8/100;
2 1 -14.9/100 -5/100];

n=size(B);
n=n(1,1);
d=0;
v=0;
w=0;
t=0.0001;
%% Conteo de variables
for a=1:n
if B(a,1)==2
d=d+1; %N�mero de incognitas en angulo
v=v+1; %N�mero de incognitas en voltaje
end
if B(a,1)==1
d=d+1; %N�mero de incognitas en angulo
w=w+1; %N�mero de buses de voltaje controlado
end
end

total=d+v; %N�mero total de incognitas


z=total-1; %Se le asigna un valor inicial a z solo para iniciar el ciclo
ni=0; %N�mero de iteraciones
%% Inicio de NR
while z<total
ni=ni+1; %Conteo de iteraciones
c=0;
P=zeros(d,1); %Se crea la matriz de P
Q=zeros(v,1); %Se crea la matriz de Q
%% C�lculo de P
for a=1:n
if B(a,1)==2 || B(a,1)==1
c=c+1;
for b=1:n
if a==b

P(c,1)=P(c,1)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*cos(angle(Y(a,b)));
else

P(c,1)=P(c,1)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*cos(angle(Y(a,b))-angle(B(a,2))
+angle(B(b,2)));
end
end
P(c,1)=B(a,3)-P(c,1); %Incremento de P
end
end

c=0;
%% C�lculo de Q
for a=1:n
if B(a,1)==2
c=c+1;
for b=1:n
if a==b

Q(c,1)=Q(c,1)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b)));
else

Q(c,1)=Q(c,1)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b))-angle(B(a,2))
+angle(B(b,2)));
end
end
Q(c,1)=-Q(c,1);
Q(c,1)=B(a,4)-Q(c,1); %Incremento de Q
end
end

PQ=[P;Q];
%% C�lculo del Jacobiano
H=zeros(d,d); %Tama�o de H
N=zeros(d,v); %Tama�o de N
J=zeros(v,d); %Tama�o de J
L=zeros(v,v); %Tama�o de L

c=0;
e=0;
%% Sub-matriz H
for a=1:n
if B(a,1)==2 || B(a,1)==1
c=c+1;
for b=1:n
if B(b,1)==1 || B(b,1)==2
e=e+1;
if a==b
for f=1:n
if f~=a
H(c,e)=H(c,e)
+abs(B(a,2))*abs(Y(a,f))*abs(B(f,2))*sin(angle(Y(a,f))+angle(B(f,2))-
angle(B(a,2))); %Elementos de la diagonal
end
end
else
H(c,e)=-
abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b))-angle(B(a,2))+angle(B(b,2)));
%Elementos fuera de la diagonal
end
end
end
e=0;
end
end

c=0;
e=0;
%% Sub-matriz N
for a=1:n
if B(a,1)==1 || B(a,1)==2
c=c+1;
for b=1:n
if B(b,1)==2
e=e+1;
if a==b
for f=1:n
if f~=a
N(c,e)=N(c,e)
+abs(B(a,2))*abs(Y(a,f))*abs(B(f,2))*cos(angle(Y(a,f))+angle(B(f,2))-
angle(B(a,2))); %Elementos de la diagonal
end
end
N(c,e)=N(c,e)
+2*(abs(B(a,2))^2)*abs(Y(a,a))*cos(angle(Y(a,a))); %Elementos de la diagonal
else
N(c,e)=abs(B(a,2))*abs(Y(a,b))*cos(angle(Y(a,b))-
angle(B(a,2))+angle(B(b,2))); %Elementos fuera de la diagonal
end
end
end
e=0;
end
end

c=0;
e=0;
%% Sub-matriz J
for a=1:n
if B(a,1)==2
c=c+1;
for b=1:n
if B(b,1)==1 || B(b,1)==2
e=e+1;
if a==b
for f=1:n
if f~=a
J(c,e)=J(c,e)
+abs(B(a,2))*abs(Y(a,f))*abs(B(f,2))*cos(angle(Y(a,f))+angle(B(f,2))-
angle(B(a,2))); %Elementos de la diagonal
end
end
else
J(c,e)=-
abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*cos(angle(Y(a,b))-angle(B(a,2))+angle(B(b,2)));
%Elementos fuera de la diagonal
end
end
end
e=0;
end
end

c=0;
e=0;
%% Submatriz L
for a=1:n
if B(a,1)==2
c=c+1;
for b=1:n
if B(b,1)==2
e=e+1;
if a==b
for f=1:n
if f~=a
L(c,e)=L(c,e)
+abs(B(a,2))*abs(Y(a,f))*abs(B(f,2))*sin(-angle(Y(a,f))-angle(B(f,2))
+angle(B(a,2))); %Elementos de la diagonal
end
end
L(c,e)=L(c,e)+2*(abs(B(a,2))^2)*abs(Y(a,a))*sin(-
angle(Y(a,a))); %Elementos de la diagonal
else
L(c,e)=-
abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b))-angle(B(a,2))+angle(B(b,2)));
%Elementos fuera de la diagonal
end
end
end
e=0;
end
end

Ja=[H N;J L];


%% Solucion de voltajes
Vn=inv(Ja)*PQ; %Incrementos de voltaje

b=0;
%% Actualizaci�n de los �ngulos
for a=1:n
if B(a,1)==1
b=b+1;
x=abs(B(a,2));
y=angle(B(a,2))+Vn(b,1); %Aumento de angulos en buses de voltaje
controlado
B(a,2)=x*exp(1i*y);
end
if B(a,1)==2
b=b+1;
x=abs(B(a,2));
y=angle(B(a,2))+Vn(b,1); %Aumento de angulos en buses de carga
B(a,2)=x*exp(1i*y);
end
end

for a=1:n
if B(a,1)==2
b=b+1;
x=abs(B(a,2))+Vn(b,1); %Aumento de voltajes en buses de carga
y=angle(B(a,2));
B(a,2)=x*exp(1i*y);
end
end

z=0;
%% C�lculo del error
for a=1:total
if abs(Vn(a,1))<t
z=z+1;
end
end
a=1;
end
%% Presentaci�n de resultados

ni
c=0;
P=zeros(1,2);
Q=zeros(5,2);
V=zeros(n,2);
%Se transforman los voltajes de rectangular a polar
for a=1:n
V(a,1)=abs(B(a,2));
V(a,2)=angle(B(a,2));
V(a,2)=rad2deg(V(a,2));
end
V
%Calculo de la solucion en P
for a=1:n
if B(a,1)==0
c=c+1;
for b=1:n
if a==b

P(c,2)=P(c,2)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*cos(angle(Y(a,b)));
else

P(c,2)=P(c,2)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*cos(angle(Y(a,b))-angle(B(a,2))
+angle(B(b,2)));
end
end
P(c,1)=a;
end
end

c=0;
%Calculo de la solucion en Q
for a=1:n
if B(a,1)==0 || B(a,1)==1
c=c+1;
for b=1:n
if a==b
Q(c,2)=Q(c,2)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b)));
else

Q(c,2)=Q(c,2)+abs(B(a,2))*abs(B(b,2))*abs(Y(a,b))*sin(angle(Y(a,b))-angle(B(a,2))
+angle(B(b,2)));
end
end
Q(c,2)=-Q(c,2);
Q(c,1)=a;
end
end

P
Q

Vous aimerez peut-être aussi