Está en la página 1de 54

UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS

FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Licenciatura en Ingeniería Eléctrica Industrial

TRABAJO DE FIN DE GRADO

ALGORITMO GENÉTICO APLICADO AL DESPACHO ENERGÉTICO

AUTORES:
CARLOS MATUTE
20121009469
FAUSTO VIDEA
20141006078
JOSE LOZANO
20151005549

TUTOR:
ING. ROLANDO CASTILLO

IE-900 Seminario de Investigación / IE-900 Research Seminar


Abril, 2021
IE-900 Seminario de Investigación / IE-900 Research Seminar
LICENCIATURA EN INGENIERÍA ELÉCTRICA INDUSTRIAL

TRABAJO DE FIN DE GRADO

ALGORITMO GENÉTICO APLICADO AL DESPACHO ECONÓMICO

AUTORES:
CARLOS MATUTE
20121009469
FAUSTO VIDEA
20141006078
JOSE LOZANO
20151005549

TUTOR:
ING. ROLANDO CASTILLO

Tribunal:

Presidente/a: Vocal 1:

Vocal 2: Fecha de defensa: 27/04/2021

Calificación:
Declaración

El presente trabajo previo a la obtención de título de grado es fruto de nuestro


esfuerzo y dedicación, en tal sentido manifestamos la originalidad en la redacción,
construcción de metodología del proceso para la obtención de datos, interpretación de
datos y elaboración de las conclusiones; así como la distinción de los aportes tomados
de autores que han sido referenciados en el documento.

Carlos Matute
Fausto Videa
Jose Lozano
Agradecimientos
Un agradecimiento especial a Dios que nos regala la vida y la sabiduría de haber
desarrollado todas y cada una de las clases, retos y conocimientos obtenidos a lo largo
de la carrera. Una mención a mis padres por el apoyo y la paciencia de esperar a este
momento, a mis familiares y amigos por su apoyo incondicional, por sus voces de
aliento y ánimo que hoy rinden frutos.
Carlos Matute

Me van a faltar páginas para agradecer a las personas que se han involucrado
en la realización de este trabajo, sin embargo, merecen reconocimiento especial mi
Madre y mi Padre que con su esfuerzo y dedicación me ayudaron a culminar mi
carrera universitaria y me dieron el apoyo suficiente para no decaer cuando todo
parecía complicado e imposible.
Fausto Videa

Agradezco primeramente a Dios por darme la oportunidad de culminar este largo


recorrido que hecho al estudiar esta carrera llena de desafíos y experiencias
inolvidables. También doy a gracias a mi familia por su apoyo, a mi novia por estar a mi
lado celebrando cada pequeño éxito e igualmente a mis amigos y líderes por darme su
ayuda incondicional y ser de inspiración para mí.
Jose Lozano
CONTENIDO
Declaración..................................................................................................................................................
Agradecimientos..........................................................................................................................................
I. INTRODUCCIÓN................................................................................................................................ 7
II. OBJETIVOS........................................................................................................................................ 8
III. COMPUTACIÓN EVOLUTIVA.......................................................................................................... 9
III. 1. BREVE HISTORIA DE LA COMPUTACIÓN EVOLUTIVA........................................................................................9
III. 2. INSPIRACIÓN DEL PROCESO DE EVOLUCIÓN NATURAL...................................................................................10
III. 3. CLASIFICACIÓN.....................................................................................................................................11
III. 4. DIFERENCIAS DE LAS TÉCNICAS EVOLUTIVAS CON RESPECTO A LAS TRADICIONALES............................................13
III. 5. VENTAJAS DE LAS TÉCNICAS EVOLUTIVAS...................................................................................................13
III. 6. DESVENTAJAS DE LAS TÉCNICAS EVOLUTIVAS..............................................................................................14
IV. ALGORITMOS GENÉTICOS........................................................................................................... 15
IV. 1. ESTRUCTURA GENERAL...........................................................................................................................15
IV. 2. VOCABULARIO EN ALGORITMOS GENÉTICOS...............................................................................................16
IV. 3. COMPONENTES DE UN ALGORITMO GENÉTICO............................................................................................16
IV. 4. OPERADORES EVOLUTIVOS......................................................................................................................17
V. DESPACHO ENERGÉTICO.................................................................................................................. 20
V. 1. DEFINICIÓN..........................................................................................................................................20
V. 2. INICIATIVA DE TECNOLOGÍA COMPUTACIONAL EN DESPACHO.......................................................................21
V. 3. PROCEDIMIENTOS DE CONTROL DE LA DEMANDA........................................................................................23
V. 4. LOS ALGORITMOS GENÉTICOS EN LA SOLUCIÓN DE PROBLEMAS DE OPTIMIZACIÓN............................................24
VI. METODOLOGÍA........................................................................................................................... 26
VII. CASO DE ESTUDIO....................................................................................................................... 31
VIII. RESULTADOS.............................................................................................................................. 36
IX. CONCLUSIONES Y RECOMENDACIONES.......................................................................................39
X. ANEXOS...................................................................................................................................... 40
XI. REFERENCIAS.............................................................................................................................. 47
I. INTRODUCCIÓN
Muchos problemas de optimización que aparecen en los ámbitos de las
ingenierías son muy difíciles de solucionar por medio de técnicas tradicionales, por lo
que a menudo se aplican algoritmos evolutivos, inspirados en la naturaleza, que
recogen un conjunto de modelos basados en la evolución de los seres vivos.

La simulación de procesos de evolución natural de las especies da como


resultado una técnica de optimización estocástica que posteriormente fue llamada
algoritmos evolutivos, y que fueron enmarcados dentro de las técnicas no
convencionales de búsqueda y optimización, con un comportamiento altamente
paralelo, para problemas del mundo real. A partir de la creación de estas estrategias
evolutivas aparecieron otras vías de investigación como son: Algoritmos Genéticos
(Goldberg), Programación Genética (Cosa), Programación Evolutiva (Fogel), y
Estrategias de Evolución (Rechenberg/Schwefel), en donde la estrategia de evolución
más conocida hoy en día son los algoritmos genéticos.

Esta técnica se basa en los mecanismos de selección que observamos en la


naturaleza, de acuerdo a los cuales los individuos más aptos de una población
sobreviven al adaptarse más fácilmente a los cambios que se producen en su entorno.
Es por ello que se utilizará para resolver un problema de despacho económico de
generadores de potencia para suplir una demanda dada en un periodo de tiempo
determinado en el sistema, considerando también las limitaciones de transmisión.
Teniendo como objetivo minimizar los costos de operación del sistema.
II. OBJETIVOS
Como objetivo general se plantea la puesta en marcha de un modelo de red
eléctrica optimizando su funcionamiento desde el punto de vista de los costos de
generación, lo que se conoce como despacho económico, en términos más amplios,
flujo de cargas óptimo.
Dada la amplitud del tema tratado, el proyecto se acotará al estudio de aquellos
sistemas con generación eléctrica mediante centrales hidrotérmicas exclusivamente.
Para alcanzar el objetivo general se proponen los siguientes objetivos específicos:
a) Analizar las variables que influyen en los costos de generación y las formas
comunes de caracterizar la relación entre la fuente primaria y la energía eléctrica
generada.
b) Aplicar y desarrollar un modelo de optimización diferente a los que se usan
normalmente.
c) Estudiar las bases del problema del despacho económico y los procedimientos
empleados para su resolución.
d) Alcanzar un resultado aceptable y lógico al aplicar el algoritmo.
e) Conocer el alcance de dichos algoritmos, así como sus ventajas y desventajas.
Algoritmo genético aplicado al despacho energético

III. COMPUTACIÓN EVOLUTIVA


III.1. Breve historia de la computación evolutiva
La idea de aplicar el Principio de Darwin (Darwin, 1859) a la resolución de
problemas se remonta a 1948, cuando el famoso matemático Alan Mathison Turing
(Alan Mathison Turing) habló de buscar. La herencia o evolución está en su artículo
"Máquinas inteligentes", aunque no hay explicación de cómo lograrlo. Encuentra una
solución al problema. A finales de la década de 1950 y principios de la de 1960, este
biólogo Alexander S. Fraser publicó una serie de artículos sobre la evolución de los
sistemas biológicos. La computadora digital proporcionó inspiración para algoritmos
posteriores Gene (Holanda, 1975), (Goldberg, 1989; Goldberg y Sastry, 2008).

En 1962, Bremermann utilizó la evolución y recombinación siendo el primero en


ver la evolución como un proceso. Además de realizar la primera simulación utilizando
una cadena binaria que se procesaban mediante reproducción (sexual o asexual),
selección y mutación, siendo claramente el predecesor del algoritmo genético.

Durante los años sesenta, se propusieron tres implementaciones diferentes de la


idea básica. Lawrence J. Fogel propuso en 1960 una técnica denominada
Programación Evolutiva, en la cual la inteligencia se veía como un comportamiento
adaptativo. John H. Holland desarrolló a principios de los 1960s los “planes
reproductivos” y “adaptativos” en un intento por hacer que las computadoras
aprendieran imitando el proceso de la evolución. Esta técnica sería después conocida
mundialmente como Algoritmo Genético. A su vez, Rechenberg y Schwefel inventaron
las Estrategias de Evolución. Durante quince años, estas áreas se desarrollaron de
forma independiente, hasta que a principios de los años noventa comenzaron a tratarse
como representaciones diferentes de una misma tecnología, conocida como
Computación Evolutiva.

