implementación en digsilent de algortimos geneticos
DESCRIPTION
Paper 2: Implementación en DIgSILENT PowerFactory de Algoritmos Genéticos para la Solución de Flujo de Potencia A. Ataupillco M., J. L. Cabrera C. Student IEEE, N. H. López Student IEEE, S. E. Trujillo A. ,Student IEEETRANSCRIPT
![Page 1: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/1.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 1 de 6
Resumen—El presente trabajo consta de la implementación de
algoritmos genéticos aplicados a la solución de flujo de potencia,
en DIgSILENT PowerFactory. Esta implementación se hizo mediante el módulo de Lenguaje
de Programación de DIgSILENT (DIgSILENT Program
Language). Para tal objetivo se utilizó la base de datos que
proporciona dicho programa, y su posterior uso en el desarrollo
de las ecuaciones de flujo de potencia relacionadas a los
algoritmos genéticos, ejecutándolo en el sistema de 9 barras del
IEEE.
De esta manera, se puede hallar el flujo de potencia con
algoritmos genéticos en cualquier sistema diseñado en esta
plataforma y con los mismos elementos presentes en el sistema de
9 barras IEEE.
Índices—Algoritmos genéticos (Genetic Algorithms),
DIgSILENT, Flujo de potencia (Load Flow), Análisis
Computacional de Sistemas de Potencia (Power Systems Analisys
Computing).
I. NOMENCLATURA
AG – Algoritmos Genéticos.
SEP – Sistema Eléctrico de Potencia.
DPL – Lenguaje de Programación de DIgSILENT
(DigSilent Program Language).
P.U. – Por Unidad (Per Unit).
II. INTRODUCCIÓN
STE trabajo desarrolla la implementación de los AG para
la solución de flujo de potencia en DPL.
La Referencia [1], nos muestra este método alternativo
de solución a flujos de potencia y además nos da las bases
necesarias para la implementación de dicho algoritmo. Este
trabajo propone adaptar los AG a la plataforma DPL,
mejorando su aplicación a un sistema que contenga los
elementos presentes en el sistema 9 barras IEEE.
Se agradece el apoyo de la Facultad de Ingeniería Eléctrica y Electrónica por
brindarnos el uso del programa DIgSILENT, con serial number
14.0:40192855 para la versión 14.0 build 511.Así también agradecemos el
apoyo económico del Power & Energy Society de la REIEE – UNI.
A. Ataupillco Maldonado , Lima ,Perú ([email protected])
J. L. Cabrera Chirre , Lima, Perú ([email protected])
N. Haro Lopez, Lima, Perú ([email protected])
S. E. Trujillo Arana, Lima, Perú ([email protected])
III. DESARROLLO
A. Antecedentes
Los AG representan un método de solución de búsqueda y
optimización que simula los procesos que intervienen en la evolución biológica de las especies; mediante el cual se
pueden resolver determinados problemas, tal es el caso de la
solución de flujo de potencia de un SEP.
La Referencia [2] nos muestra un ejemplo de codificación
de AG en MATLAB, del cual nos valemos para la elección de
determinados comandos presentes en el DPL.
Para la descripción de un SEP, DIgSILENT nos provee de
información detallada de cada elemento, en su entorno gráfico.
B. Tópicos de programación en DPL
Para poder llevar a cabo la elaboración de un código de
programación en DPL, se debe tener conocimientos básicos
de dicha plataforma, por lo que este trabajo de investigación
se basó en la ayuda (help) que brinda el propio programa
[3].
1) Declaración de variables
La plataforma de programación DPL, tiene la característica de declarar previamente cada una de las variables a utilizar. Es
por tal motivo que es necesario precisar los diferentes tipos de
variables que usaremos en este trabajo.
a) Variable set
Este tipo de variable define a aquellas que representará un
listado de objetos, por ejemplo, todas las barras del sistema.
b) Variable object
Define a cada uno de los elementos listados en la variable
set, por ejemplo, la barra 1 y sus características.
c) Variable string
Define a las variables que almacenan cadenas de caracteres.
d) Variable double
Se utiliza para definir variables numéricas que contengan
una determinada cantidad de decimales.
e) Variable int
Se utiliza para definir variables que almacenen números
enteros.
Implementación en DIgSILENT PowerFactory
de Algoritmos Genéticos para la Solución de
Flujo de Potencia A. Ataupillco M., J. L. Cabrera C. Student IEEE, N. H. López Student IEEE, S. E. Trujillo A. ,Student IEEE
E
![Page 2: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/2.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 2 de 6
2) Extensiones de elementos del sistema
a) ElmTerm
Corresponde al objeto barra del SEP.
b) ElmTr2
Corresponde al objeto transformador de dos devanados del
SEP.
c) ElmSym
Corresponde al objeto máquina síncrona que se encuentra
en el SEP.
d) ElmLne
Corresponde al objeto línea de transmisión del SEP.
e) ElmLod
Corresponde al objeto carga ubicado en el SEP.
3) Métodos para la obtención de datos
a) Métodos para variables tipo set:
El método AllRelevant(), devuelve el conjunto de
objetos como barras, líneas, transformadores,
generadores o cargas, para posteriormente poder
almacenar dicho conjunto en una variable tipo set.
SortToName(0) es el método que ordena los objetos
dentro de un set según su nombre.
Count() es el método que retorna el número de
objetos.
First() es el método que retorna el primer objeto.
Next() es el método que retorna el siguiente objeto.
b) Métodos para las variables tipo object
GetNode() es el método que retorna los nodos conectados al objeto.
objeto:loc_name es el método que retorna el nombre
del objeto.
objeto:vtarget es el método que retorna el valor del
voltaje nominal.
objeto:plini es el método que retorna el valor de la
potencia activa de la carga.
objeto:qlini es el método que retorna el valor de la
potencia reactiva de la carga.
objeto:pgini es el método que retorna el valor de la
potencia activa generada.
objeto:qgini es el método que retorna el valor de la
potencia reactiva generada.
objeto:bustp es el método que retorna el voltaje en
P.U. en los bornes del generador.
objeto:dline es el método que retorna la longitud de
la línea.
objeto:R1 es el método que retorna la resistencia por
kilómetro de la línea.
objeto:X1 es el método que retorna la reactancia por kilómetro de la línea.
objeto:uline es el método que retorna el voltaje
nominal de la línea.
objeto:bline es el método que retorna la susceptancia
por kilómetro de la línea.
objeto:strn es el método que retorna la potencia
nominal del transformador.
objeto:uktr es el método que retorna la reactancia del
transformador.
C. Administración de datos
1) Creación de una matriz en DPL
En DPL, administrar datos en matrices es una gran ventaja.
Las matrices que se deseen usar en un Comando DPL (DPL
Comand) deben crearse dentro del mismo, esto es posible entrando en el Contenido (Contents) del Comando DPL y
creando un objeto de la forma *.IntMat como se muestra en la
Fig. 1.
Fig. 1. Ventana de creación de una matriz en DPL.
2) Métodos para matrices en DPL
En DPL, el manejo de las matrices es muy diferente al uso
general.
a) Método Init
Mediante este método se le asigna las dimensiones que
tendrá la matriz, así también asignándole valores igual a cero
para todos sus elementos.
Los valores que requiere este método son las dimensiones
de la matriz, que supongamos, son Ncol y Nfil para columnas
y filas respectivamente.
![Page 3: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/3.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 3 de 6
Entonces el modo de usar este método para una matriz M es
M.Init(Nfil,Ncol).
b) Método Set
Mediante este método se puede asignar un valor de tipo
double o int a un elemento de la matriz en DPL. La forma de
asignar un valor v al elemento de la primera columna y la
primera fila de la matriz M es M.Set(1,1,v), a manera de
ejemplo.
c) Método Get
Este método tiene como objetivo asignar a una variable,
previamente declarada, el valor correspondiente a un elemento
de una matriz. Usando el ejemplo anterior, su uso adecuado es
v = M.Get(1,1).
D. Impresión de datos
Para mostrar los resultados de un Comando DPL a un
usuario, se debe tener conocimiento básico de la función
printf, para la cual debe tenerse las siguientes consideraciones.
Sea d una variable del tipo double con un valor asignado,
así también, s una de tipo string con una cadena de caracteres asignada. La manera de imprimir estos valores es
printf(‘%s %f ’,s,d), donde los símbolos de porcentaje y la
letra que le sigue, indican las variables declaradas en la
función en su orden respectivo.
E. Datos previos
Los datos principales de los elementos que conforman el SEP a analizar, necesarios para la ejecución de los AG,
pueden ser obtenidos directamente del entorno gráfico del
DIgSILENT. Para administrar dichos datos se optó por el uso
de matrices, cuyo tratamiento se explica en la sección III-C.
1) Datos de la barra
En nuestro análisis se usará una matriz denominada pbarra,
en la cual cada fila representará a una barra del sistema, y cada
columna será una característica referida a cada barra. Estas
son: número de la barra, indicador del tipo de barra, voltaje
nominal en P.U., potencia activa generada, potencia reactiva generada, potencia activa de carga, potencia reactiva de carga,
en ese orden; cabe mencionar que los valores de dichas
potencias se llevaron a sus valores en P.U.
2) Datos de las conexiones
En nuestro análisis, las conexiones se entenderán por líneas
de transmisión y transformadores. Las características de estas
conexiones se implementarán en una matriz denominada
mconex, donde los datos almacenados en cada columna
corresponden al valor de resistencia, reactancia y susceptancia
para determinada conexión, indicada en cada fila. Estos valores de transformaron a P.U., así mismo la matriz mconex
presenta los números de las barras a las cuales enlaza cada
conexión.
3) Matriz de admitancia
La red de un SEP puede ser representada por medio de su
matriz de admitancia como se muestra en la Referencia [4].
Para su implementación en DPL, la forma más favorable es
descomponer a cada elemento de esta matriz en su módulo y
ángulo, dando origen a dos matrices que se encuentran
presentes en nuestro análisis: Ymag y Yang, respectivamente.
F. Implementación del AG en DPL
A continuación se muestra el método usado para la
implementación de AG en DPL, indicando cada función
dentro de este.
Fig. 2. Codificación en DPL de la función aptitud.
1) Generación de población
La Referencia [5] nos muestra que una característica
importante de la población inicial es su número, sin embargo,
se vio adecuado aumentar la cantidad de individuos de esta,
para que se obtenga una mayor variedad de posibles
soluciones en la misma; dicha cantidad corresponde al valor de 350, aunque puede ser mayor o menor, según la cantidad de
barras presentes en el sistema. Por otra parte, con la finalidad
de mejorar la eficiencia, es importante respetar las
especificaciones técnicas [6].
![Page 4: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/4.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 4 de 6
2) Función Aptitud
La Referencia [7] nos muestra el algoritmo para
implementar esta función que consiste en medir cuan cerca de la solución se encuentra cada individuo.
Para ello se usó los métodos mencionados en la sección
III-B, con la diferencia que la administración de datos se
realizó mediante matrices. La Fig. 2. ilustra el código de DPL
usado en esta función.
3) Función Selección
La Referencia [8] muestra el algoritmo de esta función, sin
embargo, en este trabajo, no se usó la función probabilidad
debido a que no es necesario para reconocer al individuo de
mayor aptitud.
Basados en esto, dicha función se obtiene comparando las
aptitudes de estos.
4) Función Cruce
La Referencia [9] nos muestra una forma de cruce distinta a
la propuesta en este trabajo, pues en este se usa 7 hijos y 50
cruces. Además los genotipos de voltaje y ángulo de las barras
se cruzan de manera independiente uno del otro. Estos
cambios tienen un efecto positivo en la reducción del número
de generaciones necesarias para obtener la respuesta al
problema. En la Fig. 3. se puede apreciar parte del código de
DPL correspondiente al cruce de voltajes, así también en la
Fig. 4. para los ángulos.
Fig. 3. Código de DPL para el cruce para voltajes.
5) Función Mutación
La Referencia [10] nos muestra las características que debe
tener esta función en los AG en los SEP. La forma que se usó
para modificar los genes, para cada individuo de la población,
se muestra en la Fig. 5.
Sea Vincial el voltaje sin mutar y Vmut el voltaje mutado, la
formula que se usa es Vmut=(Vinicial+1)/2 . Así también sea
rand un numero generado con la función Random(), inicial
el ángulo inicial de cada barra y mut, el mutado. Entonces
la forma de mutación que se usó para los ángulos de las barras
es mut = ( inicial +pi()*(0.5-rand))/2.
Fig. 4. Código de DPL para el cruce para ángulos.
6) Función ajuste
La Referencia [11] nos muestra el procedimiento para la
implementación de esta función. Sin embargo, se debe tener
en cuenta las consideraciones de programación en DPL, tales
como el tratamiento de los elementos de las matrices, mencionados en la sección III-C. Así mismo para realizar las
operaciones del algoritmo en DPL, es necesario acomodar las
expresiones en su forma polar, para luego separarlo en su parte
real e imaginaria y trabajar con estos números.
Finalmente, teniendo los resultados de ambas partes, se
unen estas para formar un número complejo del cual su
módulo y argumento representaran a los valores de voltaje y
ángulo de barra respectivamente. El argumento se determinó
mediante la función atan(), tomando en cuenta las
consideraciones de reducción al primer cuadrante para obtener
el valor apropiado del ángulo; esto debido a que la función atan() sólo nos da valores presentes en el primer y cuarto
cuadrante, cuando no necesariamente se encuentren en estos.
7) Función aptitud hijos
Así como se explicó en el apartado III-F-2, se deberá medir
cuan cerca de la solución se encuentra cada uno de los nuevos
individuos. Su implementación en DPL es muy similar.
8) Función conmutar:
La Referencia [12] nos muestra el objetivo e
implementación de esta función, además de su influencia en la
obtención del resultado. Para este trabajo se eligió sustituir a los padres con menor
aptitud por los hijos con mayor aptitud, manteniendo la
cantidad de población constante. En la Fig. 6. se muestra el
código de DPL usado para poder realizar esta función.
9) Función optimizador
Mediante esta función se busca al individuo que presente la
tolerancia menor o igual a la tolerancia especificada por el
usuario.
![Page 5: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/5.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 5 de 6
Fig. 5. Diagrama de flujo de la Función Mutación.
Fig. 7. Ejemplo de implementación de AG en DPL
Fig. 6. Código en DPL de la función conmutar.
SI
¿Es una barra PV?
Salida
NO
NO
SI
GENOTIPOS DEL HIJO
k>0.999
¿Es una
barra PQ?
Mutar V
Mutar
Mutar
SI
NO
![Page 6: Implementación en DigSILENT de Algortimos Geneticos](https://reader036.vdocuments.site/reader036/viewer/2022071712/568c386e1a28ab02359ee486/html5/thumbnails/6.jpg)
“XVIII International Congress of Electronic, Electrical and Systems Engineering”
Id: ABC-000 Página 6 de 6
G. Aplicación en otro SEP
La Referencia [13] nos muestra los resultados del flujo de
potencia usando los AG en un sistema diferente al Sistema 9
Barras IEEE. Este mismo SEP se construyó en DIgSILENT
para comprobar la validez de este trabajo, obteniéndose los
mismos resultados mostrados en la Fig. 7.
Se concluye de tal forma que esta implementación es capaz
de ser aplicada en diversos problemas de SEP.
IV. AGRADECIMIENTOS
Se agradece el apoyo brindado por la REIEEE – UNI por
sus instalaciones para el desarrollo de la investigación. Así
también a L. M. Espinoza. R. en conceptos básicos de AG y
DPL.
V. REFERENCIAS
El presente artículo se basa en criterios y definiciones
previas, se mencionarán a continuación.
[1] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007.
[2] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 83-92.
[3] DIgSILENT GmbH, “PowerFactory Manual”, 2010.
[4] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 223-257
[5] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 29.
[6] Ministerio de energía y minas, Dirección general de electricidad,
“Código nacional de electricidad - Suministro”, 2001, p. 10.
[7] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 48-50.
[8] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 50-51.
[9] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 51-53.
[10] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 35-36.
[11] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, pp. 54-55.
[12] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 56.
[13] J. F. Castro. G., “Algoritmos genéticos como solución al problema de
flujo de potencia,” Tesis de graduación, Escuela de ing. mecánica
eléctrica, Univ. De San Carlos de Guatemala, 2007, p. 62-72.
VI. BIOGRAFÍAS
Angeles Ataupillco Maldonado,
nació en Ayacucho, Perú, el 2 de
marzo de 1991.Estudio primaria y
secundaria en el centro educativo
Santa María. Representó a su país en
la XII Olimpiada Iberoamericana de
Física-Argentina 2007, para lo cual
recibió capacitaciones en la Facultad
de Ciencias de la UNMSM.
Actualmente es estudiante de pregrado
de la FIEE-UNI en la especialidad de
Ingeniería Eléctrica, y aporta en el área de investigación de la
REIEEE-UNI en el capítulo de Power & Energy
Society.([email protected] ).
Jorge Luis Cabrera Chirre (S’ 10),
nació en Lima, Perú, el 23 de marzo
de 1990. Se graduó en el colegio
Pitágoras. Es estudiante de pregrado
de ingeniería eléctrica en la FIEE-
UNI.
Actualmente es miembro del capítulo Power & Energy Society y desempeña
el cargo de Secretary Student Branch
para el periodo 2011-2012 de la
REIEEE – UNI. Aporta al área de
investigación del Power & Energy
Society.([email protected]).
Neymer Haro López (S’ 11), nació
en Pataz, La libertad, Peru el 8 de
noviembre de 1989. se graduo en el
colegio Jose Maria Arguedas del
mismo lugar. Estudiante de pregrado de ingeniería eléctrica en la FIEE –
UNI.
Actualmente es miembro del capítulo
Power & Energy Society y aporta en
el área de investigación de este
capítulo en la REIEEE – UNI.
Sergio Efraín Trujillo Arana (S’ 11),
nació en Huánuco, Perú, el 15 de abril
de 1990 se graduó en el colegio Manuel Gonzales Villamil. Es
estudiante de pregrado de ingeniería
eléctrica en la FIEE – UNI.
Actualmente es miembro del capítulo
Power & Energy Society y aporta en el
área de investigación de este
capítulo en la REIEEE –
UNI.([email protected]).