You are on page 1of 6

1

Implementación en DIgSILENT PowerFactory de Algoritmos Genéticos para la Solución de Flujo de Potencia
A. Ataupillco M., J. L. Cabrera C. Student IEEE, N. H. López Student IEEE, S. E. Trujillo A. ,Student IEEE

Resumen—El presente trabajo consta de la implementación de algoritmos genéticos aplicados a la solución de flujo de potencia, en DIgSILENT PowerFactory. Esta implementación se hizo mediante el módulo de Lenguaje de Programación de DIgSILENT (DIgSILENT Program Language). Para tal objetivo se utilizó la base de datos que proporciona dicho programa, y su posterior uso en el desarrollo de las ecuaciones de flujo de potencia relacionadas a los algoritmos genéticos, ejecutándolo en el sistema de 9 barras del IEEE. De esta manera, se puede hallar el flujo de potencia con algoritmos genéticos en cualquier sistema diseñado en esta plataforma y con los mismos elementos presentes en el sistema de 9 barras IEEE. Índices—Algoritmos genéticos (Genetic Algorithms), DIgSILENT, Flujo de potencia (Load Flow), Análisis Computacional de Sistemas de Potencia (Power Systems Analisys Computing).

III. DESARROLLO A. Antecedentes Los AG representan un método de solución de búsqueda y optimización que simula los procesos que intervienen en la evolución biológica de las especies; mediante el cual se pueden resolver determinados problemas, tal es el caso de la solución de flujo de potencia de un SEP. La Referencia [2] nos muestra un ejemplo de codificación de AG en MATLAB, del cual nos valemos para la elección de determinados comandos presentes en el DPL. Para la descripción de un SEP, DIgSILENT nos provee de información detallada de cada elemento, en su entorno gráfico. B. Tópicos de programación en DPL Para poder llevar a cabo la elaboración de un código de programación en DPL, se debe tener conocimientos básicos de dicha plataforma, por lo que este trabajo de investigación se basó en la ayuda (help) que brinda el propio programa [3]. 1) Declaración de variables La plataforma de programación DPL, tiene la característica de declarar previamente cada una de las variables a utilizar. Es por tal motivo que es necesario precisar los diferentes tipos de variables que usaremos en este trabajo. a) Variable set Este tipo de variable define a aquellas que representará un listado de objetos, por ejemplo, todas las barras del sistema. b) Variable object Define a cada uno de los elementos listados en la variable set, por ejemplo, la barra 1 y sus características. c) Variable string Define a las variables que almacenan cadenas de caracteres. d) Variable double

I. NOMENCLATURA AG – Algoritmos Genéticos. SEP – Sistema Eléctrico de Potencia. DPL – Lenguaje de Programación de DIgSILENT (DigSilent Program Language). P.U. – Por Unidad (Per Unit). II. INTRODUCCIÓN

E

STE trabajo desarrolla la implementación de los AG para la solución de flujo de potencia en DPL. La Referencia [1], nos muestra este método alternativo de solución a flujos de potencia y además nos da las bases necesarias para la implementación de dicho algoritmo. Este trabajo propone adaptar los AG a la plataforma DPL, mejorando su aplicación a un sistema que contenga los elementos presentes en el sistema 9 barras IEEE.

Se agradece el apoyo de la Facultad de Ingeniería Eléctrica y Electrónica por brindarnos el uso del programa DIgSILENT, con serial number 14.0:40192855 para la versión 14.0 build 511.Así también agradecemos el apoyo económico del Power & Energy Society de la REIEE – UNI. A. Ataupillco Maldonado , Lima ,Perú (aaangel79@gmail.com) J. L. Cabrera Chirre , Lima, Perú (jorgecch@ieee.org) N. Haro Lopez, Lima, Perú (neymerh@ieee.org) S. E. Trujillo Arana, Lima, Perú (sergio.trujillo@ieee.org)

Se utiliza para definir variables numéricas que contengan una determinada cantidad de decimales. e) Variable int Se utiliza para definir variables que almacenen números enteros.

