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.
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:
(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:
(2)
|
|
(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:
(4)
|
||
(5)
|
||
Donde:
es la
magnitud 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:
(6)
|
|
(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:
(8)
|
|
(9)
|
|
(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:
(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:
(12)
|
|
(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:
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:
(15)
|
|
(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:
(17)
|
|
(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:
(19)
|
|
(20)
|
|
(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:
(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:
(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):
(24)
|
|
(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 V‑1
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
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.
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.
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ú.
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