el uso del python como herramienta para …geulate.okicode.com/pythonoe.pdf · el software...

14
22 Colegio de Ingenieros Electricistas y Electrónicos El USO DEL PYTHON COMO HERRAMIENTA PARA EL ANÁLISIS EN LA INDUSTRIA ELÉCTRICA. Gonzalo Oscar Eulate Choque – Alejandro Gianluca Eulate Mollo Abstract. This paper presents a review of the use of Python for different types of analysis in the electrical industry, the use of Python in geographic information systems among others. We can cite the implementation of script in the software DIgSILENT POWER FACTORY, implementation of script in the CYMDIST software, and also a review of the use of Python as a real alternative in numerical analysis, thanks to its libraries called Numpy / Matplotlib for numerical operations, Cython for code optimizations low, IPython to work interactively, etc. Keywords – Script, Digsilent, Cymdist, ArcGis, GIS, Matlab, Python. RESUMEN. El presente trabajo presenta una revisión del uso del Python para diferentes tipos de análisis en la industria eléctrica, el uso de Python en los sistemas de información geográfica entre otros. Podemos citar la implementación de script en el software DIgSILENT POWER FACTORY, implementación de script en el software CYMDIST, así también una revisión del uso del Python como una alternativa real en el análisis numérico, gracias a sus librerías llamadas Numpy / Matplotlib para operaciones numéricas, Cython para optimizaciones de código a bajo nivel, IPython para trabajar de forma interactiva, etc. INTRODUCCIÓN. Los sistemas eléctricos en constante crecimiento requieren el análisis exhaustivo de la operación para el conocimiento de las diferentes variables eléctricas, que en muchos casos son de manera informática y repetitiva que demandan tiempo y recursos que por lo general son escasos. La automatización de los diferentes análisis de los sistemas eléctricos, proporcionan los elementos necesarios para la toma de decisiones para la operación optima de los sistemas, información en tiempo real, información de los distintos parámetros eléctricos entre otros. En la actualidad existen herramientas como el DIgSILENT POWER FACTORY que se utiliza para el análisis de los sistemas eléctricos de potencia, el CYME que se utiliza para el análisis de los sistemas eléctricos de distribución, el ArcGis para los sistemas de información geográfica, etc., de amplio uso en el caso de Bolivia. Las herramientas mencionadas tienen en común que se pueden automatizar mediante el uso del software Python, se pueden acceder a la modificación de los parámetros mediante programación en Python. El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos de potencia, caracterizando técnicas confiables y flexibles de modelado y algoritmos. El programa utiliza un ambiente de trabajo muy similar al que utiliza Windows. El software DIgSILENT dispone de un modulo para programación DPL (Digsilent Program Language), asimismo dispone el trabajo en script en Python, que puede ser usado para tareas de automatización que presenta además el acceso a todos los objetos, a los atributos de los elementos, acceso a todos los comandos (por ejemplo load flow) [9].

Upload: duongdiep

Post on 24-Sep-2018

246 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

22Colegio de Ingenieros Electricistas y Electrónicos

El USO DEL PYTHON COMO HERRAMIENTA PARA EL ANÁLISIS

EN LA INDUSTRIA ELÉCTRICA.Gonzalo Oscar Eulate Choque – Alejandro Gianluca Eulate Mollo

Abstract.

This paper presents a review of the use of Python for different types of analysis in the electrical industry, the use of Python in geographic information systems among others. We can cite the implementation of script in the software DIgSILENT POWER FACTORY, implementation of script in the CYMDIST software, and also a review of the use of Python as a real alternative in numerical analysis, thanks to its libraries called Numpy / Matplotlib for numerical operations, Cython for code optimizations low, IPython to work interactively, etc.

Keywords – Script, Digsilent, Cymdist, ArcGis, GIS, Matlab, Python.

RESUMEN.

El presente trabajo presenta una revisión del uso del Python para diferentes tipos de análisis en la industria eléctrica, el uso de Python en los sistemas de información geográfica entre otros. Podemos citar la implementación de script en el software DIgSILENT POWER FACTORY, implementación de script en el software CYMDIST, así también una revisión del uso del Python como una alternativa real en el análisis numérico, gracias a sus librerías llamadas Numpy / Matplotlib para operaciones numéricas, Cython para optimizaciones de código a bajo nivel, IPython para trabajar de forma interactiva, etc.

INTRODUCCIÓN.

Los sistemas eléctricos en constante crecimiento requieren el análisis exhaustivo de la operación para el conocimiento de las diferentes variables eléctricas, que en muchos casos son de manera informática y repetitiva que demandan tiempo y recursos que por lo general son escasos. La automatización de los diferentes análisis de los sistemas eléctricos, proporcionan los elementos necesarios para la toma de decisiones para la operación optima de los sistemas, información en tiempo real, información de los distintos parámetros eléctricos entre otros.

