Flujo de Carga - Algoritmos Genéticos

Articulo
Solución del Problema de Flujo de Carga para Sistemas Eléctricos de Potencia Mediante Algoritmos Genéticos

L. M. E. Rojas, Student Member IEEE, A. Huerta V, Student Member IEEE, E. Ramos C, Student Member IEEE y J. C. Quispe H., Student Member IEEE


Resumen—Teniendo en cuenta la complejidad de las ecuaciones que solucionan el problema de flujo de carga actuales en los sistemas eléctricos de potencias, se ha planteado un método de solución alternativo, que se enfoca en la solución por métodos del tipo heurísticos al problema dado, basándonos principalmente en los algoritmos genéticos; la estructura del programa se ha planteado de tal modo que se disminuya el tiempo de ejecución. El algoritmo implementado en MATLAB, funcionamiento, estadísticas de funcionamiento y eficacia del algoritmo han sido incluidas.[1]


Palabras Clave—Análisis de flujo de carga (load flow analysis), algoritmos genéticos (genetic algorithms).

I. Nomenclatura

AG – Algoritmo genético.
SEP – Sistema eléctrico de potencia

II. Introducción


E
L presente trabajo plantea un método de solución alternativo para el cálculo de flujo de carga, basándose para esto en métodos heurísticos, o denominados métodos de búsqueda-selección; el enfoque típico que se le da al análisis del flujo de carga de un sistema eléctrico de potencia, se basa en métodos numéricos, que plantean esta solución mediante el uso de iteraciones en las que se utilizan complejas ecuaciones matriciales; dichos métodos necesitan procesar soluciones en base a matemática avanzada en un corto tiempo y con gran precisión. Es por esto que se ideó el planteamiento de este problema mediante Algoritmos Genéticos, el cual utiliza pocos recursos de sistema para determinar una solución idéntica y precisa.
Este trabajo se enfoca en el desarrollo e implementación del algoritmo genético que solucione este tipo de problemas. Para poder lograr esto, se partió de la teoría general de algoritmos genéticos [1], es a partir de estas nociones que se logró bosquejar los primeros paquetes del algoritmo genético simple o primitivo [2] que se muestra en la Fig. 1, esta figura simplifica cada subproceso del algoritmo genético que será detallado más adelante, además de poder apreciar el funcionamiento básico de tal algoritmo.
f
Fig. 1. Diagrama de bloques donde se puede apreciar el funcionamiento del algoritmo genético simple o primitivo.
Luego de esto se procedió a estructurar los componentes de los sistemas de potencia dentro del algoritmo genético en sí, para esto se utilizó libros referidos a análisis de sistemas de potencia [1], [3] que abarcan las nociones básicas de este tipo de análisis, con lo que se procedió a culminar el bosquejo de operación de dicho algoritmo; una vez concluidas las partes fundamentales del funcionamiento del algoritmo se procedió a su implementación mediante el uso del software MATLAB; así se logró simular el correcto funcionamiento y comportamiento de todo el algoritmo.
Además de eso se logró elaborar modificaciones, posteriores al algoritmo, que reducían el tiempo de simulación, estas mejoras serán mencionadas posteriormente, ya que nos brindan criterios importantes para lograr la optimización del algoritmo; además de eso se muestran algunos cuadros estadísticos que recopilan valores medios de simulación tanto en el número de generaciones procesadas como en el tiempo de simulación. El diagrama de bloques mostrado en la Fig. 1, será el punto de partida de la implementación del algoritmo genético; por lo tanto a continuación se presentará el enfoque eléctrico de cada uno de los subprocesos del algoritmo genético para el caso de análisis de flujo de carga en SEP.

III. Implementación del Algoritmo Genético

A continuación se detallará la manera en que fueron expresadas las ecuaciones eléctricas dentro del criterio de AG, así como la implementación de las funciones principales del algoritmo dentro de MATLAB y el respectivo funcionamiento de cada una de ellas.

A. Generación de una Población Inicial