Los principales paradigmas que forman la computación evolutiva son, por tanto:
Programación Evolutiva, en la cual la inteligencia se ve como un comportamiento
adaptativo; Estrategias Evolutivas, cuyo objetivo era resolver problemas hidrodinámicos
de alto grado de complejidad; y Algoritmos Genéticos, cuya motivación principal
es el aprendizaje de máquina.

En primer lugar, la programación evolutiva enfatiza los nexos de comportamiento


entre padres e hijos, en vez de buscar emular operadores genéticos específicos, como
en el caso de los algoritmos genéticos. El algoritmo básico de la programación
evolutiva es el siguiente:
a) Genera aleatoriamente una población inicial.
b) Aplica mutación.
c) Calcula la aptitud de cada hijo y usa un proceso de selección mediante torneo
(normalmente estocástico) para determinar cuáles serán los hijos (soluciones)
que se retendrán.

La programación evolutiva es una abstracción de la evolución al nivel de las


especies, por lo que no se requiere el uso de un operador de recombinación. Asimismo,
usa selección probabilística.

Por otro lado, las estrategias evolutivas fueron desarrolladas en 1964 por un
grupo de estudiantes alemanes de ingeniería encabezado por Ingo Rechenberg. Su
objetivo era resolver problemas hidrodinámicos de alto grado de complejidad. La
versión original usaba un solo padre y con él se generaba un solo hijo. Este hijo se
mantenía si era mejor que el padre, o de lo contrario se elimina. Ingo Rechenberg
(1973) también introdujo el concepto de población, al proponer una estrategia evolutiva
llamada (μ + 1) − EE, en la cual hay μ padres y se genera un solo hijo, el cual puede
reemplazar al peor padre de la población.

La programación evolutiva usa normalmente selección estocástica, mientras que


las estrategias evolutivas usan selección determinista. Ambas técnicas operan a nivel
fenotípico. La programación evolutiva es una abstracción de la evolución al nivel de las
especies, por lo que no se requiere el uso de un operador de recombinación (diferentes
especies no se pueden cruzar entre sí). En contraste, las
estrategias evolutivas son una abstracción de la evolución al nivel de un individuo,
por lo que la recombinación es posible.

Por último, los algoritmos genéticos (denominados originalmente “planes


reproductivos”) fueron desarrollados por John H. Holland a principios de los 1960s. Su
motivación principal fue el aprendizaje de máquina. El algoritmo genético enfatiza la
importancia del cruce sexual (operador principal) sobre el de la mutación (operador
secundario), y usa selección probabilística. El algoritmo básico es el siguiente:
a) Generar (aleatoriamente) una población inicial.
b) Calcular la aptitud de cada individuo.
c) Seleccionar (probabilísticamente con base en aptitudes.
d) Aplicar operadores genéticos (cruce y mutación) para generar la siguiente
población.
e) Ciclar hasta que se satisface cierta condición de parada.

III.2. Inspiración del proceso de evolución natural


El 27 de diciembre de 1831 zarpa de Davenport (Inglaterra) el Beagle, buque al
mando del capitán Fritz-Roy, con varios objetivos científicos: completar el estudio de
las costas de la Patagonia y Tierra del Fuego, realizar la cartografía de las costas de
Algoritmo genético aplicado al despacho energético

Chile, Perú y algunas islas del Pacífico y realizar varias observaciones cronométricas
alrededor del mundo. A bordo viaja el joven naturalista de 22 años, Charles Robert
Darwin (1809-1882). El 6 de enero de 1832 el Beagle fondea frente a las costas de
Tenerife. Sin embargo, las autoridades obligan a la tripulación a permanecer a bordo
del buque por miedo a que padezca el cólera. La larga travesía del Beagle, que atraca
el 2 de octubre en Falmouth, sirve a Darwin para enunciar su teoría acerca del origen y
evolución de las especies, que derrumba el Lamarck ismo al indicar que la evolución se
origina a través de cambios aleatorios de características hereditarias, combinados con
un proceso de selección natural.

La teoría de la evolución de Darwin proporciona, por tanto, una explicación


biológica a la diversidad y a sus mecanismos relacionados. En lo que se conoce
generalmente como vista macroscópica de la evolución, la selección natural juega un
rol principal. Dado un entorno que tiene capacidad para albergar a un número limitado
de individuos y el instinto básico de los individuos para la reproducción, la selección es
inevitable si el tamaño de la población crece de manera exponencial. La selección
natural favorece a aquellos individuos que compiten por los recursos dados más
efectivamente, es decir, aquellos que se adaptan de la mejor manera posible a las
condiciones del entorno. La selección basada en competición es uno de los dos pilares
del proceso de evolución. El otro pilar del proceso, identificado por Darwin, resulta de
las variaciones fenotípicas entre los miembros de la población. Las características
fenotípicas son las características físicas y de comportamiento de un individuo que
afectan directamente su respuesta al entorno, determinando así su ajuste. Cada
individuo representa una única combinación de características fenotípicas que es
evaluada por el entorno. Si la evaluación es favorable, entonces se propaga a través de
su descendencia. En otro caso, se descarta al no tener descendencia. La idea de
Darwin era que se producen pequeñas variaciones en las características fenotípicas de
una generación a otra. A través de estas variaciones, se producen nuevas
combinaciones de características que son evaluadas. Las mejores combinaciones
sobreviven y así progresa la evolución. Para resumir este modelo básico, una población
está formada por un número de individuos, que son las unidades de selección. Cuanto
más satisfactoriamente se reproduzcan los individuos, ciertas mutaciones ocasionales
dan lugar a nuevos individuos a ser evaluados. Por lo tanto, la población, que cambia
de una generación a otra, se convierte en la unidad de evolución.

En un problema de optimización que, desde un punto de vista matemático,


consiste en la búsqueda de donde se alcanza el máximo o mínimo de una función real,
hay una serie de mejores puntos que todas sus soluciones vecinas. Estos puntos son
óptimos locales y los mejores de ellos se llama óptimo global. La unión entre el proceso
de evolución natural y un proceso de optimización es muy directa, como confuso,
porque la evolución no es un proceso de mejora unidireccional. Dado que la población
tiene un tamaño finito y las elecciones aleatorias se realizan a través de los operadores
de selección y mutación, es común observar el fenómeno de la presión genética, con
los cuales los individuos adecuados para el medio ambiente pueden eliminarse de la
población, o es posible que la población sufra de una pérdida de diversidad de rasgos.
Los efectos combinados de la presión y la selección permiten a las poblaciones
moverse tanto hacia las colinas como a los valles de la función objetivo, y por supuesto
no hay garantía de que la población cargue la misma colina.
III.3. Clasificación
Existen las siguientes modificaciones sobre el esquema general:
a) Estrategias evolutivas: Técnica desarrollada por Rechenberg y Schwefel y
extendido por Herdy, Kursawe, Ostermeier, Rudolph y otros, fue diseñada inicialmente
con la meta de resolver problemas de optimización discretos y continuos,
principalmente experimentales y considerados difíciles. Trabaja con vectores de
números reales –con desviaciones estándar- que codifican las posibles soluciones de
problemas numéricos. Utiliza recombinación o cruce (crossover aritmético), mutación y
la operación de selección, ya sea determinística o probabilística, elimina las peores
soluciones de la población y no genera copia de aquellos individuos con una aptitud por
debajo de la aptitud promedio.
b) Programación evolutiva: Técnica introducida por Fogel y extendida por
Burgin, Atmar y otros, inicialmente fue diseñada como un intento de crear inteligencia
artificial. La representación del problema se realiza mediante números reales (cualquier
estructura de datos), y emplea los mecanismos de mutación y selección. El
procedimiento es muy similar a las estrategias evolutivas con la diferencia de que no
emplea la recombinación, de tal forma que son denominadas en conjunto algoritmos
evolutivos como una manera de diferenciarlas de los algoritmos genéticos.
c) Algoritmos Genéticos: Modelan el proceso de evolución como una sucesión
de frecuentes cambios en los genes, con soluciones análogas a cromosomas. Trabajan
con una población de cadenas binarias para la representación del problema, y el
espacio de soluciones posibles es explorado aplicando transformaciones a estas
soluciones candidatas tal y como se observa en los organismos vivientes: cruce,
inversión y mutación. Como método de selección emplean el mecanismo de la ruleta (a
veces con elitismo). Constituyen el paradigma más completo de la computación
evolutiva ya que resumen de modo natural todas las ideas fundamentales de dicho
enfoque. Son muy flexibles ya que pueden adoptar con facilidad nuevas ideas,
generales o específicas, que surjan dentro del campo de la computación evolutiva.
Además, se pueden hibridar fácilmente con otros paradigmas y enfoques, aunque no
tengan ninguna relación con la computación evolutiva. Se trata del paradigma con
mayor base teórica.
d) Programación genética: Desarrollada por Koza, los individuos son
programas o autómatas de longitud variable, descritos mediante Expresiones-S de
LISO representadas habitualmente como árboles, y como operadores de variación
emplea crossover y modificación, además de mecanismos de selección.
Hay también muchos sistemas híbridos los cuales incorporan varias
características de los paradigmas antes mencionados y, consecuentemente, es difícil
su clasificación; de todas maneras, se referirán a ellos como métodos de computación
evolutiva. La estructura de cualquier algoritmo evolutivo es bastante similar.
Algoritmo genético aplicado al despacho energético

Tabla III.1 Tabla de ejemplo


Algoritmo Representa Operad Métodos
ción del ores de de selección
problema variación

Algoritmos Cadena Mutaci Selección


genéticos (Goldberg) binaria ón y de rueda de
Crossover ruleta (a veces
con elitismo)

Estrategias de Vector de Mutaci Diferentes