En la actualidad existen herramientas como el DIgSILENT POWER FACTORY que se utiliza para el análisis de los sistemas eléctricos de potencia, el CYME que se utiliza para el análisis de los sistemas eléctricos de distribución, el ArcGis para los sistemas de información geográfica, etc., de amplio uso en el caso de Bolivia. Las herramientas mencionadas tienen en común que se pueden automatizar mediante el uso del software Python, se pueden acceder a la modificación de los parámetros mediante programación en Python.

El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos de potencia, caracterizando técnicas confiables y flexibles de modelado y algoritmos.El programa utiliza un ambiente de trabajo muy similar al que utiliza Windows.

El software DIgSILENT dispone de un modulo para programación DPL (Digsilent Program Language), asimismo dispone el trabajo en script en Python, que puede ser usado para tareas de automatización que presenta además el acceso a todos los objetos, a los atributos de los elementos, acceso a todos los comandos (por ejemplo load flow) [9].

Page 2: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

23Colegio de Ingenieros Electricistas y Electrónicos

El software CYME es un conjunto de programas para el análisis de redes eléctricas, entre los que podemos mencionar el estimador de estado de redes de distribución, protección de distancia, análisis de redes secundarias malladas, etc.

Para la automatización en el análisis de las redes eléctricas, CYME ha incorporado el scripting de Python, El lenguaje de programación de secuencias de comandos Python viene con un “Site Package”. Con el scripting de Python, el usuario puede realizar fácilmente análisis por lotes, automatizar estudios de rutina, crear nuevos algoritmos y recuperar rápidamente informaciones con un simple clic sobre un script [9].

El software ArcGis comprende una serie de aplicaciones, que utilizadas en conjunto, permiten realizar funciones que alimentan y administran un sistema de información geográfica (SIG), desde creación de mapas, manejo y análisis de información, edición de datos, metadatos y publicación de mapas en internet. Tiene diferentes módulos (aplicaciones) como el ArcGis Desktop, ArcCatalog, ArcToolbox, ArcMAP. Trabaja con el Shape File que es el archivo principal que se utiliza en el ArcGis, el mismo que está formado por varias extensiones.

MATLAB es un software de cálculo técnico de altas prestaciones para cálculo numérico y visualización que integra análisis numérico, calculo matricial, procesamiento de señales, gráficos y entorno de programación en script m.

Tiene un entorno fácil de usar, donde los problemas y las soluciones son expresados como se escriben matemáticamente. El nombre MATLAB proviene de ``Matrix Laboratory’’ (Laboratorio de Matrices). MATLAB fue escrito originalmente para proporcionar un acceso sencillo al software matricial desarrollado por los proyectos LINPACK y EISPACK, que juntos representan lo más avanzado en programas de cálculo matricial. MATLAB es un sistema interactivo cuyo elemento básico de datos es una matriz que no requiere dimensionamiento.

MATLAB también proporciona una serie de soluciones específicas denominadas TOOLBOXES, para el procesamiento de señales, diseño de sistemas de control, simulación de sistemas dinámicos, inteligencia artificial, etc.

SOFTWARE PYTHON.

El software Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.

Python puede ser utilizado en diversas plataformas y sistemas operativos, entre los que podemos destacar los más populares, cómo Windows, Mac OS X y Linux. Pero, además, Python también puede funcionar en smartphones, Nokia desarrolló un intérprete de esté lenguaje para su sistema operativo Symbian.

Python es open source, todos los usuarios del Python pueden contribuir a su desarrollo y divulgación. Además, no es necesario pagar ninguna licencia para distribuir el software desarrollado con esté lenguaje.

Fue creado por Guido van Rossum y su nombre se debe a la afición de su creador a los humoristas británicos Monty Python.Se trata de un lenguaje de programación en scripts, competencia directa de Perl.

Python permite dividir el programa en módulos reutilizables desde otros programas Python.

Page 3: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

24Colegio de Ingenieros Electricistas y Electrónicos

También viene con una gran colección de módulos estándar que proporcionan E/S de ficheros, llamadas al sistema, sockets, interfaces GUI, etc.

Características generales de Python

Lenguaje de programación de alto nivel del tipo scripting.Diseñado para ser fácil de leer y simple de implementar.Es código abierto (de libre uso).Puede ejecutarse en Mac, Windows y sistemas Unix; también ha sido portado a máquinas virtual JAVA y .NET.Es a menudo usado para desarrollar aplicaciones web y contenido web dinámico.Se utiliza para crear extensiones tipo plug-ins para programas de 2d y 3d como Autodesk Maya, GIMP, Blender, Inkscape, etc.

Los scripts de Python tienen la extensión de archivo .PY, que pueden ser parseados y ejecutados inmediatamente.

Permite grabar programas compilados con extensión de archivo .PYC, los cuales suelen ser usados como módulo que pueden ser referenciados por otros programas Python.

