Está en la página 1de 6

DESCRIPCIN DE UN CDIGO MATLAB QUE RESUELVE EL PROBLEMA DE LA ESTIMACIN DE ESTADO MEDIANTE MINIMOS CUADRADOS PONDERADOS (Weighted least Square)

1. INTRODUCCIN Se trata de una implementacin en matlab de un estimador de estado mediante la tcnica de los mnimos cuadrados ponderados. El cdigo considera cinco tipos de medidas: inyecciones de potencia activa y reactiva, flujos de potencia activa y reactiva y tensiones de nudo. Para el clculo estimado de dichas medidas as como para calcular la matriz jacobiana, las frmulas implementadas son las que aparecen en el libro ANALISIS Y OPERACIN DE LOS SISTEMAS DE ENERGA ELECTRICA (Antonio GMEZ EXPSITO).

2. DESCRIPCION DEL ALGORITMO Y SUS SUBFUNCIONES El programa principal es bastante sencillo, pero el cdigo se alarga debido a la incorporacin de diversas subrutinas que son utilizadas en el programa principal, la funcin de cada subrutina se describe a continuacin:

1. SUBRUTINA PARA LA CONSTRUCCIN DE LA MATRIZ DE ADMITANCIAS. Esta subrutina es la funcin:


function Y = buildy(param,n)

Como se aprecia, la funcin slo recibe dos datos de entrada y devuelve la matriz de admitancias. ENTRADAS: PARAM: Es una matriz rectangular donde se almacena la informacin de todas las lneas de la red. Su estructura es la siguiente: Nudo inicial Nudo final Impedancia de la lnea Admitancia paralelo

n: Es el nmero de nudos de la red Conociendo estos datos, la construccin de la matriz de admitancias es sencilla: 1. Obtenemos el nmero total de lneas que equivale al nmero de filas de la matriz. 2. Ahora iniciamos un proceso iterativo para cada nudo: a. Para cada nudo i, iniciamos un bucle para recorrer el resto de los nudos incluido el propio nudo i: en caso de que i == j, sabemos las frmulas a 1

utilizar para calcular la admitancia, caso contrario utilizamos las frmulas correspondientes a la admitancia Yij. b. Los valores los conseguimos en las columnas 3 y 4 de la matriz de modo que tenemos que recorrer toda la matriz buscando coincidencias entre las columnas 1(nudo inicial) y 2 (nudo final); si hay alguna coincidencia, tomamos la impedancia de esa fila y su admitancia paralelo para calcular la Admitancia Yij.

2. SUBRUTINA PARA ESTIMAR LAS VARIABLES MEDIDAS


function h=mesfun(U,D,M,G,B,n) ENTRADAS: U: VECTOR COLUMNA CON LOS MODULOS DE LAS TENSIONES DE LOS NUDOS D: VECTOR COLUMNA CON LOS ANGULOS DE LAS TENSIONES DE LOS NUDOS, normalmente se espera un inicio plano (U=1 y D=0 para todos los nudos). M: MATRIZ CON INFORMACION SOBRE TODAS LAS MEDIDAS TOMADAS DE LA RED, su estructura es la siguiente: N TIPO Nudo Nudo Valor origen destino Tendr tantas filas como medidas tengamos Varianza

1. N, solo es un ndice de orden en que estn colocadas las medidas 2. TIPO: identifica el tipo de medida, la codificacin es la siguiente: a. 1=> Medida inyeccin de potencia activa b. 2=> Medida de inyeccin de potencia reactiva c. 3=> Medida de flujo de potencia activa d. 4=> Medida de flujo de potencia reactiva e. 5=> Medida de tensin 3. Nudo origen: Nudo donde sea realiza la medida 4. Nudo destino: Para medidas tipo tensin o inyecciones, asignar el valor 0; flujos, asignar el valor del nudo final. 5. Valor: Se refiere al valor de la medida 6. Varianza: la varianza de la media G: Es la parte real de la matriz de admitancias B: La parte imaginaria de la matriz de admitancias PROCEDIMIENTO: Esta funcin tiene implementadas las ecuaciones utilizadas para estimar las medidas, lo nico que hace es identificar el tipo de medida y en funcin del tipo que sea, estimar su valor con la sub-funcin que corresponda:

%CALCULO DEL VECTOR h, VECTOR DE MEDIDAS ESTIMADAS: %SEGN EL TIPO DE MEDIDA DE QUE SE TRATE, SE CALCULAR LA ESTIMACIN %UTILIZANDO LA SUBFUNCION QUE CORRESPONDA A DICHO TIPO DE MEDIDA. m=size(M,1); %Obtenemos el nmero de medidas tipo=M(:,2); %Un vector que nos dice el tipo de cada medida from=M(:,3); %Un vector que nos dice el nudo origen de cada medida to=M(:,4); %Un vector que nos dice el nudo final de cada medida for i=1:m %Para cada medida: %Comprobamos el tipo de la medida y segn el resultado, estimamos con %la funcin correspondiente. if tipo(i)==1; h(i)=Pinj(from(i),U,D,G,B,n); elseif tipo(i)==2 h(i)=Qinj(from(i),U,D,G,B,n); elseif tipo(i)==3 h(i)=pflow(from(i),to(i),U,D,G,B); elseif tipo(i)==4 h(i)=qflow(from(i),to(i),U,D,G,B); elseif tipo(i)==5 h(i)=U(from(i)); end

end h=h';%AL FINAL TENEMOS EL VECTOR H DE MEDIDAS ESTIMADAS. end %FIN DE mesfun (measurement function)