Evolución reales desviación ón tipos de
(Rechenberg/Schwef estándar gaussiana y selección:
el) crossover lambda, mu;
aritmético lambda+mu...
(diferentes
tipos)

Programación Números Mutaci Diversos


evolutiva (Fogel) reales ón tipos de
selección

Programación Expresione Crosso Diversos


genética (Koza) s-S de LISP ver, algo de tipos de
representadas mutación selección
habitualmente
como árboles

III.4. Diferencias de las técnicas evolutivas con respecto a las


tradicionales
Existen varias diferencias que vale la pena destacar entre los algoritmos
evolutivos y las técnicas tradicionales de búsqueda y optimización:

a) Las técnicas evolutivas usan una población de soluciones potenciales en vez


de un solo individuo, lo cual las hace menos sensibles a quedar atrapadas en
mínimos/máximos locales.
b) Las técnicas evolutivas no necesitan conocimiento específico sobre el
problema que intentan resolver.
c) Las técnicas evolutivas usan operadores probabilísticos, mientras las
técnicas tradicionales utilizan operadores determinísticos.
d) Aunque las técnicas evolutivas son estocásticas, el hecho de que usan
operadores probabilísticos no significa que operen de manera análoga a una
simple búsqueda aleatoria.
III.5. Ventajas de las técnicas evolutivas
Es importante destacar las diversas ventajas que presenta el uso de técnicas
evolutivas para resolver problemas de búsqueda y optimización:
a) Simplicidad Conceptual.
b) Amplia aplicabilidad.
c) Superiores a las técnicas tradicionales en muchos problemas del mundo real.
d) Tienen el potencial para incorporar conocimiento sobre el dominio y para
hibridarse con otras técnicas de búsqueda/optimización.
e) Pueden explotar fácilmente las arquitecturas en paralelo.
f) Son robustas a los cambios dinámicos.
g) Generalmente pueden auto-adaptar sus parámetros.
h) Capaces de resolver problemas para los cuales no se conoce solución alguna.

III.6. Desventajas de las técnicas evolutivas


Han sido duramente criticadas por los investigadores de la IA simbólica por
considerarlas, en forma equivocada, inferiores a las búsquedas aleatorias.
a) La programación automática fue considerada una “moda pasajera” y el
enfoque evolutivo fue visto como otro intento por lograr lo imposible.
b) Los especialistas de IA clásica las consideran “mal fundamentadas” e
“inestables”.
c) Su alta aplicabilidad las hace poco eficientes para algunos tipos
específicos de problemas.
d) Sin incorporar conocimiento del problema, pueden tener problemas para
hallar los óptimos globales.
e) Su eficiencia computacional puede ser pobre, demandando grandes
recursos de cómputo para problemas complejos.
Algoritmo genético aplicado al despacho energético

IV. ALGORITMOS GENÉTICOS


IV.1. Estructura general
Los algoritmos genéticos son estrategias de búsqueda estocásticas basadas en el
mecanismo de selección natural, y en algunos casos, los aspectos de la genética
natural están involucrados, lo que imita la evolución biológica como una estrategia para
resolver problemas. Los algoritmos genéticos difieren de las estrategias de búsqueda
convencionales en que estos trabajan en un conjunto de posibles soluciones llamadas
poblaciones. Esta población consiste en una serie de soluciones llamadas individuos, y
un individuo consiste en una serie de posiciones que representan cada una de las
variables involucradas en los procesos de optimización, y estos son llamadas
cromosomas. Estos cromosomas consisten en una cadena de símbolos, que se
muestra en muchos casos en números binarios. En un algoritmo genético, cada
individuo se define como una estructura de datos, que representa una posible solución
para la búsqueda de problemas. Las estrategias de evolución trabajan en individuos
que representan las soluciones del problema, se desarrollan a través de generaciones.
Dentro de la población, cada uno es diferente según su valor de acondicionamiento
físico, que se obtiene con algunas medidas de acuerdo con el problema a resolver.
Para la adquisición de las próximas generaciones, se crean nuevas personas, como
hijos con dos estrategias evolutivas básicas, como son el cruce y el operador de
mutación.

Se obtiene una nueva generación utilizando el operador de selección, que se lleva


a cabo esencialmente en la aptitud de los individuos, la población adquirida después
del cruce y la mutación. El operador de selección debe mantener la cantidad de
individuos constante en la población, y a través de las generaciones, el individuo con el
valor de aptitud más alta tiene mayores oportunidades para seleccionarse en la
próxima generación. Entre el conjunto de soluciones candidatas generadas
accidentalmente, muchas no funcionarán en absoluto y serán eliminadas; sin embargo,
con puro al azar, algunos pueden ser prometedores y pueden mostrar acción, aunque
es solo una actividad débil e imperfecta, a la solución del problema. Estos candidatos
prometedores se mantienen y se les permite reproducirse. Se hacen múltiples copias
de ellos, pero las copias no son perfectas; se introducen cambios aleatorios durante la
copia. Estos descendientes duran con la próxima generación, formando una nueva
colección de soluciones candidatas, que se someten nuevamente a un rango de
valoración de fitness. Los candidatos que se han empeorado o que no han mejorado
con los cambios en su código se eliminan de nuevo. Pero, nuevamente con pura
aleatoria, las variedades aleatorias introducidas en la población pueden haber
mejorado a algunas personas, lo que las convierte en mejores soluciones al problema,
más completas o más eficientes. Nuevamente, estos ganadores son elegidos y
copiados a la próxima generación con cambios aleatorios, y se repite el proceso. Las
expectativas son que la capacidad promedio de la población crecerá en cada círculo y,
por lo tanto, repetir este proceso cientos o miles de rondas, se pueden descubrir muy
buenas soluciones al problema. En otras palabras, después de varias repeticiones, el
algoritmo converge al individuo con un mejor valor de acondicionamiento físico que
representó lo óptimo o supositorio del problema.

IV.2. Vocabulario en algoritmos genéticos


Los algoritmos genéticos toman para su definición terminología utilizada en
Genética Natural y Ciencia Computacional, por lo que la literatura específica es
una combinación entre los términos naturales y los artificiales, por esto se debe tener
en cuenta:
a) La estructura de codificación con la cual se construyen las soluciones para el
problema se llaman cromosomas. Uno o más cromosomas pueden ser
requeridos para conformar una población.
b) El conjunto completo de cromosomas se llama genotipo y un individuo en
particular, un organismo resultante, se llama fenotipo.
c) Cada cromosoma contiene una serie de valores individuales llamados genes.
d) Cada gen contiene información valiosa de una variable en particular y su
ubicación dentro del individuo se conoce como loco.
e) Los diferentes valores de un gen son llamados alelos.

IV.3. Componentes de un algoritmo genético


Los algoritmos genéticos se pueden caracterizar a través de los siguientes
componentes:
Definición del problema a optimizar
Los algoritmos genéticos tienen su campo de aplicación importante en problemas
de optimización complejos, donde se tiene diferentes parámetros o conjuntos de
variables que deben ser combinadas para su solución. También se enmarcan en este
campo problemas con muchas restricciones y problemas con espacios de búsqueda
muy grandes. Este tipo de optimización difiere en muchos aspectos de los procesos
convencionales de optimización, ya que los algoritmos genéticos:

a) Trabajan sobre un conjunto codificado de soluciones, no sobre las soluciones


mismas.
b) Trabajan sobre un conjunto de soluciones, no sobre una solución única.
c) Utilizan información simple para determinar la aptitud de los individuos,
dejando de lado los procesos de derivación u otra información adicional.
Algoritmo genético aplicado al despacho energético

d) Usan procesos de transición probabilística para la búsqueda de la solución, no


reglas determinísticas.

Gracias a estas características, los algoritmos genéticos no requieren información


matemática adicional sobre optimización, por lo que pueden tomar otro tipo de
funciones objetivo y todo tipo de restricciones (lineales y no lineales) definidas sobre
espacios discretos, continuos o espacios de búsqueda combinados.
La robustez de los operadores de evolución hace muy efectivos a los algoritmos
genéticos en procesos de búsqueda de soluciones globales. A diferencia de las
soluciones obtenidas con un algoritmo genético, las búsquedas tradicionales operan
sobre una solución particular del problema, buscando soluciones óptimas en las
cercanías de esta solución particular, en muchos casos no encontrando soluciones
globales para el problema. Por ello, los algoritmos genéticos proveen una gran
flexibilidad para ser combinados con heurísticas específicas para la solución de un
problema en particular.

Representación para la solución del problema:


Para la solución de un problema en particular es importante definir una estructura
del cromosoma de acuerdo con el espacio de búsqueda. En el caso de los algoritmos
genéticos la representación más utilizada es la representación binaria, debido a su
facilidad de manipulación por los operadores genéticos, su fácil transformación en
números enteros o reales, además de la facilidad que da para la demostración de
teoremas.

La codificación de números reales en cadenas de números binarios se debe hacer


teniendo en cuenta el siguiente proceso y la precisión requerida para la solución del
problema:
x i ∈[ai , bi ]
[IV.1]

En donde el rango de la variable debe quedar dividida en:

( b i−ai )∗10 p
[IV.2]

Donde p es la precisión requerida por el proceso (determinando así su potencia)


La longitud de la cadena binaria de caracteres denotada por m i, para cada variable es
calculada como:
2m −1 < ( bi −ai )∗10 p <2m −1
i i

[IV.3]

Evaluación del individuo:


Nos muestra el valor de aptitud de cada uno de los individuos. Esta aptitud viene
dada por una función que es la unión entre el mundo natural y el problema a
resolver matemáticamente. Esta función de aptitud es particular para cada problema
particular a
resolver y representa para un algoritmo genético lo que el medio ambiente
representa para los humanos.
IV.4. Operadores evolutivos
Selección:
Un algoritmo genético puede utilizar muchas técnicas diferentes para seleccionar
a
los individuos que deben copiarse hacia la siguiente generación, pero abajo se
listan algunos de los más comunes. Algunos de estos métodos son mutuamente
exclusivos, pero otros pueden utilizarse en combinación, algo que se hace a menudo.
Las diferentes variantes en la operación de selección son:
a) Selección elitista: se garantiza la selección de los miembros más aptos de
cada generación. (La mayoría de los AGs no utilizan elitismo puro, sino que
usan una forma modificada por la que el individuo mejor, o algunos de los
mejores, son copiados hacia la siguiente generación en caso de que no
surja nada mejor).
b) Selección proporcional a la aptitud: los individuos más aptos tienen más
probabilidad de ser seleccionados, pero no la certeza.
c) Selección por rueda de ruleta: una forma de selección proporcional a la
aptitud en la que la probabilidad de que un individuo sea seleccionado es
proporcional a la diferencia entre su aptitud y la de sus competidores.
(Conceptualmente, esto puede representarse como un juego de ruleta:
cada individuo obtiene una sección de la ruleta, pero los más aptos
obtienen secciones mayores que las de los menos aptos. Luego la ruleta
se hace girar, y en cada vez se elige al individuo que “posea” la sección en
la que se pare la ruleta).
d) Selección escalada: al incrementarse la aptitud media de la población, la
fuerza de la presión selectiva también aumenta y la función de aptitud se
hace más discriminadora. Este método puede ser útil para seleccionar más
tarde, cuando todos los individuos tengan una aptitud relativamente alta y
sólo les distingan pequeñas diferencias en la aptitud.
e) Selección por torneo: se eligen subgrupos de individuos de la población, y
los miembros de cada subgrupo compiten entre ellos. Sólo se elige a un
individuo de cada subgrupo para la reproducción.
f) Selección por rango: a cada individuo de la población se le asigna un
rango numérico basado en su aptitud, y la selección se basa en este
ranking, en lugar de las diferencias absolutas en aptitud. La ventaja de
este método es que puede evitar que individuos muy aptos ganen
dominancia al principio a expensas de los menos aptos, lo que reduciría la
diversidad genética de la población y podría obstaculizar la búsqueda de
una solución aceptable.
g) Selección generacional: la descendencia de los individuos seleccionados
en cada generación se convierte en toda la siguiente generación. No se
conservan individuos entre las generaciones.
h) Selección por estado estacionario: las descendencias de los individuos
seleccionados en cada generación vuelven al acervo genético preexistente,
reemplazando a algunos de los miembros menos aptos de la siguiente
generación. Se conservan algunos individuos entre generaciones.
i) Selección jerárquica: los individuos atraviesan múltiples rondas de
selección en cada generación. Las evaluaciones de los primeros niveles
son más rápidas y menos discriminatorias, mientras que los que sobreviven
hasta niveles más altos son evaluados más rigurosamente. La ventaja de
este método es que reduce el tiempo total de cálculo al utilizar una
Algoritmo genético aplicado al despacho energético

evaluación más rápida y menos selectiva para eliminar a la mayoría de los


individuos que se muestran poco o nada prometedores, y sometiendo a
una evaluación de aptitud más rigurosa y computacionalmente más
costosa sólo a los que sobreviven a esta prueba inicial.

Cruce y mutación:
Una vez que la selección ha elegido a los individuos aptos, éstos deben ser
alterados aleatoriamente con la esperanza de mejorar su aptitud para la siguiente
generación. Existen dos estrategias básicas para llevar esto a cabo. La primera y más
sencilla se llama mutación. Al igual que una mutación en los seres vivos cambia un gen
por otro, una mutación en un algoritmo genético también causa pequeñas alteraciones
en puntos concretos del código de un individuo.

El segundo método se llama cruce, e implica elegir a dos individuos para que
intercambien segmentos de su código, produciendo una “descendencia” artificial cuyos
individuos son combinaciones de sus padres. Este proceso pretende simular el proceso
análogo de la recombinación que se da en los cromosomas durante la reproducción
sexual. Las formas comunes de cruzamiento incluyen al cruzamiento de un punto, en el
que se establece un punto de intercambio en un lugar aleatorio del genoma de los dos
individuos, y uno de los individuos contribuye todo su código anterior a ese punto y el
otro individuo contribuye todo su código a partir de ese punto para producir una
descendencia, y al cruzamiento uniforme, en el que el valor de una posición dada en el
genoma de la descendencia corresponde al valor en esa posición del genoma de uno
de los padres o al valor en esa posición del genoma del otro padre, elegido con un 50%
de probabilidad.

Los operadores genéticos en este caso son operadores con memoria, guardando
en cada iteración los códigos genéticos de los mejores individuos a través de las
generaciones. Los procesos de evolución darviniana generalmente son procesos
miméticos a través de las generaciones.
V. DESPACHO ENERGÉTICO
V.1. Definición
El término "Despacho" se refiere a la planificación del uso de los recursos de una
planta de energía por parte del operador de la planta. "Re despacho" se refiere a un
cambio a corto plazo en la operación de la planta de energía. Esta solicitud llega a
instancias del operador del sistema de transmisión para evitar sobrecargas locales en
la red. Experimentamos un verdadero cambio de paradigma. La mayor penetración de
generación con energías renovables desafía la forma convencional de operar nuestro
sistema eléctrico. Hay que reinventar los modelos de negocio y rediseñar nuestras
redes. La variabilidad de las fuentes renovables como el sol y el viento no
necesariamente ponen en peligro el equilibrio del sistema, siempre que sean
gestionadas adecuadamente.
El despacho de energía tiene como objetivo lograr el perfil de operación más
rentable en una planta de energía. Para dicho fin, se consideran los costos variables de
cada planta (como el costo del combustible en una planta a carbón) junto con los
precios pronosticados en los mercados de energía. Una planta de energía solo es
rentable si sus costos variables son más bajos que los precios de venta de energía que
se puedan lograr en el mercado. Por otro lado, también se genera un horario que
determina la asignación de la capacidad de ajuste disponible para la planta o plantas.
Para generar dicho horario se consideran factores como la ubicación, el tiempo y la
graduación.
Algoritmo genético aplicado al despacho energético

Por lo general, se requiere que los operadores de centrales eléctricas registren su


horario de producción con el operador de la red de transmisión para permitir el
pronóstico de la energía disponible de la red. El despacho también se utiliza en el
campo de las energías renovables. Los operadores de energías renovables fluctuantes,
como la energía solar y eólica, evalúan los pronósticos meteorológicos y la
disponibilidad de la planta para determinar el horario del día siguiente. Los operadores
de energía renovable regulable (plantas de biomasa e hidroeléctricas) crean perfiles de
operación de varios días para sus activos. Esto permite a un operador de planta basar
la asignación de recursos en los precios del mercado eléctrico.
El re despacho se utiliza principalmente en regiones con una alta proporción de
producción de energía renovable, como California o Alemania. Para comprender el re
despacho, considere cómo las centrales eléctricas envían sus horarios de generación a
los operadores del sistema de transmisión, tal y como se describió en el párrafo
anterior. Tan pronto como se hayan recibido los perfiles de producción, los operadores
de la red realizan lo que se conoce como flujo de carga, o cálculo de la carga de la red,
para preparar una descripción general de la generación y el consumo esperados en la
red para el próximo día. En ese punto, también se analiza el despacho de energía para
determinar si alguna parte de la red eléctrica podría verse afectada negativamente y en
qué medida. Para mantener al mínimo el uso de servicios de ajuste del día siguiente, el
operador del sistema de transmisión puede indicar a los operadores de la planta que
posponga la producción de energía programada en función del cálculo del flujo de
carga del día siguiente. De esta manera, se minimizan las situaciones de sobrecargas
locales en red. Así pues, la solicitud para alterar la producción de electricidad es lo que
denominamos re despacho.

V.2. Iniciativa de Tecnología Computacional en Despacho


Pueden ser muchos los determinantes, la reducción de los costos asociados con
el consumo de energía eléctrica y con las inversiones capitales en los equipos
eléctricos utilizados en las instalaciones industriales y de servicios, resulta
imprescindible en la situación actual de la economía de cualquier país. Esta necesidad
se ve potenciada por el impacto medioambiental de las tecnologías energéticas.
Varias son las medidas de mayor oportunidad para el ahorro en sistemas
eléctricos de empresas industriales o de servicios. Una de las más atractivas es el
control de la demanda máxima y del consumo de energía eléctrica.
El control de la demanda máxima y del consumo de energía eléctrica, ya sea por
métodos manuales (muchas veces sin realizar inversiones iniciales importantes) o
automatizados, permite reducir los costos asociados al consumo por medio de:
a) Lograr un menor gasto energético en los horarios donde el valor de la
energía es mayor, la reducción de las pérdidas por transformación.
b) La reducción del pago por demanda máxima si la tarifa considera este
aspecto.
c) Así como la mejora de la operatividad del sistema en general.
d) Un control efectivo posibilita determinar políticas óptimas de inversión en el
sistema eléctrico, de forma de garantizar mayor seguridad y calidad del
suministro.
En Latinoamérica, el sector residencial representa aproximadamente el 50% del
consumo de energía a nivel de país. Es por esto que los horarios de mayor demanda
se registran entre las 17:00 y las 21:00 horas. El sistema de tarifas eléctricas establece
para sus principales clientes, mayores costos de la energía consumida en este período,
considerado como horario pico.
El acomodo de cargas eléctricas constituye un procedimiento manual de control
de demanda que se puede modelar mediante un problema de optimización con espacio
de búsqueda discreto, donde las cargas no determinantes en el proceso productivo o
de servicio son programadas para su funcionamiento en el tiempo, buscando reducir la
demanda en horario pico, así como lograr un gráfico de cargas de potencia activa
horaria con la menor discontinuidad.
Los métodos tradicionales para este tipo de problemas no aseguran una solución
efectiva ya que en la mayoría de los casos se basan en criterios empíricos.