Python nació de la mano de Guido van Rossum, un programador de origen holandés que desarrolló este lenguaje de programación a finales de los años 80 para el Centro para las Matemáticas y la Informática de los Países Bajos que buscaba un lenguaje de programación para ser utilizado bajo el sistema operativo Amoeba de Andrew S. Tanenbaum que fuese capaz de sustituir al lenguaje ABC. ¿Y qué es Python? Un lenguaje de programación de alto nivel que fue diseñado con una sintaxis muy limpia que permitiese obtener códigos que fuesen fáciles de leer, es multiplataforma y soporta orientación a objetos, programación imperativa e, incluso, programación funcional.

Con un nombre que era un guiño al grupo de humoristas Monty Python, Van Rossum asumió el papel del BDFL de Python y siguió a la cabeza de los desarrollos de este lenguaje. En 1991, Van Rossum publicó la versión 0.9.0 del lenguaje en el que aparecían clases con herencia o excepciones, en 1994 se formó el primer foro de discusión alrededor de este lenguaje además de lanzarse, en el mes de enero, la versión 1.0 del lenguaje (que incluía herramientas para programación funcional). En 1995, Van Rossum dejó el Centro para las Matemáticas y la Informática de los Países Bajos y se marchó a Estados Unidos a continuar el desarrollo de Python en la Corporation for National Research Initiatives hasta que en el año 2000, Van Rossum y su equipo de desarrolladores se marcharon a BeOpen.com donde lanzaron Python 2.0 (que incluía un recolector de basura) hasta marcharse, de nuevo, a Digital Creations (ambos movimientos motivados por la idea de trabajar en software comercial).

Python está presente en muchas de las aplicaciones y servicios que utilizamos de manera habitual, por ejemplo, el cliente oficial de Dropbox está desarrollado en Python, el Software Center de Ubuntu, el gestor de ebooks Calibre (que está escrito en Python y en C), el servicio de streaming Flumotion, el gestor de listas de correo Mailman o, incluso, YouTube también lo utiliza.

Se presenta a continuación las características del Python extractado de la referencia [13].Posee una sintaxis sencilla: rápido aprendizaje.Tratamiento de excepciones con nombre.Extensible a otros sistemas software.Flexible en el tratamiento del lenguaje, un módulo que interactuará con un sistema externo puede ser probado con una “imitación” del sistema escrito en Python.Es un lenguaje dinámicamente interpretado.Es orientado a objetos:

Page 4: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

25Colegio de Ingenieros Electricistas y Electrónicos

• Herencia múltiple.• Ligadura dinámica.• Polimorfismo.Su núcleo es también orientado a objetos: jerarquía de clases.Portable: está implementado en C estándar usando E/S Posix.Gratuito, y de libre distribución.Las desventajas del Python las extractamos de la referencia [13].

Podemos suponer que la mayoría de los programas escritos hoy en día podrían pasarse a Python, pero él sólo no sería suficiente para la cantidad de aplicaciones que están orientadas a componentes compilados.Por ejemplo, no está indicado para las siguientes aplicaciones:2 Algoritmos de compresión de datos:Estos algoritmos traducen un flujo de datos a una forma más pequeña.Esto implica examinar cada byte, y hacer un tratamiento estadístico. Para grandes cantidades de datos los compresores escritos en Python resultan demasiado lentos.2 Controladores de dispositivos:Al igual que antes, una aplicación que realice millones de operaciones en punto flotante no uniformes será demasiado lenta en Python. 2 Operaciones críticas de bases de datos.2 Operaciones altamente especializadas.

IMPLEMENTACIÓN DE SCRIPT.

A continuación se describe la implementación de script en el Digsilent, Cymdist, ArcGis y análisis numérico en el Python.

IMPLEMENTACIÓN DE SCRIPT EN DIGSILENT.

A partir de la versión 15.1.6, se tiene la opción del uso de script para la automatización en el análisis de los sistemas eléctricos de potencia.

Para empezar el uso de script de Python, se requiere la instalación del Python versión 3.2.2 que se encuentra en el subdirectorio PYTHON al interior del directorio donde se instaló el Digsilent.

Figura Nº 1: Entorno de trabajo para crear Script.

Fuente: Referencia [9] – elaboración propia.En la figura Nº 1, se presenta el entorno donde se debe ingresar para invocar a los script en el Digsilent.

Page 5: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

26Colegio de Ingenieros Electricistas y Electrónicos

Figura Nº 2: Selección en Digsilent para trabajar con script del Python.

Fuente: Referencia [9] – elaboración propia.

Figura Nº 3: Entorno de trabajo para script del Python.

Fuente: Referencia [9] – elaboración propia.

En la figura Nº 2 se muestra la selección para invocar archivos programados en el script de Python.En la figura Nº 3 se muestra el entorno de trabajo para la selección del script programado en Python.

Para el trabajo de forma interactiva con el Excel, se requiere la instalación de la librería winpy32 que debe ser compatible con la versión del Python.

A continuación se presenta el script como ejemplo de aplicación.