Para comenzar con el algoritmo es necesario definir la formación de cada individuo de la población (valor de genotipo) y la forma en que se obtendrá la población inicial.
Primero se optó por codificar valores de tensión y ángulo para cada barra del sistema dentro del genotipo del individuo; llegando a expresarlos de la siguiente manera:
e
(1)
En el caso anterior se procedió a codificar un valor de tensión seguido del valor del ángulo para cada barra, con lo cual se logra expresar cualquier sistema; es así como cada individuo de una población provee valores de tensión (fasorial) que soluciona el problema, cada uno con un error diferente. Para el caso de las barras PQ se presenta dentro de la matriz genotipo los valores de tensión y ángulo, en cambio para las barras PV solo se muestra el ángulo ya que la tensión se mantiene constante en un valor; para el caso de la barra de referencia estas no ingresan en la matriz genotipo.
Se ha preferido utilizar todos los valores en parámetros en por unidad (PU), esto para poder controlar los valores típicos de tensiones en el sistema. Es así que la generación de la población inicial se realizará sobre un intervalo de valores estándar como se muestra en la Fig. 2; y para la asignación de valores esta se realizará en forma aleatoria mediante funciones aleatorias (rand() en MATLAB) como se detalla a continuación:
e
(2)
e
(3)
Donde n es el número de barras y m es el número de individuos de la población.
Así los genotipos de la población inicial son generados con valores del tipo aleatorio, esta asignación solo se realiza una sola vez al inicio del algoritmo.
f
Fig. 2. Rango de valores para el ángulo y módulo de la tensión para cada barra.

B. Función Aptitud de los Individuos

La función aptitud asigna un valor a cada individuo que lo identifica y el cual expresa cuan cerca está el genotipo de ese individuo del genotipo que soluciona el problema (individuo elegido).
f
Fig. 3. Esquema de una barra perteneciente a un SEP (Se puede apreciar las líneas conectadas a tal barra).
Para el planteamiento de tal, se debe partir de las ecuaciones eléctricas del sistema a partir de la Fig. 3, se plantea:
e
(4)
e
(5)
Donde: es la magnitud de la admitancia de línea.
es el ángulo de la admitancia de línea.
Las ecuaciones (4) y (5) describen las potencias totales que salen o ingresan a una barra por medio de las líneas (no se consideran las cargas ni generadores) y están solo en función de los valores de tensión, por lo cual cada genotipo de un individuo entregará un valor de P y Q para cada barra en especial. Por esto se pueden establecer errores comparando estas potencias con las potencias de las cargas y/o generadores que van conectados a esa barra de la siguiente manera:
e
(6)
e
(7)
Donde y expresan tanto la potencia activa y reactiva de las cargas y/o generadores conectados a la barra “ ”; son estas ecuaciones (6) y (7) las que expresan cuan cerca de la solución se encuentra cada individuo de la población; entonces existirán tantos valores de como barras existan, así que para asignar a cada individuo un único valor de tolerancia y aptitud, definimos éstas como:
e
(8)
e
(9)
e
(10)
La función aptitud fue seleccionada entre tantas funciones tal que su valor sea grande en tanto el individuo se encuentre próximo a la solución y pequeño, cuando se encuentre lejos; estos valores asignados a cada individuo representan cuantitativamente su proximidad con la solución que se desea hallar.

C. Función Selección.

La función selección se enfoca en agrupar en parejas a la población, para esto selecciona parejas de individuos de acuerdo a su aptitud; como la función aptitud es tan solo una magnitud sin referentes, es necesario definir una función probabilística que compare la aptitud de un individuo con respecto a la aptitud de la población; se define a la probabilidad de reproducción a la función:
e
(11)
Luego de esto para la selección se ordenan a los individuos de acuerdo a la probabilidad de reproducción; para esto se genera una matriz fila con los valores de y se ordenan en forma descendente según (13) mediante el siguiente algoritmo:
e
(12)
e
(13)
Es así como se selecciona las parejas de individuos con probabilidades de reproducción altas de acuerdo al arreglo de la ecuación 13, esto se esquematiza mejor en la Fig. 4; el número de reproducciones incide de manera directa sobre la selección, ya que se realizarán tantas selecciones como reproducciones se desean; se debe notar que si se desea agrupar a toda la población entonces el número de individuos de la población debe ser un número par, pero se debe tener en cuenta que no siempre se reproduce toda la población.