Ilustración V.1 - Perspectiva general de generación y demanda en América Latina.

Sin embargo, este procedimiento puede resultar más efectivo aplicando


Algoritmos Genéticos (AG) a la toma de decisiones sobre en qué momento operar las
cargas no determinantes del proceso, basado en restricciones de funcionamiento de los
receptores si fuese necesario. Por tanto, el objetivo de la investigación fue implementar
un procedimiento de acomodo de cargas con el uso de la técnica de algoritmos
genéticos.
La carga eléctrica caracteriza el consumo de energía eléctrica de receptores
independientes, grupos de receptores e instalación en general. En condiciones de
explotación, puede variar de forma arbitraria en el tiempo, teniendo en cuenta las
exigencias del flujo de producción o servicios (nivel de actividad).
Algoritmo genético aplicado al despacho energético

Los gráficos de carga se pueden confeccionar a receptores individuales o grupos


de receptores, incluso a la instalación en general. En la solución de la mayor parte de
las problemáticas de la explotación de los sistemas eléctricos son indispensables los
gráficos de carga. Su empleo exige de la medición durante al menos un ciclo de
actividad característico.
Un ciclo de actividad característico en una instalación puede definirse en
dependencia del tipo de sector consumidor:
a) Para entidades productivas (industrias) no es más que el tiempo que
transcurre desde la entrada de la materia prima al proceso, hasta la salida de la
producción más tardía, en condiciones normales de operación, es decir, a normal
capacidad productiva y en la época del año y días de la semana donde
tradicionalmente exista mayor demanda y consumo de energía eléctrica. En ocasiones
las entidades productivas constantemente procesan su materia prima en las diferentes
etapas de elaboración de la producción. En este caso, el ciclo puede ser reducido
tomando en consideración este aspecto.
b) Para entidades de servicios (comerciales o terciarias) resulta el tiempo de
duración total de los servicios prestados a normal disponibilidad y en la época del año y
días de la semana donde tradicionalmente exista mayor demanda y consumo de
energía eléctrica. En este caso, casi siempre resulta suficiente la unidad de día laboral
(24 horas) de la entidad.
Actualmente el método más sugerente de obtención de los gráficos de carga
resulta a partir del uso de instrumentos analizadores de redes, que posibilitan
monitorear el comportamiento de las variables que caracterizan el consumo, tanto de
forma permanente (online) como eventual (offline).

V.3. Procedimientos de control de la demanda


El control de la demanda máxima y del consumo de energía eléctrica, consiste en
la administración y el control de las cargas eléctricas para reducir cargos por demanda
máxima de potencia y por consumo de energía, durante ciertos períodos de acuerdo
con la tarifa eléctrica que se aplica.
Los cargos por demanda máxima representan un componente apreciable de la
factura eléctrica. Dependiendo de la tarifa, del factor de carga, del tipo de planta o
instalación, etc., los cargos directos por este concepto pueden representar del 20% al
40% de la factura del servicio eléctrico.
La demanda máxima puede ser controlada manualmente o con ayuda de
dispositivos automáticos. Con ambos existen ventajas y desventajas; y cada uno tiene
diferentes niveles de complejidad y costos asociados. Mientras que todas las plantas
pueden practicar un control de demanda manual, solo las plantas medianas y grandes
pueden encontrar atractiva la instalación de controles automáticos, tanto económica
como operacionalmente.

El control manual de la demanda máxima puede dividirse en:


a) Programación de cargas (acomodo de carga).
b) Monitoreo de la variación de la demanda máxima.
El método de control manual de la demanda máxima más sencillo y a la vez
efectivo (también llamado acomodo de cargas), es hacer un itinerario o programación
de la operación de las diferentes cargas, especialmente las de más peso en la
demanda. En algunos casos, esto puede consistir en prohibir la operación de ciertas
cargas durante un tiempo especificado. En otros casos, la programación puede definir
tiempos de operación para ciertos talleres, departamentos, líneas de producción o
receptores. En muchas plantas es fácil hacer esto, aunque puede involucrar cambios
simples pero permanentes en la costumbre de operación, que ocasionen dificultades.
En la realización de un acomodo de cargas se persiguen los objetivos siguientes:
a) Desplazar el funcionamiento de los receptores del horario pico.
b) Disminuir la máxima demanda eléctrica.
c) Limitar el funcionamiento de los receptores al estrictamente necesario.
d) Detectar y eliminar fuentes de consumo innecesarias.
El acomodo de cargas establece las modificaciones en las normas funcionales de
operación en el proceso de la entidad en estudio, de forma tal que las demandas de
energía originadas durante cada día por los diferentes regímenes de trabajo puedan
llegar a reducirse y/o ser trasladadas fuera de las horas críticas como son los casos del
horario pico y de máxima demanda.
Los procedimientos de acomodo de cargas pueden variar en dependencia de las
particularidades de las empresas que lo apliquen, así como los medios disponibles. No
obstante, los pasos esenciales para el mismo se pueden enumerar:
a) Obtención de los datos esenciales de los receptores eléctricos
(levantamiento de receptores), que comienza con la revisión y enumeración
de todos los consumidores eléctricos que intervienen de alguna forma en
los procesos que se realizan en la entidad. Es necesario en este análisis y
estudio tomar en cuenta todo el proceso y como datos fundamentales la
capacidad de carga conectada, tensión y factor de demanda, así como
factor de potencia, eficiencia de las máquinas, tiempos de operación y
todos aquellos aspectos complementarios fundamentales que se estimen
imprescindibles.
b) Obtención de la demanda compuesta de servicio, que consiste en una
tabla organizativa que posibilita conocer los períodos de funcionamientos
de los receptores durante un ciclo de actividad característico, para
determinar los que influyen en el horario pico y de mayor demanda. La
suma total de la demanda estimada por horarios permite elaborar el gráfico
de carga original.
c) Obtención del gráfico de cargas original mediante instrumentos de
medición, lo que resulta importante para verificar la demanda compuesta
de servicio y ajustar las posibles desviaciones de las magnitudes
estimadas.
d) Identificación los tipos de cargas, que pueden ser:
● Las de base, constituidas por aquellos receptores con actividad
continua o cuya operación aun cuando no sea continua no pueda
ser desplazada de horario sin afectar la calidad de las
producciones o servicios de la empresa.
● Las auxiliares, constituidas por aquellos receptores cuya operación
puede ser desplazada en el tiempo (con o sin restricciones de
horario) sin afectar la calidad de las producciones o servicios de la
empresa. Este conjunto de receptores serán los posibles a
acomodar en el gráfico de carga base. En este caso, se pueden no
considerar aquellos cuya demanda sea despreciable en el análisis
o cuyo funcionamiento en el tiempo no afecte los objetivos del
procedimiento.
e) Realización del acomodo de cargas, que consiste en establecer el itinerario de
funcionamiento de los receptores auxiliares, de forma tal que se obtenga mínimo
Algoritmo genético aplicado al despacho energético

consumo de energía en el horario pico, con mínima demanda máxima y mínima


discontinuidad del gráfico de carga.
f) Elaboración del informe de resultados, que constituye el plan de regulación y
control de la demanda de la entidad, que establece las medidas itinerarias de
funcionamiento de los receptores auxiliares.

V.4. Los algoritmos genéticos en la solución de problemas de


optimización
Los AG son parte de la computación evolutiva. Es un área creciente de la
inteligencia artificial que está basada en la evolución natural biológica y pueden
adaptarse a la resolución de múltiples problemas. Están basados en la teoría de la
evolución de Darwin y son apropiados para resolver problemas donde el dominio de la
solución pueda resultar demasiado extenso y/o discreto.
Surgen como método para la solución de complejos problemas de búsqueda y
optimización, producto del análisis de los sistemas adaptativos en la naturaleza, y como
resultado de abstraer la esencia de su funcionamiento. El término algoritmo genético se
usa por el hecho de que estos simulan los procesos de la evolución darwiniana por
medio del uso de operadores genéticos (selección, mutación, cruzamiento, etc.) que
operan sobre una población de individuos que “evoluciona” de una generación a otra.
Estos algoritmos son un ejemplo de método que explota la búsqueda aleatoria “guiada”
que ha ganado popularidad en los últimos años debido a la posibilidad de aplicarlos en
una gran gama de campos.
En el caso de la ingeniería eléctrica, se han utilizado con éxito en la solución de
problemas como: el balance de fases en circuitos de distribución primaria, el
planeamiento de redes de distribución, la reconfiguración de sistemas de distribución,
así como la compensación de potencia reactiva en los sistemas de distribución primaria
y de forma simultánea al problema de la reconfiguración. La aplicación más común de
los algoritmos genéticos ha sido la solución de problemas de optimización, en donde
han mostrado ser muy eficientes y confiables. No todos los problemas pudieran ser
apropiados para la técnica, y se recomienda en general tomar en cuenta las siguientes
características:
a) Su espacio de búsqueda (sus posibles soluciones) debe estar delimitado
dentro de un cierto rango.
b) Debe poderse definir una función de aptitud que nos indique qué tan
buena o mala es una cierta respuesta.
c) Las soluciones deben codificarse de una forma que resulte relativamente
fácil de implementar en la computadora.
La solución de un problema de optimización, mediante un algoritmo genético
requiere de tres planteamientos básicos iniciales:
a) La codificación genética de las variables de decisión en el espacio de
búsqueda, que se determina por un cromosoma de la cantidad de genes
necesarios para representar la solución. Estos genes son expresados por
códigos de diferente naturaleza, siendo la codificación binaria una de las
más utilizadas por su simplicidad. Esta codificación define el tipo de
población y en la mayoría de los casos está asociado al tipo de problema
de optimización que se pretende resolver.
b) El establecimiento de la función a optimizar o función de adaptación
(fitness), que posibilitará la evaluación de las soluciones generadas en el
espacio de búsqueda.
c) La limitación del espacio de búsqueda, lo que se puede lograr a partir de la
propia codificación de la solución, la incorporación de restricciones
operacionales (si el algoritmo lo permite) y la elaboración de funciones de
penalización, quienes se incorporan a la propia función de adaptación.
El correcto dimensionamiento de estos tres aspectos constituye la clave del éxito
para el futuro desempeño del algoritmo. Otro aspecto importante es la definición de una
serie de parámetros que determinan el funcionamiento del algoritmo, siendo los
principales:
a) El tamaño y algoritmo de creación de las poblaciones.
b) Los operadores genéticos de selección, cruzamiento y mutación.
c) Los operadores de reemplazo de la población.
d) Los criterios de parada o terminación.