# se invoca al módulo PowerFactoryimport powerfactory# se invoca a la aplicación PowerFactory app = powerfactory.GetApplication()#se invoca al comando ComLdf para flujos de cargaldf = app.GetFromStudyCase(“ComLdf”)#se realiza el cálculo de flujos de cargaldf.Execute()

En el anterior script, considerando un proyecto activo en el Digsilent, se realiza el cálculo de flujos de carga.

En el siguiente ejemplo se realiza el trabajo de forma interactiva con el Excel.

Page 6: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

27Colegio de Ingenieros Electricistas y Electrónicos

# Programa de flujos de carga en forma interactiva con el Excelimport powerfactoryapp=powerfactory.GetApplication()# se invoca al win32 para interactuar con el Excelfrom win32com import clientexcel=client.Dispatch(“Excel.Application”)excel.visible=Truewb = excel.Workbooks.open(“c:\python33\Redes.xlsx”)ws=wb.Worksheets[0]lineas = app.GetCalcRelevantObjects(“*.ElmLne”)demandas = app.GetCalcRelevantObjects(“*.ElmLod”)ldf = app.GetFromStudyCase(“ComLdf”)ldf.Execute()ws.Cells(1,1).Value=”Line Name”ws.Cells(1,2).Value=”loading [%]”ws.Cells(1,6).Value=”Nombre Carga”ws.Cells(1,7).Value=”MW”ws.Cells(1,8).Value=”MVAr”j,t=1,1for linea in lineas: if linea.outserv == 0: linea_c = round(linea.GetAttribute(‘c:loading’),2) ws.Cells(j+1,1).Value=str(linea.loc_name) ws.Cells(j+1,2).Value=linea_c j=j+1for demanda in demandas: if demanda.outserv == 0: ws.Cells(t+1,6).Value=str(demanda.loc_name) ws.Cells(t+1,7).Value=str(demanda.plini) ws.Cells(t+1,8).Value=str(demanda.qlini) t=t+1wb.Close(True)

En el anterior script se invoca a la librería win32 para la interacción con el Excel, se abre el archivo Redes.xlsx para trabajo interactivo con el Digsilent.Con la siguiente instrucción se accede al objeto líneas del Digsilent:lineas = app.GetCalcRelevantObjects(“*.ElmLne”)Con la siguiente instrucción se graban datos en el Excel:ws.Cells(1,1).Value=”Line Name”Para acceder a los atributos del objeto línea en forma secuencial, se considera la siguiente instrucción:for linea in lineas:

La siguiente instrucción se utiliza para verificar las líneas que se encuentran en servicio:if linea.outserv == 0:Para acceder al valor del atributo del estado de carga de la línea, se utiliza la siguiente instrucción:linea_c = round(linea.GetAttribute(‘c:loading’),2)Con la siguiente instrucción se accede al valor del atributo de la potencia del objeto demanda y se almacena en el Excel (en este caso se está obteniendo el valor de la potencia activa de la carga):ws.Cells(t+1,7).Value=str(demanda.plini)Con la siguiente instrucción se cierra el archivo abierto del Excel y se guardan los cambios realizados.wb.Close(True).

Page 7: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

28Colegio de Ingenieros Electricistas y Electrónicos

Para acceder a los diferentes objetos del Digsilent como transformadores, buses, generadores, etc., se puede realizar la consulta en el Digsilent y conocer los atributos y su forma de invocar a las diferentes variables.

IMPLEMENTACIÓN DE SCRIPT EN CYMDIST.

El software Cymdist es utilizado en el análisis de las redes de distribución.En el Cymdist se ha desarrollado el módulo Package, han desarrollado su librería CymPy para el trabajo de Python para los diferentes análisis en el entorno del Cymdist.El Python permite las siguientes tareas:

• Automatizar estudios de rutina, en el análisis de flujos de carga en diferentes escenarios.• Implementar nuevos algoritmos, por ejemplo ubicación de banco de condensadores, en

CYME se puede crear su propio algoritmo en script y ejecutar dentro de CYME.• Manipular los equipos y dispositivos, se puede crear una red de distribución con el script de

Python, manejo de la base de datos, o cualquier elemento de la red solo con un script.• Módulo de Python, a diferencia del COM es una aplicación externa, Python está directamente

integrado en la interfaz de Python, tiene acceso a las herramientas del Cymdist.• Módulo de Python continuará con el desarrollo de script para los procesos de optimización,

el trabajo está enfocado al desarrollo en Python para temas de optimización en Cymdist. Así también puede crear sus propias palabras claves, para personalizar los datos de las variables resultantes de los diferentes análisis en Cymdsit.

IMPLEMENTACIÓN DE SCRIPT PARA EL ANÁLISIS NUMÉRICO.

Una alternativa para el análisis numérico, el uso de matrices en forma intensiva, el uso de gráficos, el uso de números complejos, etc., es el software Python que presenta funcionalidades similares al Matlab. Para el trabajo con matrices y cálculos numéricos, se requiere la instalación de la librería numpy que se dispone de manera gratuita y libre en el internet, para mayor referencia consultar la referencia [11] de la bibliografía del presente documento.