2 2) Extensiones de elementos del sistema a) ElmTerm Corresponde al objeto barra del SEP. b) ElmTr2 Corresponde al objeto transformador de dos devanados del SEP. c) ElmSym Corresponde al objeto máquina síncrona que se encuentra en el SEP. d) ElmLne Corresponde al objeto línea de transmisión del SEP. e) ElmLod Corresponde al objeto carga ubicado en el SEP. 3) Métodos para la obtención de datos a) Métodos para variables tipo set:  El método AllRelevant(), devuelve el conjunto de objetos como barras, líneas, transformadores, generadores o cargas, para posteriormente poder almacenar dicho conjunto en una variable tipo set. SortToName(0) es el método que ordena los objetos dentro de un set según su nombre. Count() es el método que retorna el número de objetos. First() es el método que retorna el primer objeto. Next() es el método que retorna el siguiente objeto.       objeto:R1 es el método que retorna la resistencia por kilómetro de la línea. objeto:X1 es el método que retorna la reactancia por kilómetro de la línea. objeto:uline es el método que retorna el voltaje nominal de la línea. objeto:bline es el método que retorna la susceptancia por kilómetro de la línea. objeto:strn es el método que retorna la potencia nominal del transformador. objeto:uktr es el método que retorna la reactancia del transformador.

C. Administración de datos 1) Creación de una matriz en DPL En DPL, administrar datos en matrices es una gran ventaja. Las matrices que se deseen usar en un Comando DPL (DPL Comand) deben crearse dentro del mismo, esto es posible entrando en el Contenido (Contents) del Comando DPL y creando un objeto de la forma *.IntMat como se muestra en la Fig. 1.

            

b) Métodos para las variables tipo object GetNode() es el método que retorna los nodos conectados al objeto. objeto:loc_name es el método que retorna el nombre del objeto. objeto:vtarget es el método que retorna el valor del voltaje nominal. objeto:plini es el método que retorna el valor de la potencia activa de la carga. objeto:qlini es el método que retorna el valor de la potencia reactiva de la carga. objeto:pgini es el método que retorna el valor de la potencia activa generada. objeto:qgini es el método que retorna el valor de la potencia reactiva generada. objeto:bustp es el método que retorna el voltaje en P.U. en los bornes del generador. objeto:dline es el método que retorna la longitud de la línea.
Fig. 1. Ventana de creación de una matriz en DPL.

2) Métodos para matrices en DPL En DPL, el manejo de las matrices es muy diferente al uso general. a) Método Init Mediante este método se le asigna las dimensiones que tendrá la matriz, así también asignándole valores igual a cero para todos sus elementos. Los valores que requiere este método son las dimensiones de la matriz, que supongamos, son Ncol y Nfil para columnas y filas respectivamente. Entonces el modo de usar este método para una matriz M es M.Init(Nfil,Ncol). b) Método Set

3 Mediante este método se puede asignar un valor de tipo double o int a un elemento de la matriz en DPL. La forma de asignar un valor v al elemento de la primera columna y la primera fila de la matriz M es M.Set(1,1,v), a manera de ejemplo. c) Método Get Este método tiene como objetivo asignar a una variable, previamente declarada, el valor correspondiente a un elemento de una matriz. Usando el ejemplo anterior, su uso adecuado es v = M.Get(1,1). D. Impresión de datos Para mostrar los resultados de un Comando DPL a un usuario, se debe tener conocimiento básico de la función printf, para la cual debe tenerse las siguientes consideraciones. Sea d una variable del tipo double con un valor asignado, así también, s una de tipo string con una cadena de caracteres asignada. La manera de imprimir estos valores es printf(‘%s %f ’,s,d), donde los símbolos de porcentaje y la letra que le sigue, indican las variables declaradas en la función en su orden respectivo. E. Datos previos Los datos principales de los elementos que conforman el SEP a analizar, necesarios para la ejecución de los AG, pueden ser obtenidos directamente del entorno gráfico del DIgSILENT. Para administrar dichos datos se optó por el uso de matrices, cuyo tratamiento se explica en la sección III-C. 1) Datos de la barra En nuestro análisis se usará una matriz denominada pbarra, en la cual cada fila representará a una barra del sistema, y cada columna será una característica referida a cada barra. Estas son: número de la barra, indicador del tipo de barra, voltaje nominal en P.U., potencia activa generada, potencia reactiva generada, potencia activa de carga, potencia reactiva de carga, en ese orden; cabe mencionar que los valores de dichas potencias se llevaron a sus valores en P.U. 2) Datos de las conexiones En nuestro análisis, las conexiones se entenderán por líneas de transmisión y transformadores. Las características de estas conexiones se implementarán en una matriz denominada mconex, donde los datos almacenados en cada columna corresponden al valor de resistencia, reactancia y susceptancia para determinada conexión, indicada en cada fila. Estos valores de transformaron a P.U., así mismo la matriz mconex presenta los números de las barras a las cuales enlaza cada conexión. 3) Matriz de admitancia La red de un SEP puede ser representada por medio de su matriz de admitancia como se muestra en la Referencia [4]. Para su implementación en DPL, la forma más favorable es descomponer a cada elemento de esta matriz en su módulo y ángulo, dando origen a dos matrices que se encuentran presentes en nuestro análisis: Ymag y Yang, respectivamente.
Fig. 2. Codificación en DPL de la función aptitud.