VI. METODOLOGÍA
El procedimiento elaborado del Algoritmo Genético para resolver el problema de
despacho de carga en un sistema de potencia considerando la capacidad de transporte
de los elementos de la red se muestra en la Figura V. 1.
Los pasos a seguir para resolver el problema son los siguientes:
a) Primeramente, tomamos los datos del sistema, como ser: número de nodos,
números de conexiones, los límites de generación de los generadores, los
datos de las líneas de transmisión, etc. Ya que estos servirán para modelar el
sistema.
b) Se determina qué tipo de codificación se utilizará para cada individuo, su
tamaño y limitaciones. Se utilizará codificación decimal debido a su facilidad,
aunque representa menor diversidad al generar individuos en comparación
con la decimal. El tamaño de nuestro individuo será de 14 alelos que
representan cada grupo de generadores y se tendrá en cuenta la capacidad
máxima de generación de dicho grupo al momento de generar los individuos,
además de que la suma total de cada alelo del individuo se igual a la demanda
de dada en ese momento.
Algoritmo genético aplicado al despacho energético

Ilustración VI.1– Ejemplo de población generada bajo una demanda de 1900MW.

c) Se crea una población con determinado número de individuos, tomando todas


las restricciones mencionadas anteriormente.
Ilustración VI.2–Diagrama de flujo del algoritmo genético a implementar.

d) Luego de haber generado nuestra población seguimos a evaluar los costos de


generación para cada individuo, debido a que nuestra función objetivo son los
costos y trataremos de minimizarlos, teniendo en cuenta las limitaciones
siguientes:
Ng
W t =Min ∑ Ci∗Pg it
i=1
[VI.1]
[ Pg ] + [ S ]∗[ f ] =[d ]
[VI.2]
Algoritmo genético aplicado al despacho energético

Pgimin ≤ Pgi ≤≤ Pgimax


[VI.3]
|fc|≤ fcmax
[VI.4]
Donde:
C i es el costo por US$/MWh del generador
Pgit es la potencia generada i en un tiempo t
[ Pg ] y [ d ] son los vectores de generadores y demanda asociados al nodo n
[ S ] y [ f ] son las matrices de incidencia y de flujos de carga en las conexiones
Pgimin es la potencia minina que puede generar dicha unidad
Pgimax es la potencia máxima que puede generar dicha unidad
Pgi es la potencia generada de dicha unidad
fc es el flujo de potencia en la línea
fcmax es el flujo de potencia máximo en la línea

e) Luego de evaluar nuestros costos realizamos un flujo de potencia DC para


evaluar que tan sobrecargadas están las líneas y considerar esto también para
determinar nuestro individuo adaptado. Para realizar el flujo se tomó en cuenta
lo siguiente:

● Que los voltajes en los nodos son igual a 1pu.


● La resistencia de las líneas es mucho más pequeña que su reactancia,
así no tendremos que considerar las perdidas.
● Que los ángulos en las barras son muy pequeños y así se podrá
calcular directamente el ángulo entre líneas, sin necesidad de usar la
función seno.

Considerando esto concluimos en lo siguiente:

[VI.5]
O sea:
[ P ] =[ B ][ θ ]
[VI.6]
Donde:

[ P ] es el vector de potencias activas en las barras


[ B ] es la matriz de suceptancias del sistema
[ θ ] es el vector de ángulos de las tensiones en las barras
De esta manera obtenemos los flujos entre líneas para ver considerar la potencia
que fluye a través de ellas y asegurarnos de no superar sus límites.

f) Ya teniendo el costo y flujos de potencia de cada individuo en nuestra


generación, procedemos a elegir los mejores evaluándolos en nuestra función
de adaptación. Donde a y b son constantes para obtener mejores resultados
de la ecuación de adaptación, dichos valores fueron seleccionados a lo largo
del desarrollo del algoritmo. OLn es el porcentaje de violación de la capacidad
máxima al 90% de la línea. La selección es sencilla, se tomará a los n mejores
individuos de la población. En este caso se tomarán a los que evaluados en la
función de adaptación den el resultado mayor.

10,000,000
Fadapn=
a∗w n+ b∗OL n
[VI.7]

g) Ahora usaremos el operador cruce, donde tomaremos a nuestros mejores


individuos. Tenemos un rango de cruce que decidirá si el individuo se cruza o
se copia directamente a la siguiente generación. La población que se generara
se tomara dos individuos, que llamaremos padres, al azar de los mejores que
fueron seleccionados. Luego se generará una posición al azar dentro del
individuo donde se hará el cruce de los padres para generar un nuevo
individuo llamado hijo.

Ilustración VI.3–Operador cruce.

h) Luego usaremos el operador mutación, en el cual establecemos un rango de


mutación entre 0 y 1. Después para cada individuo se genera un numero al
azar entre 0 y 1, este es menor que nuestro rango de mutación se tomara una
posición dentro del individuo y se modificara, de igual manera al azar, siempre
considerando el mínimo y máximo de generación de dicho grupo de individuos.
Algoritmo genético aplicado al despacho energético

Ilustración VI.4–Operador mutación aplicado a un individuo.

i) Luego de usar los operadores anteriores es obvio que la suma de cada alelo
de los individuos será mayor o menor a la demanda de dicho momento. Es por
ello que se establecen otras operaciones para corregir este problema y lograr
que llegar a una solución. Si el total es menor se empieza a sumar desde el
generador más barato hasta el más caro hasta llegar al valor esperado. En
caso de que el total sea mayor se comenzara a restar desde el más caro hasta
el más barato hasta que se alcance el valor esperado.
j) Por último, se evalúa si alcanzo el valor esperado y se repite por n
generaciones hasta culminar el algoritmo.

Todo esto se realizará en el lenguaje de programación de Python, el código


creado se encuentra en los anexos. A continuación, se describen las librerías usadas:
a) Numpy: es una biblioteca de Python que se utiliza para trabajar con matrices.
También tiene funciones para trabajar en el dominio del algebra lineal,
transformada de Fourier y matrices.
b) Random: es un módulo incorporado para generar números aleatorios.
c) Pandas: es una biblioteca usada para la manipulación y el análisis de datos.
En particular, ofrece estructuras de datos y operaciones para manipular tablas
numéricas y series de tiempo.
VII. CASO DE ESTUDIO
El Algoritmo Genético (AG) propuesto en la presente publicación se aplica para
resolver el problema de despacho de carga en la red IEEE-RTS (Sistema de prueba de
confiabilidad IEEE) de 24 nodos, 33 conexiones (entre líneas y transformadores) y 32
unidades de generación convencional, entre las cuales se cuenta con generadores a
carbón, gas natural, diésel y en base a tecnología nuclear.

La Tabla VII.1 de abajo muestra las características técnicas de las unidades


generadoras consideradas, tales como el número de unidades, nodo al cual están
conectadas, capacidad máxima y mínima, tipo de combustible que emplean y costos de
operación.

La Tabla VII.2 muestra las características técnicas de las líneas y transformadores


de potencia de la red como los nodos que conectan entre sí, valor de reactancias y la
capacidad de transporte.

El periodo analizado es de 24 horas. La demanda máxima del día que se


considera es de 2,856 MW. Las Tablas VII.3 y VII.4 muestran el porcentaje de esta
demanda en cada hora del día y su participación en cada nodo o barra de la red. La
Curva de Carga diaria que se consigue con estos valores se muestra en la Figura VII.2.
Algoritmo genético aplicado al despacho energético

Ilustración VII.1 Sistema eléctrico IEEE-RTS de 24 nodos.


Tabla VII.1 Datos técnicos de los generadores

Tabla VII.2 Datos técnicos de las conexiones eléctricas


Algoritmo genético aplicado al despacho energético

Tabla VII.3 Porcentaje de demanda máxima en los nodos del sistema.

Tabla VII.4 Porcentaje de demanda máxima en cada hora del día.


Ilustración VII.2 Curva de carga diaria del sistema.
Algoritmo genético aplicado al despacho energético