3. SUBRUTINA PARA CALCULAR EL JACOBIANO


function H=Hbuild2(M,n,Y,Uo,Do) ENTRADAS: M: La Matriz con informacin sobre las medidas cuya estructura ya conocemos:

TIPO

Nudo Nudo Valor origen destino Tendr tantas filas como medidas tengamos

Varianza

n: Nmero de nudos de la red Y: Matriz de admitancias de la red Uo: VECTOR CON LOS MODULOS INICIALES DE TENSION Do: VECTOR CON LOS ANGULOS INICIALES DE LA TENSION

PROCEDIMIENTO: Este cdigo tiene implementadas todas las funciones necesarias para calcular el jacobiano: Derivada de la tensin respecto de los ngulos theta. Derivada de la tensin Vi respecto a Vi o respecto a Vj

Derivada de la Potencia reactiva inyectada en el nudo i: respecto del ngulo i o respecto del ngulo; respecto de la tensin Vi o de la tensin Vj. As para todas las posibles variables: Potencia activa inyectada, flujos de potencia activa o reactiva. Igual que la funcin para estimar las medidas, aqu simplemente se identifica el tipo de medida y se utiliza la sub-funcin adecuada para calcular todos sus trminos en el jacobiano. Cada subfuncin devuelve una fila del jacobiano que corresponde a todos los trminos para una misma medida, en total n trminos de Tensin y n-1 trminos de los ngulos:
%CALCULO Y CONSTRUCCION DEL JACOBIANO: %ESTA VERSION COLOCA EL VECTOR DE ESTADOS EN ESTE ORDEN: %PRIMERO LOS MODULOS DE TENSION V1...Vn seguido de los angulos %theta 2...theta n.

from=M(:,3); %VECTOR CON EL NUDO INICIAL DE TODAS LAS MEDIDAS to=M(:,4);% VECTOR CON EL NUDO FINAL DE TODAS LAS MEDIDAS z=M(:,5); %VECTOR CON EL VALOR DE TODAS LAS MEDIDAS tipo=M(:,2); %VECTOR CON EL TIPO DE CADA MEDIDA l=size(M); m=l(1); %NUMERO TOTAL DE MEDIDAS H=zeros(m,2*n-1); for b=1:m %PARA CADA MEDIDA COMPROBAMOS SU TIPO Y SEGUN EL TIPO %UTILIZAMOS LA FUNCION QUE CORRESPONDA APRA CALCULAR LA FILA QUE %CORRESPONDE A LA MEDIDA EN EL JACOBIANO if tipo(b)==1 H(b,:)= pinj(from(b),n,U,D,G,B); elseif tipo(b)==4 A=dqflow(from(b),to(b),n,U,D,G,B); H(b,:)=A; elseif tipo(b)==2 H(b,:)= qinj(from(b),n,U,D,G,B); elseif tipo(b)==3 H(b,:)=dpflow(from(b),to(b),n,U,D,G,B); elseif tipo(b)==5 H(b,:)= dVvj(from(b),n); end end end %FIN Hbuild2

4. RUTINA PRINCIPAL Con la ayuda de las subrutinas anteriores, procedemos a iniciar el proceso iterativo para determinar la estimacin de estado:
function [state,Rx,rDx,rJ]=wlstotal(X,L,n,M,tol) ENTRADAS: X: VECTOR DE ESTADOS INICIAL, ordenado de la siguiente forma: ESTA VERSION COLOCA EL VECTOR DE ESTADOS EN ESTE ORDEN: %PRIMERO LOS MODULOS DE TENSION V1...Vn seguido de los angulos %theta 2...theta n. ==> Las columnas del jacobiano son: %V1|V2|..Vn|tetha2|theta3|...|theta_n| %L=Matriz con los datos de las lineas.

L: MATRIZ CON INFORMACIN SOBRE LAS LINEAS QUE UTILIZA LA SUBRUTINA buildy PARA CONSTRUIR LA MATRIZ DE ADMITANCIAS n: Nmero de nudos de la red M: MATRIZ CON INFORMACIN SOBRE LAS MEDIDAS que utilizan las subrutinas mesfun y Hbuild2 para estimar las medidas y calcular la matriz jacobiana. Tol: Tolerancia a utilizar SALIDAS: state: Vector de estados estimado Rx: Valores de los residuos en cada iteracin rDx: Valores de la diferencia entre X(k+1) y X(k) en cada iteracin rJ: Valores de la funcin objetivo en cada iteracin

AUTOR: LUIS ICHAICOTO BONCANCA DICIEMBRE 2011

UNO DE LOS EJEMPLOS DE CLASE: VECTOR DE ESTADOS INICIAL: X = [1;1;1;0;0] INFORMACIN DE LAS LINEAS: LI2 = [1.0000 2.0000 0 + 0.1000i 1.0000 3.0000 0 + 0.1000i 2.0000 3.0000 0 + 0.1000i

0; 0; 0]

INFORMACIN SOBRE LAS MEDIDAS: minfo2 = [1.0000 5.0000 1.0000 0 0.9500 0.0010; 2.0000 5.0000 2.0000 0 1.0200 0.0010; 3.0000 5.0000 3.0000 0 1.0300 0.0010; 4.0000 3.0000 1.0000 2.0000 1.0000 0.0100; 5.0000 4.0000 2.0000 1.0000 -0.4000 0.0100; 6.0000 3.0000 1.0000 3.0000 0.8000 0.0100; 7.0000 4.0000 3.0000 1.0000 -0.2000 0.0100] RESULTADOS DE LA EJECUCIN:

También podría gustarte