Como ejemplo de aplicación se considera el siguiente sistema de 3 generadores conectados a una sola barra, con una demanda de 120 MW.

Tabla Nº 1: Datos de las funciones de costos de los generadores.

Fuente: Elaboración propia.

Se considera que la función de costo de los generadores es de la forma: 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 𝑎𝑎 + 𝑏𝑏 × 𝑃𝑃𝑃𝑃 + 𝑐𝑐 × 𝑃𝑃𝑃𝑃2

Se presenta a continuación parte del programa desarrollado en el script de Python, para el despacho económico de 3 unidades de generación [1] y [7].# Script para el despacho económico en Python# se invoca a la librería numpyimport numpy as np# se asigna el tamaño de la población y generacionesNpob, Ngen, Pd = 600, 100, 120# se genera de forma aleatoria una matriz de orden Npob x 4 pob = np.random.rand(Npob,4)# se genera una matrizde unos de orden Npob x 1aux = np.ones((Npob,1))

Pg a us$

b 𝑢𝑢𝐶𝐶$𝑀𝑀𝑀𝑀ℎ

c 𝑢𝑢𝐶𝐶$

𝑀𝑀𝑀𝑀ℎ2

𝑃𝑃𝑃𝑃𝑚𝑚𝑚𝑚𝑚𝑚 MW

𝑃𝑃𝑃𝑃𝑚𝑚𝑎𝑎𝑚𝑚 MW

1 40 4,50 0,015 30 50 2 50 3,50 0,015 30 50 3 40 3,30 0,02 30 50

Page 8: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

29Colegio de Ingenieros Electricistas y Electrónicos

penaliza = np.zeros((Npob,1))# se genera los vectores inf y sup de orden Npob x1inf = 30*auxsup = 50*aux# genera poblacion inicialpob = inf+(sup-inf)*pob# se asignan los valores de la constante “a” de las funciones de costo de los tres generadores que se presentan en la tabla Nº 1a = np.array([[40,50,45]])b = np.array([[4.50,3.50,3.3]])c = np.array([[0.015,0.010,0.02]])pg = pob[:,0:3]pg[:,2] = Pd-pg[:,0]-pg[:,1]# se calcula el costo de los tres generadores y de la cantidad# de Npob individuos.costo = a + b*pg + c*pg**2pob[:,3] = costo[:,1]+costo[:,0]+costo[:,2]+penaliza[:,0]# se ordena la matriz pob de menor a mayorpob = pob[pob[:,3].argsort(),]

En el anterior script, se puede apreciar que las operaciones matriciales son similares a las utilizadas en el Matlab.Para la generación de números aleatorios entre 0 y se utiliza la siguiente instrucción:pob = np.random.rand(Npob,4)Para almacenar los valores de la potencia generada 3, como la diferencia de la demanda menos las potencias generadas 1 y 2, se utiliza la siguiente instrucción:pg[:,2] = Pd-pg[:,0]-pg[:,1]Se hace notar que se esta trabajando con matrices de Npob filas (en el ejemplo es 600).Para el cálculo del costo de los tres generadores del ejemplo, se utiliza la siguiente instrucción:costo = a + b*pg + c*pg**2Para ordenar la matriz pob respecto a la columna 4, se utiliza la siguiente instrucción:pob = pob[pob[:,3].argsort(),]Los resultados obtenidos del ejemplo son los siguientes:𝑃𝑃𝑃𝑃1 = 30 MW, 𝑃𝑃𝑃𝑃2 = 48,15 MW, 𝑃𝑃𝑃𝑃3 = 41,12 MW.

Para mayor referencia del uso de algoritmos genéticos para el despacho económico, consultar la referencia [7] de la bibliografía del presente documento.

Los paquetes Numpy y Scipy pueden convertirlo, con poco trabajo, en un sustituto completo a programas prohibitivamente caros pero de uso común en este ámbito como otros que son utilizados para el cálculo numérico y en particular en el área de la ingeniería.

Hay que destacar que las librerías mencionadas son de uso gratuito y pueden ser obtenidas fácilmente en el internet.

Así también si se dispone de programas basados en Python, que puede conectarlo a una secuencia de comandos de MATLAB, existe la opción del uso del conversor de código abierto de MATLAB-a-Python, que se puede probar en línea.

Se puede seguir los siguientes pasos:1 Ir a ompclib.appspot.com/m2py~~V, 2 Haga clic en “Examinar” y vaya al archivo de secuencia de comandos de MATLAB en su disco duro. 3 Haga clic en “Abrir” y luego “Convertir”. 4 Lea la secuencia de comandos Python resultante y corregir los errores.

Page 9: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

30Colegio de Ingenieros Electricistas y Electrónicos