F. Implementación del AG en DPL A continuación se muestra el método usado para la implementación de AG en DPL, indicando cada función dentro de este.

1) Generación de población La Referencia [5] nos muestra que una característica importante de la población inicial es su número, sin embargo, se vio adecuado aumentar la cantidad de individuos de esta, para que se obtenga una mayor variedad de posibles soluciones en la misma; dicha cantidad corresponde al valor de 350, aunque puede ser mayor o menor, según la cantidad de barras presentes en el sistema. Por otra parte, con la finalidad de mejorar la eficiencia, es importante respetar las especificaciones técnicas [6]. 2) Función Aptitud La Referencia [7] nos muestra el algoritmo para implementar esta función que consiste en medir cuan cerca de la solución se encuentra cada individuo. Para ello se usó los métodos mencionados en la sección III-B, con la diferencia que la administración de datos se

4 realizó mediante matrices. La Fig. 2. ilustra el código de DPL usado en esta función. 3) Función Selección La Referencia [8] muestra el algoritmo de esta función, sin embargo, en este trabajo, no se usó la función probabilidad debido a que no es necesario para reconocer al individuo de mayor aptitud. Basados en esto, dicha función se obtiene comparando las aptitudes de estos. 4) Función Cruce La Referencia [9] nos muestra una forma de cruce distinta a la propuesta en este trabajo, pues en este se usa 7 hijos y 50 cruces. Además los genotipos de voltaje y ángulo de las barras se cruzan de manera independiente uno del otro. Estos cambios tienen un efecto positivo en la reducción del número de generaciones necesarias para obtener la respuesta al problema. En la Fig. 3. se puede apreciar parte del código de DPL correspondiente al cruce de voltajes, así también en la Fig. 4. para los ángulos.

Fig. 4. Código de DPL para el cruce para ángulos.

6) Función ajuste La Referencia [11] nos muestra el procedimiento para la implementación de esta función. Sin embargo, se debe tener en cuenta las consideraciones de programación en DPL, tales como el tratamiento de los elementos de las matrices, mencionados en la sección III-C. Así mismo para realizar las operaciones del algoritmo en DPL, es necesario acomodar las expresiones en su forma polar, para luego separarlo en su parte real e imaginaria y trabajar con estos números. Finalmente, teniendo los resultados de ambas partes, se unen estas para formar un número complejo del cual su módulo y argumento representaran a los valores de voltaje y ángulo de barra respectivamente. El argumento se determinó mediante la función atan(), tomando en cuenta las consideraciones de reducción al primer cuadrante para obtener el valor apropiado del ángulo; esto debido a que la función atan() sólo nos da valores presentes en el primer y cuarto cuadrante, cuando no necesariamente se encuentren en estos.

Fig. 3. Código de DPL para el cruce para voltajes.

7) Función aptitud hijos Así como se explicó en el apartado III-F-2, se deberá medir cuan cerca de la solución se encuentra cada uno de los nuevos individuos. Su implementación en DPL es muy similar. 8) Función conmutar: La Referencia [12] nos muestra el objetivo e implementación de esta función, además de su influencia en la obtención del resultado. Para este trabajo se eligió sustituir a los padres con menor aptitud por los hijos con mayor aptitud, manteniendo la cantidad de población constante. En la Fig. 6. se muestra el código de DPL usado para poder realizar esta función. 9) Función optimizador Mediante esta función se busca al individuo que presente la tolerancia menor o igual a la tolerancia especificada por el usuario.