D. Función Reproducción

La función reproducción es vital en la generación de una nueva población (denominado también generación nueva) mejor adaptada que la anterior combinando el material genético de los padres (individuos m1 y m2); esta función es importante porque simula el proceso de evolución de las especies, es así como las parejas seleccionadas en la función anterior se reproducen para generar nuevos miembros.
f
Fig. 4. Esquema de funcionamiento de la función selección
Existen muchos tipos de reproducción, es así que de entre todos los tipos de reproducción se eligió el método de reproducción por cruce aritmético, que se enfoca en la reproducción mediante funciones matemáticas, de todas estas funciones, se han escogido cinco funciones principales, con las cuales de generan 5 “Hijos” por cada pareja seleccionada.
Las funciones deben cumplir requisitos especiales para proveer un mecanismo que mejore la aptitud de la población de manera rápida de generación a generación; una de las características principales es que el rango de la función debe encontrarse dentro del dominio planteado en la Fig. 2, además de estar en función del genotipo de ambos padres.
Es así que de todas las opciones existentes se escogieron cinco funciones que además de cumplir con estas características, son fáciles de manejar; de estas cinco funciones se generan cinco hijos que combinan los valores de genotipo de los padres de la siguiente manera:
e
e
e
e
e
Donde el subíndice (g) expresa la generación a la que corresponden los hijos.

E. Función Mutación

La función mutación ajusta el valor del genotipo de un individuo, alterándolo; como las mutaciones son sucesos bastante poco comunes, que en algunos casos terminan en la extinción del individuo; estos tipos de funciones, contribuyen a la diversidad de la población al alterar algunos genotipos; al momento de la implementación se debe recordar que esta ocurrencia debe poseer una muy baja probabilidad y debe ser aplicada con esta baja probabilidad a todos los individuos, para esto se utilizan funciones de tipo aleatoria que al azar (en base a probabilidades) escogen si un individuo debe ser mutado o no.
Para este caso se ha considerado la probabilidad de mutación en 5 de cada 1000 individuos; mediante una implementación que sigue el esquema de la Fig. 5.
f
Fig. 5. Esquema de funcionamiento de la función mutación (Aprecie la baja probabilidad que utiliza – 5/1000).
Donde la mutación que se atribuye a los individuos puede ser expresada tanto como mutación por módulo y mutación por ángulo (14); teniendo la siguiente expresión:
(14)
Para el caso de mutación por módulo el valor del módulo de la tensión es ajustado en +/-0.1 PU en cambio en la mutación por ángulo, el ajuste esta dado en +/-0.1 radianes; para esto la función “randsrc” entrega o el número -1 o el número +1 en forma aleatoria. Como caso práctico se procede a aplicar ambas mutaciones a la vez, es decir que si nuestro individuo es seleccionado para ser mutado, se mutará tanto su módulo como su ángulo; cabe resaltar que se puede realizar ambas por separado implementando un comparador aleatorio según muestra la Fig. 6 mediante un “randi(k)” (función de numero enteros aleatorios entre 1 y k).
f
Fig. 6. Esquema adicional alternativo del funcionamiento de la función mutación (mutación en módulo y mutación en ángulo por separado).

F. Función de Ajuste

El ajuste permite corregir los valores de tensión de los hijos de tal manera que estos no se alejen de los valores requeridos; para esto se hacen dos tipos de ajuste, uno para las barras de carga y otro para las barras de voltaje controlado.
Para el caso de las barras de carga la corrección se hace sobre las potencias activas que son inyectadas por las líneas; así los valores de todos los hijos son corregidos antes de pasar a la siguiente etapa. Esto se realiza mediante el siguiente planteamiento:
e
(15)
e
(16)
Donde el fasor es el voltaje ya ajustado de la tensión en módulo y ángulo para el hijo “k”; lo siguiente es asignarle estos valores de la siguiente manera:
e
(17)
e
(18)
Para el caso de las barras controladas por tensión la corrección se hace sobre las tensiones (constantes) de las barras, para esto se incide sobre la potencia reactiva inyectada a la barra; así los valores de todos los hijos son corregidos antes de pasar a la siguiente etapa. Esto se realiza mediante el siguiente planteamiento:
e
(19)
e
(20)
e
(21)
Donde el fasor es el voltaje cuyo ángulo ya ha sido ajustado para el hijo “k”; lo siguiente es asignarle el nuevo valor de este ángulo ya corregido de la siguiente manera:
e
(22)