Matplotlib es el módulo de dibujo de gráficas 2D y 3D aunque no es el único existente. Matplotlib tiene multitud de librerías de las cuales, por semejanza a Matlab, utilizaremos pyplot. Recomendamos que puedan visitar la dirección http://matplotlib.sourceforge.net/ donde se puede encontrar multitud de programas y ejemplos de cómo hacer dibujos con Matplotlib. La documentación oficial se encuentra en http://matplotlib.sourceforge.net/contents.html.A continuación se presenta el script simplificado que se dispone en la referencia [11].from __future__ import divisionimport numpy as np import matplotlib.pyplot as plt periodo = 0.5x = np.linspace(0, 2, 1000)y = np.sin(2*np.pi*x/periodo)plt.figure()plt.plot(x, y, ‘k--’, linewidth = 2, label = ‘y1’)plt.hold(True)plt.plot(x,-y,’r’, linewidth = 2, label = ‘y2’)plt.legend(loc = 2)plt.xlabel(r”$x (\mu m)$”, fontsize = 24, color = (1,0,0))plt.ylabel(r”$y (\mu m)$”, fontsize = 24, color = ‘blue’)plt.text(x = 1, y = 0.0, s = u’T = 0.05’, fontsize = 24)plt.grid(True)plt.grid(color = ‘0.5’, linestyle = ‘--’, linewidth = 1)plt.axis(‘tight’)plt.title(‘(a)’,fontsize = 28, color = ‘0.75’, verticalalignment = ‘baseline’, horizontalalignment = ‘center’)plt.savefig(‘plotCompleta.png’)plt.show()Se presenta a continuación la gráfica en matplolib.

Figura Nº 4: Grafica del script en Python.

Fuente: Referencia [11] – elaboración propia.

IMPLEMENTACIÓN DE SCRIPT EN ARCGIS.

ArcGIS es un sistema que permite recopilar, organizar, administrar, analizar, compartir y distribuir información geográfica. Como la plataforma reconocida a nivel global para crear y utilizar sistemas de información geográfica (SIG), ArcGIS es utilizada para poner el conocimiento geográfico al servicio de los sectores del gobierno, la empresa, la ciencia, la educación y los medios. ArcGIS permite publicar la información geográfica para que esté accesible para usuarios que utilicen y

Page 10: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

31Colegio de Ingenieros Electricistas y Electrónicos

tengan conocimiento del SIG. El sistema está disponible en lugares a través de navegadores Web, dispositivos móviles como smartphones y equipos de escritorio. El sistema ArcGIS hace posible que información geográfica autorizada creada por la comunidad SIG pueda ser aprovechada fácilmente y de forma gratuita. Este sistema incluye software, una infraestructura on-line basada en la nube, herramientas profesionales, recursos configurables como plantillas de aplicación, mapas base listos para utilizar y contenido propio compartido por la comunidad de usuarios. La compatibilidad con las plataformas de servidor y de la nube posibilitan la colaboración y el uso compartido, lo que garantiza que la información vital para la planificación y la toma de decisiones está disponible de inmediato para los usuarios.

Una de las ventajas que tiene ArcGis es que utiliza un paquete relacionado con Python denominado “ArcPy”. ArcPy es un paquete de sitio que se basa en el exitoso módulo arcgis scripting. Su objetivo es crear la piedra angular para una manera útil y productiva de realizar análisis de datos geográficos, conversión de datos, administración de datos y automatización de mapas con Python. Este paquete proporciona una rica experiencia en Python nativa, que ofrece finalización de código así como documentación de referencia para cada función, módulo y clase.

La ventaja adicional de utilizar ArcPy dentro de Python es que Python es un lenguaje de programación del propósito general. Es un lenguaje interpretado con asignación dinámica de tipos, adecuado para el trabajo interactivo y la creación rápida de prototipos en programas únicos conocidos como secuencias de comandos, además de ofrecer potencia suficiente como permitir la escritura de aplicaciones grandes. Las aplicaciones ArcGIS escritas con ArcPy se benefician del desarrollo de módulos adicionales en numerosos nichos de Python por parte de profesionales del SIG y programadores de muchas disciplinas diferentes.

A continuación se demostrara una aplicación sencilla para la extracción de un archivo en formato shape dentro de otro utilizando “ArcPy” como modulo script.

Figura Nº 5: Departamento de La Paz

Fuente: Elaboración propia

En la figura 5 se observa el Departamento de La Paz, Bolivia en formato shape y un punto de referencia sobre un municipio, por lo cual haremos la extracción del municipio que se encuentra debajo del punto de referencia.

Page 11: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

32Colegio de Ingenieros Electricistas y Electrónicos

Figura Nº 6: Identificación de un Municipio del Departamento de La Paz

Fuente: Elaboración propia

Para esto seleccionamos en municipio como se ve en la figura 6 y procedemos a la introducción del código.

Figura Nº 7: Código en Python

Fuente: Elaboración propia