VIII. RESULTADOS
La elaboración y simulación del Algoritmo Genético (AG) para resolver el
problema de despacho de carga en la red IEEE-RTS de 24 barras, considerando
restricciones de transmisión de la red se realizó en el lenguaje de programación
Python.

En lo que se respecta a la potencia generada por las unidades generadoras, los


resultados alcanzados se muestran en la Tabla VIII.1 que se muestra. Como podemos
observar todos los generadores se encuentran entre su rango máximo y mínimo de
generación, de igual manera la generación de potencia de cada hora satisface
totalmente la demanda de electricidad de ese instante. De la misma forma, el despacho
es realizado de manera coherente, despachando a plena capacidad las unidades de
generación con tecnologías más baratas como la nuclear y carbón en este caso y
despachando en horas de demanda alta las unidades más caras del sistema. Se puede
observar que hay unidades con pequeñas cantidades para generar, esto se podría
resolver con más individuos por generación o más iteraciones, lo cual implicaría más
poder computacional. También se podría buscar mejoras en el algoritmo.
Además, podemos también observar que la capacidad de transmisión de las
líneas no excede el 100% en ninguno de los casos. Lo cual es un punto muy importante
a considerar en el sistema.
La Ilustración VIII.1 muestra el valor de los costos de operación del sistema
eléctrico para cada hora del día que analizamos. Es posible advertir que el máximo
costo se da durante la hora de la máxima demanda y se calcula que el costo total de la
operación del sistema durante el día en estudio alcanza un valor de U$ 795,388.28,
que resulta ser el costo mínimo y óptimo de operación alcanzado bajo el análisis
realizado.
En cuanto a los valore para la función de adaptación se encontró que los valores
que funcionaron fueron a = 1 y b = 100. De esta manera obtuvimos que los individuos
mejor adaptados son los que tenían un bajo costo y flujo de potencia entre conexiones
que superara las capacidades de transmisión.
Tabla VIII.1 Despacho por unidad generadora

Ilustración VIII. 1 Despacho de carga por tecnología de generación


NUCLEAR CARBON GAS NATURAL DIESEL
3000.00

2500.00
Potencia Generada en MW

2000.00

1500.00

1000.00

500.00

0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Tiempo (Hrs)
Algoritmo genético aplicado al despacho energético

Ilustración VIII.2 Flujo de potencia en cada conexión del sistema


100.00

90.00

80.00

70.00

60.00

50.00
%

40.00

30.00

20.00

10.00

0.00
0 5 10 15 20 25 30 35

Numero de conexion

Ilustración VIII.3 Costos de operación del sistema


50000

45000

40000

35000

30000
Costos (US$)

25000

20000

15000

10000

5000

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Tiempo (Hrs)
IX. CONCLUSIONES Y RECOMENDACIONES
El método de Algoritmos Genéticos (AGs) se adapta de buena manera a la
resolución de un problema de despacho económico de carga, considerando las
restricciones de transmisión de la red eléctrica ya que permite la determinación de la
potencia generada por las unidades generadoras para satisfacer la demanda diaria de
electricidad del sistema al mínimo costo.

Este método presenta ventaja de ser robusto a la hora de operar de forma


simultánea con varios individuos que representan soluciones al problema, tomando
información genética de varios puntos del espacio de búsqueda como guía. Asimismo,
el método no se ve muy afectado a la hora de caer atrapado en un óptimo local,
pudiendo re-encaminar la búsqueda hacia un óptimo global a medida que la evolución
de los individuos mejor adaptados transcurre.
Algoritmo genético aplicado al despacho energético

Una de las mayores desventajas es el prolongado tiempo computacional que se


empleó para la simulación de los resultados, el cual aumenta cuanto mejores
resultados esperemos tener. Esto puede ser mejorado eligiendo un método de
selección más elitista y complementando la metodología de métodos heurísticos de
búsqueda. También se podría mejorar este tiempo usando conocimientos y técnicas de
programación más avanzados a los aplicados en el algoritmo, y obviamente tener un
equipo con mayor velocidad de procesamiento mejoraría los tiempos de resolución del
problema.

También debemos mencionar que cuando el número de generadores a ser


despachados aumenta, el tiempo de ejecución del algoritmo dinámico también se torna
muy grande. Finalmente, como vemos que los algoritmos genéticos son una buena
alternativa para solucionar problemas de optimización con conocimientos básicos de
programación orientada a objetos.
IX. ANEXOS
A continuación, se presenta el código del algoritmo desarrollado en lenguaje
Python:

import numpy as np
import random
import pandas as pd

# Ingresar datos
g1 = (1, 5, "DIESEL", 15, 0, 12, 27.6)
g2 = (2, 2, "DIESEL", 1, 0, 20, 43.5)
g3 = (3, 2, "DIESEL", 2, 0, 20, 43.5)
g4 = (4, 2, "CARBON", 1, 0, 76, 14.4)
g5 = (5, 2, "CARBON", 2, 0, 76, 14.4)
g6 = (6, 6, "GAS NATURAL", 7, 0, 100, 23)
g7 = (7, 1, "CARBON", 7, 0, 155, 11.6)
g8 = (8, 1, "CARBON", 15, 0, 155, 11.7)
g9 = (9, 1, "CARBON", 16, 0, 155, 11.7)
g10 = (10, 1, "CARBON", 23, 0, 155, 11.7)
g11 = (11, 6, "GAS NATURAL", 22, 0, 197, 22.1)
g12 = (12, 1, "CARBON", 23, 0, 350, 11.4)
g13 = (13, 1, "NUCLEAR", 21, 0, 400, 6)
g14 = (14, 1, "NUCLEAR", 18, 0, 400, 6)

dtype = [('No', int), ('#G', int), ('Tipo', str), ('Barra', int), ('Pmin',
float), ('Pmax', float), ("Costo", float)]

l1 = [1, 2, 0.014, 193]


l2 = [1, 3, 0.211, 208]
l3 = [1, 5, 0.085, 208]
l4 = [2, 4, 0.127, 208]
l5 = [2, 6, 0.192, 208]
l6 = [3, 9, 0.119, 208]
l7 = [3, 24, 0.084, 510]
l8 = [4, 9, 0.104, 208]
l9 = [5, 10, 0.088, 208]
l10 = [6, 10, 0.061, 193]
Algoritmo genético aplicado al despacho energético

l11 = [7, 8, 0.061, 208]


l12 = [8, 9, 0.165, 208]
l13 = [8, 10, 0.165, 208]
l14 = [9, 11, 0.084, 510]
l15 = [9, 12, 0.084, 510]
l16 = [10, 11, 0.084, 510]
l17 = [10, 12, 0.084, 510]
l18 = [11, 13, 0.048, 600]
l19 = [11, 14, 0.042, 600]
l20 = [12, 13, 0.048, 600]
l21 = [12, 23, 0.097, 600]
l22 = [13, 23, 0.087, 600]
l23 = [14, 16, 0.039, 600]
l24 = [15, 16, 0.017, 600]
l25 = [15, 21, 0.025, 600]
l26 = [15, 24, 0.052, 600]
l27 = [16, 17, 0.026, 600]
l28 = [16, 19, 0.023, 600]
l29 = [17, 22, 0.105, 600]
l30 = [18, 21, 0.013, 600]
l31 = [19, 20, 0.020, 600]
l32 = [20, 23, 0.011, 600]
l33 = [21, 22, 0.068, 600]

b1 = [1, 0.038]
b2 = [2, 0.034]
b3 = [3, 0.063]
b4 = [4, 0.026]
b5 = [5, 0.025]
b6 = [6, 0.048]
b7 = [7, 0.044]
b8 = [8, 0.06]
b9 = [9, 0.061]
b10 = [10, 0.068]
b11 = [11, 0]
b12 = [12, 0]
b13 = [13, 0.093]
b14 = [14, 0.068]
b15 = [15, 0.111]
b16 = [16, 0.035]
b17 = [17, 0]
b18 = [18, 0.117]
b19 = [19, 0.064]
b20 = [20, 0.045]
b21 = [21, 0]
b22 = [22, 0]
b23 = [23, 0]
b24 = [24, 0]

B = [b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16,
b17, b18, b19, b20, b21, b22, b23, b24]

#Crear arreglos
L = [l1, l2, l3, l4, l5, l11, l7, l8, l9, l10, l6, l12, l13, l14, l15, l16,
l17, l18, l19, l20, l21, l22, l23, l24, l25,
l26, l27, l28, l29, l30, l31, l32, l33]

G = [g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14]
G = np.array(G, dtype=dtype)
L = pd.DataFrame(L)

Página: 43
class DNA():
def __init__(self, mutation_rate, n_individuals, n_selection,
n_generations, reproduction_rate, data=0, p=0, dataL = 0, dataB = 0):
self.mutation_rate = mutation_rate
self.n_individuals = n_individuals
self.n_selection = n_selection
self.n_generations = n_generations
self.reproduction_rate = reproduction_rate
self.data = data
self.length = len(data)
self.p = p
self.dataL = dataL
self.dataB = dataB

# Crear listas
def create_list(self, l):
lst = []
for i in range(l):
lst.insert(i, 0)
return lst

# Crear individuos con restricciones


def create_individual(self):
wc = True
individual = self.create_list(self.length)
ps = 0
while wc:
pos = int(random.uniform(0, len(individual)))
if ps < self.p:
min = int(self.data[pos][4])
max = int(self.data[pos][5]) * int(self.data[pos][1])
individual[pos] = random.uniform(min, max)
ps += individual[pos]
elif ps > self.p:
individual = self.corindmenor(individual)
wc = False

return individual

def popfDC(self, individual):