G. Conmutar Función Aptitud

Hasta el momento ya se ha definido como encontrar una nueva generación de individuos a partir de una población inicial; pero aún se tiene una nueva población muchos más amplia (con 5 hijos por pareja); antes de conmutar las generaciones, es decir antes de remplazar la generación antigua por la nueva, los hijos tienen que ser filtrados de tal manera que al final solo subsistan aquellos con función aptitud óptima, lo que correspondería a individuos mejor adaptados, terminando por obtener una segunda generación de individuos con funciones aptitud más elevadas que la población inicial.
Este paso es importante ya que nos brinda una mayor probabilidad de encontrar la solución; así como de reducir los tiempos de operación.
Para esto se procede de manera similar que en las secciones B y C, es decir, se procede a asignar un valor de tolerancia y aptitud a cada hijo mostrado en las ecuaciones (9) y (10); Como lo describe la Fig. 7, se integrarán ambas generaciones, los padres (población inicial) y los hijos generando una única población expandida. Es a esta población extendida a la que se le organiza en base a su probabilidad de reproducción, calculada de manera idéntica a la realizada en la sección C; entonces, si el número de individuos de nuestra población inicial es “n” entonces de entre la población extendida (si toda la población se reprodujera tendría 7.n/2 individuos) se seleccionará a los “n” mejores individuos, cuya probabilidad de reproducción sea elevada con respecto a las demás; es así como al final se obtendrá una población nueva (generación 2) de individuos mejor adaptados que la anterior y con la misma cantidad de individuos que la inicial.
f
Fig. 7. Esquema reducido de generación de la población extendida.
La conmutación de la generación 1 (población inicial) por la generación 2 (población nueva) es necesaria para el ahorro de espacio; a diferencia de los métodos iterativos donde es necesario conservar por lo menos dos juegos de valores (iteración “k” e iteración “k+1”) para poder lograr su correcto funcionamiento; en los métodos heurísticos, esto no es necesario, ya que el funcionamiento del algoritmo solo depende de los valores de población actual, ya sea solo la generación “k”; además de esto el criterio de remplazo provee un gran ahorro de memoria a la hora de operar ya que solo es necesario manejar un juego de valores (población) por cada proceso albergados en una única estructura.

H. Comparador Optimizador

Todas las funciones mencionadas anteriormente siguen una secuencia cíclica como se mostró en la Fig. 1, donde se evolucionan las poblaciones generación tras generación, mejorando el nivel genético de los individuos que conforman la población. Este proceso seguirá mientras la tolerancia (a criterio del usuario) sea alcanzada.
La tolerancia se define como el nivel de error máximo que deben tener dos generaciones consecutivas para considerarse óptimas, lo que genera que el error en la salida sea próximo a los resultados reales.
Para nuestro caso esta definición de tolerancia será adaptada ya que solo se manejan los valores de una generación a la vez; por lo cual la tolerancia para este método será descrita como el error (ver ecuación 9) máximo entre todos los individuos de una generación en especial.
Es así que el algoritmo seguirá su funcionamiento cíclico mientras alguna generación no alcance el valor de tolerancia; si alguna alcanza este nivel el algoritmo asumirá que la solución ha sido encontrada.
Para esta comparación se definió el valor “posmejor” que busca dentro de todas las tolerancias a aquella mínima dentro de una población como se muestra:
e
(23)
Esta será comparada con el valor de tolerancia que el usuario desea que se cumpla; además de eso buscará al individuo que aporta dicha tolerancia mínima ya que es este individuo el que posee el genotipo capaz de resolver el problema.
Como su genotipo contiene a las tensiones de todas las barras del sistema, entonces estos corresponderán a la solución del problema de flujo de carga.