En la figura 7 se utilizó el siguiente código arcpy.Clip_analysis(in_features=”LPZGeoDa”, clip_features=”LPZGeoDa”, out_feature_class=”D:/ESCRITORIO/ArcPy/Extract.shp”, cluster_tolerance=””) para que a través de la ventana de Python que se encuentra en el ArcGis se extraiga el municipio seleccionado con el nombre de “Extract1” para diferenciar. Así obtenemos una extracción de un archivo en formato shape utilizando el paquete de ArcPy como herramienta principal en lugar de usar el paquete “ToolBox” que mayormente es utilizado por usuarios del ArcGis.

CONCLUSIONES.

De acuerdo a los ejemplos de script para la interacción con el Digsilent, se concluye que es posible acceder a los objetos como líneas y demandas, para modificar, así también se verifico

Page 12: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

33Colegio de Ingenieros Electricistas y Electrónicos

que es posible realizar el análisis de flujos de carga por ejemplo. Se destaca la importancia de poder automatizar los análisis de los sistemas eléctricos de potencia con la combinación del Python el Digsilent.

Asimismo se verifica el manejo de parámetros eléctricos con programación en Python e interacción además con el Excel. Se verifica el uso del Python como una alternativa para el análisis numérico – matemático, así también se verifico que la programación en Python para el uso de matrices es bastante sencilla y simplificada. Se valida el uso de las librerías numpy para el ejemplo considerado del despacho económico de carga.

Se verifica también, el uso de la librería matplotlib, para realizar gráficas y su sencillez y simplicidad en la programación en Python.

Se verifica el uso del ArcPy para trabajar en el entorno del ArcGIS, en el ejemplo analizado es posible la extracción de datos del municipio considerado, de forma automática.

Finalmente recomendamos el uso del Python en el análisis de los sistemas eléctricos, análisis numérico, etc., sobre todo a los estudiantes que son los que pueden profundizar y expandir el uso del Python.

REFERENCIA BIBLIOGRÁFICA.

[1] Gonzalo Oscar Eulate Choque, “Flujo óptimo de potencia”, Revista Electromundo Nº 44, La Paz Bolivia, marzo 1995.

[2] Gonzalo Oscar Eulate Choque, “Factores de distribución en el análisis de los sistemas eléctricos de potencia”, Revista Electromundo Nº 62, La Paz Bolivia, mayo 2011.

[3] Gonzalo Oscar Eulate Choque, “Análisis de Flujos de Carga mediante el uso de Técnicas Heurísticas”, Tesis de Maestría UMSA, La Paz Bolivia, marzo 2013.

[4] Gonzalo Oscar Eulate Choque, “Análisis de Flujos de Carga mediante el uso de Técnicas Heurísticas”, Tesis de Maestría UMSA, La Paz Bolivia, marzo 2013.

[5] Gonzalo Oscar Eulate Choque, “Análisis de Flujos de Carga mediante el uso de Técnicas Heurísticas”, Tesis de Maestría UMSA, La Paz Bolivia, marzo 2013.

[6] Gonzalo Oscar Eulate Choque, “Análisis de Flujos de Carga mediante Algoritmos Genéticos”, Revista Electromundo Nº 69, La Paz Bolivia, marzo 2013.

[7] Gonzalo Oscar Eulate Choque, “Despacho económico de carga mediante el uso de Algoritmos Genéticos en el software Digsilent”, Revista Electromundo No 74, ISSN 2220-5276. La Paz Bolivia, julio 2015.

[8] Dr. Adrian Will “Algoritmos Genéticos y Optimización Heurística”, apuntes de clases. Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán, 290 páginas.

[9] Digsilent GmbH, “Python Tutorial, Digsilent Technical Documentaction”, DIgSILENT PowerFactory, Aplication Guide Power Factory Version 15.2. 2014, 42 páginas. En línea: http://documents.tips/documents/python-tutorial-560f11ef2caba.html.

[10] 2016 GitHub, Inc., “Python scripting for PowerFactory”, Python for PowerFactory, 2015, en línea: https://github.com/susantoj/powerfactory_python.

[11] José María Herrera Fernández, Luis Miguel Sánchez Brea “Computación científica con Python para módulos de evaluación continua en asignaturas de ciencias aplicadas”, Esta página web es una extracto del Proyecto de Innovación y Mejora de la Calidad Docente, en línea: http://pendientedemigracion.ucm.es/info/aocg/python/modulos_cientificos/matplotlib/index.html.

[12] Eugenia Bahit “Curso: Python para Principiantes”, safeCreative 1207302042960. Buenos Aires Argentina 2012, 136 páginas. En línea: www.eugeniabahit.com.

[13] Francisco Barranco Espósito, Antonio Guerrero Galindo, Manuel entrena Casas y Álvaro González Nonay “Introducción a Python”, España 2012, 56 páginas. En línea: http://lsi.ugr.es/~pdo/Seminarios/Python2005.pdf

Page 13: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

34Colegio de Ingenieros Electricistas y Electrónicos