5) Función Mutación La Referencia [10] nos muestra las características que debe tener esta función en los AG en los SEP. La forma que se usó para modificar los genes, para cada individuo de la población, se muestra en la Fig. 5. Sea Vincial el voltaje sin mutar y Vmut el voltaje mutado, la formula que se usa es Vmut=(Vinicial+1)/2 . Así también sea rand un numero generado con la función Random(),  inicial el ángulo inicial de cada barra y  mut, el mutado. Entonces la forma de mutación que se usó para los ángulos de las barras es  mut = (  inicial +pi()*(0.5-rand))/2.

5
GENOTIPOS DEL HIJO

k>0.999
NO

SI

¿Es una barra PQ? SI

NO

¿Es una barra PV? NO Mutar V Mutar  SI

Mutar 

Salida Fig. 5. Diagrama de flujo de la Función Mutación. Fig. 6. Código en DPL de la función conmutar.

Fig. 7. Ejemplo de implementación de AG en DPL

6 G. Aplicación en otro SEP La Referencia [13] nos muestra los resultados del flujo de potencia usando los AG en un sistema diferente al Sistema 9 Barras IEEE. Este mismo SEP se construyó en DIgSILENT para comprobar la validez de este trabajo, obteniéndose los mismos resultados mostrados en la Fig. 7. Se concluye de tal forma que esta implementación es capaz de ser aplicada en diversos problemas de SEP. IV. AGRADECIMIENTOS Se agradece el apoyo brindado por la REIEEE – UNI por sus instalaciones para el desarrollo de la investigación. Así también a L. M. Espinoza. R. en conceptos básicos de AG y DPL. V. REFERENCIAS El presente artículo se basa en criterios y definiciones previas, se mencionarán a continuación.
[1] J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 83-92. DIgSILENT GmbH, “PowerFactory Manual”, 2010. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 223-257 J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 29. Ministerio de energía y minas, Dirección general de electricidad, “Código nacional de electricidad - Suministro”, 2001, p. 10. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 48-50. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 50-51. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 51-53. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 35-36. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 54-55. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 56. J. F. Castro. G., “Algoritmos genéticos como solución al problema de flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 62-72.

VI. BIOGRAFÍAS Angeles Ataupillco Maldonado, nació en Ayacucho, Perú, el 2 de marzo de 1991.Estudio primaria y secundaria en el centro educativo Santa María. Representó a su país en la XII Olimpiada Iberoamericana de Física-Argentina 2007, para lo cual recibió capacitaciones en la Facultad de Ciencias de la UNMSM. Actualmente es estudiante de pregrado de la FIEE-UNI en la especialidad de Ingeniería Eléctrica, y aporta en el área de investigación de la REIEEE-UNI en el capítulo de Power & Energy Society.(aaangel79@gmail.com ). Jorge Luis Cabrera Chirre (S’ 10), nació en Lima, Perú, el 23 de marzo de 1990. Se graduó en el colegio Pitágoras. Es estudiante de pregrado de ingeniería eléctrica en la FIEEUNI. Actualmente es miembro del capítulo Power & Energy Society y desempeña el cargo de Secretary Student Branch para el periodo 2011-2012 de la REIEEE – UNI. Aporta al área de investigación del Power & Energy Society.(jorgecch@ieee.org). Neymer Haro López (S’ 11), nació en Pataz, La libertad, Peru el 8 de noviembre de 1989. se graduo en el colegio Jose Maria Arguedas del mismo lugar. Estudiante de pregrado de ingeniería eléctrica en la FIEE – UNI. Actualmente es miembro del capítulo Power & Energy Society y aporta en el área de investigación de este capítulo en la REIEEE – UNI. (Neymerh@ieee.org). Sergio Efraín Trujillo Arana (S’ 11), nació en Huánuco, Perú, el 15 de abril de 1990 se graduó en el colegio Manuel Gonzales Villamil. Es estudiante de pregrado de ingeniería eléctrica en la FIEE – UNI. Actualmente es miembro del capítulo Power & Energy Society y aporta en el área de investigación de este capítulo en la REIEEE – UNI.(sergio.trujillo@ieee.org).

[2]

[3] [4]

[5]

[6] [7]

[8]

[9]

[10]

[11]

[12]

[13]