I. Salida de Resultados

Como ya se conocen las tensiones de las barras, lo siguiente solo sigue la teoría de análisis de sistemas de potencia, ya que en base a estas tensiones se calcularán los valores de las corrientes en las líneas y luego las potencias de envío y recepción.
Para esto las ecuaciones utilizadas son las mostradas en las ecuaciones (21) y (22):
e
(24)
e
(25)

IV. Análisis Operativo de las Simulaciones

Los apéndices, si se requieren, aparecen antes de los agradecimientos.

V. Agradecimientos

En esta parte se mencionarán algunas estadísticas de operación del algoritmo implementado en MATLAB que fue puesta a prueba. Se debe recordar que por ser un algoritmo de búsqueda y selección basado en funciones del tipo aleatorio para funcionar, el número de generaciones por simulación varía a pesar de analizar un mismo sistema varias veces; esto nos lleva a plantear una línea de operación, que consiste en un margen en el que el algoritmo deberá solucionar un problema.

A. Número de generaciones máximas, mínimas y promedio

Se han planteado los siguientes resultados en base a un total de 1000 simulaciones realizadas con el AG implementado en MATLAB. Obteniéndose los resultados acumulados mostrados en la Fig. 8.
f
Fig. 8. Gráfica que muestra el número de generaciones versus el número de simulaciones de un total de 1000 (Nótese que la distribución no sigue ningún patrón).
Se ha preferido ponderar estos datos, ya que al usar funciones aleatorias dentro de los algoritmos genéticos, los resultados obtenidos no siguen una distribución del tipo Gaussiana, eso también puede ser apreciado en la Fig. 8, ya que no se puede obtener una gráfica característica de esta distribución. Es por esto que la Tabla I, muestra algunos resultados típicos obtenidos en las simulaciones de prueba realizadas. Tomando como base los datos de la Fig. 8. Estos valores fueron analizados implementando un bucle de mil iteraciones que puso a prueba al algoritmo durante aproximadamente una hora extrayendo el número de generaciones alcanzado en cada una de ellas.
Tabla V1
Valores Típicos del Número de Generaciones Obtenidos Antes de Alcanzar la Solución.
Mínimo
13
Máximo
137
Ponderado
74.395
Medio
75.000

Los valores de la Tabla I pueden variar de prueba en prueba por el tipo de algoritmo utilizado.

B. Probabilidades de falla del algoritmo

Los autores reconocen que existe una mínima probabilidad de que el algoritmo no llegue a encontrar alguna solución en alguna de sus iteraciones; pero esta probabilidad es baja y no debe significar problema alguno.
Durante las pruebas de simulación realizadas en el proceso de prueba, el algoritmo fue verificado unas 2500 veces de las cuales solo falló (no encontró solución) unas 2 veces, con lo cual la probabilidad de falla del algoritmo podría establecerse en 2/2500. Ahora se debe tener en consideración que el algoritmo fue planteado de tal modo que considere que la solución no fue encontrada al alcanzar las 150 generaciones; por lo cual esta probabilidad se podrá reducir siempre y cuando el número de generaciones máximas (150) sea ampliado (esto afectará el tiempo de simulación).
El número máximo fue escogido a criterio ya que en más del 90% (de los 2500 casos) el máximo valor alcanzado fue de 137 generaciones.

VI. Agradecimientos

Los autores reconocen la contribución de J. Olortegui C. y agradecen la ayuda en el desarrollo de la función de selección.

VII. Referencias

[1]     R. Linden, Algoritmos Genéticos, Brasport, (2nd ed.)
[2]     W. Stevenson y Grainger, Análisis de Sistemas de Potencia, McGraw- Hill, 1996 (2nd ed.).
[3]     J. Duncan G y M. S. Sarma, Sistemas de Potencia, Análisis y Diseño, E. Ciencias, 2003 (3th ed.).

VIII. Biografías