AUTORES.

Gonzalo Oscar Eulate Choque

Ingeniero Electricista, Magister Sc en Ingeniería del Software, Docente Universidad Mayor de San Andrés, Trabaja en el Sistema Nuevo de la Empresa de Electricidad La Paz S.A., DELAPAZ, áreas de interés: Regulación de Electricidad, Inteligencia Artificial, Sistemas Eléctricos de Distribución, Senior Member IEEE. Estudios de Postgrado en Administración de Empresas, Planificación, Protección de Redes de Distribución, Métodos Numéricos de la Simulación y Modelación, Análisis de los Regímenes de las Redes de Distribución, Economía Informática, Ingeniería del Software. Este artículo dedico a mi señora madre Valentina Choque de Eulate, por su invaluable colaboración en mi formación personal y profesión y a la memoria de mi señor padre Benigno Eulate Chambi.

Página web: http://geulate.okicode.comEmail: [email protected]

Alejandro Gianluca Eulate Mollo

Estudiante de la Universidad Mayor de San Andrés en la carrera de ingeniería Geográfica y estudiante de la Universidad Bolivia de Informática en ingeniería de Sistemas, áreas de interés: Inteligencia artificial, producción y planificación del suelo en el área de agricultura.

ANEXO 1

Programa en Python del ejemplo del Despacho Económico de carga, de un sistema de 3 generadores conectados a una barra.

import numpy as npNpob, Ngen, Pd = 600, 100, 120pob = np.random.rand(Npob,4)aux = np.ones((Npob,1))penaliza = np.zeros((Npob,1))inf , sup = 30*aux, sup = 50*aux#genera poblacion inicialpob = inf+(sup-inf)*poba = np.array([[40,50,45]])b = np.array([[4.50,3.50,3.3]])c = np.array([[0.015,0.010,0.02]])for t in range(1,Ngen+1): pg = pob[:,0:3] pg[:,2] = Pd-pg[:,0]-pg[:,1] costo = a + b*pg + c*pg**2

Page 14: El USO DEL PYTHON COMO HERRAMIENTA PARA …geulate.okicode.com/PythonOE.pdf · El software Digsilent Power Factory, es una herramienta integrada para el análisis de sistemas eléctricos

35Colegio de Ingenieros Electricistas y Electrónicos

pob[:,3] = costo[:,1]+costo[:,0]+costo[:,2]+penaliza[:,0] pob = pob[pob[:,3].argsort(),] #realiza el cruce padres = np.random.randint(1, 0.4*Npob,0.4*Npob) padres1 = padres[0:0.2*Npob,] padres2 = padres[0.2*Npob:0.4*Npob,] #print pob ax = np.random.rand() A = ax*pob[padres1,] + (1-ax)*pob[padres2,] B = (1+ax)*pob[padres1,] - ax*pob[padres2,] C = ax*pob[padres1,] + (1+ax)*pob[padres2,] pob[0.4*Npob:0.6*Npob,] = A pob[0.6*Npob:0.8*Npob,] = B pob[0.8*Npob:Npob,] = C #penaliza a los individuos que están fuera de los limites penaliza = np.zeros((Npob,1)) for i in range(0,Npob): for j in range(0,3): if pob[i,j] < 30: penaliza[i,0] = penaliza[i,0] + 1000 if pob[i,j] > 50: penaliza[i,0] = penaliza[i,0] + 1000 #calcula nuevamente el costo pg = pob[:,0:3] pg[:,2] = Pd-pg[:,0]-pg[:,1] costo = a + b*pg + c*pg**2 pob[:,3] = costo[:,1]+costo[:,0]+costo[:,2]+penaliza[:,0] pob = pob[pob[:,3].argsort(),] #genera poblacion inicial #el 20 % de los peores individuos aux1 = np.random.rand(Npob,4) aux1 = inf+(sup-inf)*aux1 n1 = 0.2*Npob pob[n1:Npob,0:3] = aux1[n1:Npob,0:3]print “resultado despacho economico”print pob[1:20,:]

Frases de la filosofía Python

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.

• Bello es mejor que feo.• Explicito es mejor que implícito.• Simple es mejor que complejo.• Complejo es mejor que complicado.• Plano es mejor que anidado.• Disperso es mejor que denso.• La legibilidad cuenta.• Los casos especiales n son tan especiales como para quebrantar las reglas.• Aunque lo práctico gana a la pureza.• Los errores nunca deberían dejarse pasar silenciosamente.• Frente a la ambigüedad, rechaza la tentación de adivinar.• Debería haber una (y preferiblemente sólo una) manera obvia de hacerlo.• Ahora es mejor que nunca.• Aunque nunca es a menudo mejor que ya mismo.• Si la implementación es difícil de explicar, es una mala idea.• Si la implementación es fácil de explicar, puede que sea una buena idea.• Los espacios de nombres (namespaces) son una gran idea… ¡Hagamos más de esas cosas.