lv = self.fDC(individual)
for i in lv:
if i > 100:
individual = self.create_individual()

return individual

# Crear poblacion
def create_population(self):
population = [self.create_individual() for i in
range(self.n_individuals)]
population = [self.popfDC(i) for i in population]

return population

# Crear arreglo de costos


def costm(self):
cm = []
for i in range(self.length):
c = float(self.data[i][-1])
Algoritmo genético aplicado al despacho energético

cm.insert(i, c)
return cm

# Obtener costo total


def costT(self, ar):
costT = 0
for i in ar:
costT += i
return costT

# Obtener costo individual y total


def co(self, individual):
cost = self.costm()
co = self.create_list(len(individual))

for i in range(len(cost)):
co[i] = cost[i] * individual[i]
cot = self.costT(co)
return cot

#Obtener cuantos generadores no se usan


def genind(self, individual):
c = 0
for i in individual:
if i == 0:
c += 1

return c

# Obtener valor de castigo por exceder el limite de transmision


def overl(self, individual):
c = 0
ol = self.fDC(individual)

for i in range(len(ol)):

if ol[i] > 100:


c += ol[i] - 100
return c

# Seleccionar el mejor adaptado


def selection(self, population):
scores = [(10000000/((self.co(i))+(100*self.overl(i))), i) for i in
population]
scores = [i for i in sorted(scores)]
selected = [i[1] for i in scores]
selected = selected[len(population)-self.n_selection:]

return selected

# Cruce
def reproduction(self, population, selected):
for i in range(len(population)):
if random.random() <= self.mutation_rate:
point = np.random.randint(1, len(population[0]) - 1)
father = random.sample(selected, 2)
population[i][:point] = father[0][:point]
population[i][point:] = father[1][point:]

Página: 45
return population

# Corregir si es menor
def corindmenor(self, individual):
c = 0
for i in individual:
c += i

if c < self.p:
m = self.p - c
v = True
while v:
pos = int(random.uniform(0, len(individual)))
max = int(self.data[pos][5]) * int(self.data[pos][1])
if m > 0:
d = max - individual[pos]
if d < m:
m -= max-individual[pos]
individual[pos] = max
elif d > m:
individual[pos] = individual[pos] + m
v = False

return individual

# Corregir si es mayor
def corindmayor(self, individual):
c = 0
for i in individual:
c += i

if c > self.p:
m = c - self.p
v = True
while v:
pos = int(random.uniform(0, len(individual)))
if m > 0:
if individual[pos] < m:
m -= individual[pos]
individual[pos] = 0
elif individual[pos] > m:
individual[pos] -= m
v = False
return individual

# Corregir poblacion ya mutada y cruzada


def corpop(self, population):
population = [self.corindmenor(i) for i in population]
population = [self.corindmayor(i) for i in population]
population = [self.popfDC(i) for i in population]
return population

# Mutar poblacion
def mutation(self, population):
for i in range(len(population)):
if random.random() <= self.mutation_rate:
point = random.randint(0, len(population[0])-1)
min = int(self.data[point][4])
max = int(self.data[point][5]) * int(self.data[point][1])
new_value = random.uniform(min, max)
Algoritmo genético aplicado al despacho energético

while new_value == population[i][point]:


new_value = random.uniform(min, max)
population[i][point] = new_value
return population

# Eliminar individuos que no se lograron corregir y crear uno nuevo en su


lugar
def deletei(self, individual):
c = 0
de = 0
for i in individual:
c += i

if c > self.p:
individual = self.create_individual()
elif c < self.p:
individual = self.create_individual()

for i in range(len(individual)):
max = int(self.data[i][5]) * int(self.data[i][1])
if individual[i] > max:
de += 1

if de > 0:
individual = self.create_individual()

return individual

def deletep(self, population):


c = 0
population = [self.deletei(i) for i in population]
return population

def run_gen_alg(self):
population = self.create_population()
for i in range(self.n_generations):
selected = self.selection(population)
population = self.reproduction(population, selected)
population = self.mutation(population)
population = self.corpop(population)
population = self.deletep(population)
a = self.fDC(selected[-1])
c = 0
for j in a:
if j >= 100:
c += 1

if c == 0:
print('Generacion: ', i)
print('Mejor: ', selected[-1])
print('Costo: ', self.co(selected[-1]))
print('Flujo: ', self.fDC(selected[-1]))

# Crear matriz de admitancias


def matsupInv(self):
B = max(max(self.dataL[0]), max(self.dataL[1]))
Bbus = np.zeros([B, B])
for i in range(len(self.dataL)):

Página: 47
k = int(self.dataL.loc[i][0] - 1)
m = int(self.dataL.loc[i][1] - 1)
Zkm = self.dataL.loc[i][2]
Bbus[k][m] = -1 / Zkm
Bbus[m][k] = -1 / Zkm

for i in range(len(Bbus)):
c = 0
for j in range(len(Bbus)):
c += Bbus[i][j]
Bbus[i][i] = -c

Bbus = np.round(Bbus, 2)
BbusInv = np.linalg.inv(Bbus)

return BbusInv

# Crear matriz de potencias


def matpot(self, individual):
temp = individual[:]
mp = np.zeros(24)
for i in range(len(temp)):
barra = self.data[i][3] - 1
mp[barra] += temp[i]

for i in range(len(self.dataB)):
mp[i] -= self.dataB[i][1] * self.p

mp = mp/self.p

return mp

# Obtener los angulos


def teta(self, individual):
teta = self.matsupInv() @ self.matpot(individual)
return teta

#Obtener los flujos de potencia


def fDC(self, individual):
c = 0
teta = self.teta(individual)
temp = self.create_list(len(self.dataL))
for i in range(len(self.dataL)):
k = int(self.dataL.loc[i][0] - 1)
m = int(self.dataL.loc[i][1] - 1)
temp[i] = ((teta[k] - teta[m]) / (self.dataL.loc[i][2])) * self.p
temp[i] = abs(temp[i]*100) / (self.dataL.loc[i][3])

return temp

D = [1913.5, 1799.3, 1713.6, 1685.0, 1685.0, 1713.6, 2113.4, 2456.2, 2713.2,


2741.8, 2741.8, 2713.2, 2713.2, 2713.2, 2656.1, 2684.6, 2827.4, 2856.0,
2856.0, 2741.8, 2599.0, 2370.5, 2084.9, 1799.3]

i = 2684.6

model = DNA(0.5, 15, 5, 300, 0.5, G, i, L, B)


model.run_gen_alg()
print('FIN')
Algoritmo genético aplicado al despacho energético

X. REFERENCIAS

[1] Betancourt Uscátegui, Á. (2001). Algoritmos Genéticos en el Despacho de


Energía Eléctrica.
[2] Coello, C. A. C., & Zacatenco, C. S. P. (2004). Introducción a la computación
evolutiva. México.
[3] “Control de demanda eléctrica aplicando algoritmos genéticos”; Davel Borges
Vasconcellos, Pedro Puch González, Geovanny Frías González; 8 de septiembre de
2016.
[4] E. Gil Ságas. “Programación de la generación de corto plazo en sistemas
hidrotérmicos usando algoritmos genéticos”. Departamento de Electricidad. Chile. 2001.
[5] E.M. Carreño. “Efficient codifications solve distribution network reconfiguration
for loss reduction problem”. IEEE Transactions on Power System. Vol. 32 Nº 4, pp.
1542-1551. 2008. ISSN: 0885-8950.
[6] J. Font Fernández, D. Gamo, J. Ríos Carrión. “Redes de neuronas artificiales y
computación evolutiva”. Fundación de la UPM. España. 2009.
[7] L.R. Cabote. “Metodología para el rediseño de sistemas de suministro
eléctrico, a partir de un uso más racional de la energía”. Tesis para optar al grado de
magíster. Universidad de Camagüey. Cuba. 2011
[8] Marcos; Rivero Gestal (Daniel; Rabuñal, Juan Ramón; Dorado, Julián; Pazos,
Alejandro), & Gestal, M. (2010). Introducción a los algoritmos genéticos y la
programación genética. Universidade da Coruña.
[9] Mateos, A. (2004). Algoritmos evolutivos y algoritmos genéticos. Inteligencia
en Redes de Comunicaciones, Ingeniería de Telecomunicación. Universidad Carlos III
de Madrid.
[10] Melián, M. B., Moreno, J. A., & Moreno, J. M. (2009). algoritmos genéticos.
Una visión práctica. Números. Revista de Didáctica de las Matemáticas, 71, 29-47.

Página: 49
[11] P. Viego, M. de Armas, I. Pérez, A. Padrón y L. Casas. “Temas Especiales de
Sistemas Eléctricos Industriales”. Material no editado. Centro de Estudios de Energía y
Medio Ambiente, pp. 133. Universidad de Cienfuegos. Cuba. 2006.
[12] Ruiz, A. G., Galvis, J. C., & Carmona, O. G. (2006). Algoritmo evolutivo
diferencial aplicado al problema de despacho hidrotérmico. Scientia et technica, 12(32),
187-192.
[13] San Martin, L. S. Aplicación de Algoritmos Genéticos en el Despacho de
Carga considerando Restricciones en la Red de Transporte.
[14] Sloss, A. N., & Gustafson, S. (2020). 2019 Evolutionary Algorithms Review.
Genetic Programming Theory and Practice XVII, 307-344.
[15] Valencia, P. E. (1997, August). Optimización mediante algoritmos genéticos.
In Anales del Instituto de Ingenieros de Chile (Vol. 109, No. 2, pp. 83-92).
Algoritmo genético aplicado al despacho energético

Página: 51

También podría gustarte