L. Miguel E. Rojas (M’2009) nació en Cerro de Pasco, Perú, el 8 de abril de 1986. Se graduó en la Colegio Nacional Industrial No 3, Cerro de Pasco, Perú.
Actualmente se desempeña como estudiante de pregrado de Ingeniería Eléctrica de la Universidad Nacional de Ingeniería, Lima, Perú; desarrollando trabajos de investigación para la Rama Estudiantil IEEE de la cual es miembro además de ocupar el cargo de Vice-presidente de Power and Energy Society de la Rama Estudiantil IEEE UNI; Actualmente se desempeña como asesor de grupos de investigación y profesor de capacitaciones para la Power and Energy Society desde el 2005. Además de realizar investigación para el Instituto de Investigación de la Facultad de Ingeniería Eléctrica y Electrónica de la UNI. Entre sus campos de interés están los fenómenos de estabilidad en sistemas interconectados, estudio de transitorios electromagnéticos y análisis de contingencias en sistemas eléctricos de potencia.
El estudiante M. Espinoza recibió la distinción Presidente Manuel Pardo Y Lavalle al Mérito Académico otorgado por la Universidad Nacional de Ingeniería; además de poseer una beca de estudios otorgada por el convenio UNI-SIEMENS 2006-2010.




A. Huerta Valdivia (M’2009) nació en Lima, Perú, el 24 de junio de 1989. Estudió en los colegios Santiago Antúnez de Mayolo, Huánuco Perú y en el internado religioso San José Marello de Huaraz, desarrollando así experiencia comunitaria y social.
Actualmente estudiante de pregrado de la Universidad Nacional de Ingeniería, Lima Perú; realiza trabajos de investigación como miembro de la Rama Estudiantil IEEE de la misma universidad, además de formar parte de la comisión organizadora del INTERCON UNI 2011 de Sección Perú, llevando el cargo de secretario del comité directivo. Entre sus campos de interés se encuentran los sistemas de potencia.
Como estudiante de pregrado, pertenece al Power and Energy Society - IEEE, como miembro estudiantil, además de dirigir el comité de investigación de dicha sociedad.






E. M. Raos. Curasi (M’2009) nació en Huánuco, Perú, el 4 de octubre de 1988. Se graduó Estudiante de pregrado del Facultad de Ingeniería Eléctrica y Electrónica en el área de ingeniería Eléctrica de la Universidad Nacional de Ingeniería.
Actualmente desempeñándose como director del comité de actividades estudiantiles de la Rama Estudiantil IEEE de la Universidad Nacional de Ingeniería. Entre sus campos de interés se encuentran el análisis de sistemas de potencia y estudio de estabilidad de sistemas eléctricos de Potencia.
Como estudiante se desempeña en el área de investigación de la Rama estudiantil IEEE en la Power and Energy Society además de participar como colaborador en la organización del INTERCON UNI 2011 de la Sección Perú.







Juan C. Quispe H. (M’2009) nació en Huancavelica, Perú, el 11 de julio de 1990. Estudiante de pregrado del Facultad de Ingeniería Eléctrica y Electrónica en el área de ingeniería Eléctrica de la Universidad Nacional de Ingeniería.
Actualmente desempeñándose como director del comité de informática de la Rama Estudiantil IEEE de la Universidad Nacional de Ingeniería. Entre sus campos de interés se encuentran el análisis de sistemas de potencia.
Como estudiante se desempeña en el área de investigación de la Rama estudiantil IEEE en la Power and Energy Society además de participar como colaborador en la organización del INTERCON UNI 2011 de la Sección Perú.



[1] L. M. E. Rojas, A. Huerta V., E. Ramos C. y J. Quispe H. son alumnos de la especialidad de ingeniería eléctrica de la Universidad Nacional de Ingeniería, Lima Perú. Además de eso son miembros de la Rama Estudiantil IEEE de la Universidad Nacional de Ingeniería, y miembros del capítulo de Power and Energy Society. (correos e.: miguel_e_rojas@ieee.org, adderly.huerta@ieee.org, edwin.ramos@ieee.org, juan_quispe_h@ieee.org).

No hay comentarios:

Publicar un comentario