You are on page 1of 23

INGENIERA ELCTRICA

Tarifas Elctricas
Aplicacin con Python

GONZALO OSCAR EULATE CHOQUE


GONZALO OSCAR EULATE CHOQUE
2016
INGENIERA ELCTRICA

En esta primera parte se realizar la aplicacin


del Python en el Despacho Econmico.

- Clculo de la funcin de costos de un generador


trmico.

- Despacho econmico Uninodal.

- Despacho econmico Uninodal con el uso de


GONZALO
algoritmos OSCAR
genticos en el EULATE
Python. CHOQUE
PYTHON

El software Python es un lenguaje de


programacin interpretado cuya filosofa
hace hincapi en una sintaxis que
favorezca un cdigo legible. Se trata de un
lenguaje de programacin multiparadigma,
ya que soporta orientacin a objetos,
programacin imperativa y, en menor
medida, programacin funcional.

Python GONZALO OSCAR


puede ser EULATE CHOQUE
utilizado en diversas
plataformas y sistemas operativos
PYTHON

Lenguaje de programacin de alto nivel del


tipo scripting.
Diseado para ser fcil de leer y simple de
implementar.
Es cdigo abierto (de libre uso).
Puede ejecutarse en Mac, Windows y
sistemas Unix; tambin ha sido portado a
mquinas virtual JAVA y .NET.
Es a menudo usado para desarrollar
GONZALO OSCAR EULATE
aplicaciones web y contenido webCHOQUE
dinmico.
PYTHON Escribiendo cdigo

Comentario
#se debe colocar este smbolo para comentarios

Variables
Las variables en Python no se declaran
Se les asigna valor con el signo de igualdad =
Una variable puede cambiar su valor y su tipo a lo largo
del cdigo (por eso se llama dinmico y tipado).
Case sensitive, por lo que Punto no es igual que punto.
PYTHON Tipo de datos

Tipo Clase Ejemplo Observaciones


Inmutable (su contenido no puede
str Cadena 'Cadena' o "Cadena1"
cambiarse en tiempo de ejecucin.
unicode Cadena u'Cadena' Versin Unicode de str
Mutable (su contenido puede cambiarse
list Secuencia [4.0, 'Cadena', True] en tiempo de ejecucin), puede contener
objetos de diversos tipos.
Inmutable, puede contener objetos de
tuple Secuencia (4.0, 'Cadena', True)
diversos tipos.
Mutable, sin orden, no contiene
set Conjunto set([4.0, 'Cadena', True])
duplicados.
Inmutable, sin orden, no contiene
frozenset Conjunto frozenset([4.0, 'Cadena', True])
duplicados.
dict Mapping {'Key1',: 1.0, 'Key2': False} Grupos de clave: valor.
Nmero Precisin fija, convertido en Long en caso
int 42
entero de overflow
Nmero
long 42L o 456966786151987643L Precisin arbitraria.
entero
Nmero
float 31.416.927 Coma flotante de doble precisin.
decimal
bool Booleano True o False Valor booleano verdadero o falso
PYTHON Escribiendo cdigo

Bucles y sentencias
La condicin IF se ejecuta si la condicin tiene una valor
True. Se pueden concatenar varios IF con la estructura
IF-ELIF.
La parte ELSE es opcional.
verdadero = True
if verdadero:
print verdadero
else:
print falso
PYTHON Escribiendo cdigo

Bucles y sentencias
La construccin for recorre los elementos de una
secuencia (por ejemplo una lista o cadena) en el orden
que aparecen y por cada elemento ejecuta el cdigo
interno del FOR.
lista = [a, b, c]
for i in lista:
print i
Resultado
a
b
c
Se debe respetar la indentacin (espaciado)
PYTHON Escribiendo cdigo

Funciones
Las funciones en Python admiten argumentos en su
llamada y permiten devolver valores.
Se definen con la palabra clave def, seguida del nombre
de la funcin y sus parmetros. Las sentencias que
forman el cuerpo de la funcin empiezan en la
siguiente lnea y deben ir sangradas.
La sentencia return devuelve el valor que se adquiere
dentro de la funcin.

def suma(x,y=2):
return x+y
PYTHON Escribiendo cdigo

Funciones
def escribe_media():
media = (a + b) / 2
print("La media de", a, "y", b, "es:", media)
return

a=3
b=5
escribe_media() #de esta forma se invoca la funcin
print("Programa terminado")
PYTHON Escribiendo cdigo

Lectura lnea a lnea de un archivo de texto


def leertxt():
archi=open('datos.txt','r')
linea=archi.readline()
while linea!="":
print linea
linea=archi.readline()
archi.close()
#invocamos a la lectura del archivo
leertxt()
PYTHON Escribiendo cdigo

Ejemplo se tiene el siguiente archivo de datos


gen3.txt

Datos de funcion de costos de generadores


numero de generadores
3
% No(barra) a b c Pmin Pmax
1 40 4.50 0.015 30 50
1 50 3.50 0.015 30 50
1 40 3.30 0.020 30 50
PYTHON Escribiendo cdigo

#programa para lectura de datos


#de la funcion de costos
import numpy as np
def lee_datos():
archivo = open("gen3.txt","r")
for t in range(1,3):
lineaux = archivo.readline()
N = int(archivo.readline())
lineaux = archivo.readline()
f, line = [],'0'
for t in range(1,N+1):
line=np.array(archivo.readline().split()).astype(float)
f.append(line)
archivo.close()
return np.array(f,dtype=float),N

Gen,N = lee_datos()
print Gen[:,0:6]
print N
PRCTICA N 1

Se debe calcular la funcin de costos de


los siguientes generadores.
Se debe realizar en Python la estimacin
lineal y cuadrtica.
= + + 2
= +
POTENCIA CP&T POTENCIA PODER COSTO DE RENDIMIENTO TERMICO
UNIDAD TEMP EN BORNES (1) INYECTADA CALORIFICO COMBUSTIBLE 50% (2) 75% 100% O&M
C MW % MW BTU/PC US$/MPC US$/MMBTU BTU/KWh BTU/KWh BTU/KWh US$/MWh

G1 25 18,78 3,60 18,10 946,7 1,1310 1,1947 16.720 14.408 12.946 2,836
G2 25 17,77 3,60 17,13 946,7 1,1310 1,1947 18.175 15.177 13.577 2,836
GC9 25 104,59 3,60 100,82 946,7 1,1310 1,1947 7.628 7.371 7.211 2,953
SC2 25 21,37 2,70 20,79 946,7 1,1310 1,1947 16.483 14.200 12.785 2,836
GB1 25 21,00 2,20 20,54 1,080
KE1 10 9,35 3,60 9,01 936,7 1,1310 1,2074 15.355 12.990 12.074 2,836
Ejemplo 1

En clases se realiz el siguiente ejemplo de


calculo de la funcin de costos cuadrtica:
import numpy as np
from numpy.linalg import inv
M = np.zeros((3,3))
Pb1, Pb2, Pb3 = 9.63, 14.45, 19.26
CPT = 0.014
PC = 955.5
Precio = 1.1310
RT1, RT2, RT3 = 15773, 13591, 12570
OM = 2.508
# se calcula el precio del combustible
Precio1 = Precio*1000/PC
Precio2 = Precio1*(1+CPT)
Costo1 = Precio2*RT1*Pb1/1000 + OM*Pb1
Costo2 = Precio2*RT2*Pb2/1000 + OM*Pb2
Costo3 = Precio2*RT3*Pb3/1000 + OM*Pb3
Continuacin Ejemplo 1

M = np.array([[1, Pb1, Pb1**2],[1, Pb2, Pb2**2],[1, Pb3, Pb3**2]])


N = inv(M)
C = np.array([[Costo1],[Costo2],[Costo3]])
F = N.dot(C)
a = F[0]
b = F[1]
c = F[2]
Pg = np.array([Pb1,Pb2,Pb3])
Costo = a + b*Pg + c*Pg**2
print " a = %10.3f" %F[0]
print " b = %10.3f" %F[1]
print " c = %10.3f" %F[2]
print Costo
DESPACHO ECONMICO

DESPACHO ECONMICO ES LA ASIGNACIN PTIMA DE LA POTENCIAS DE


GENERACIN, PARA MINIMIZAR EL COSTO TOTAL DE GENERACIN, EN UN SISTEMA
ELCTRICO DE POTENCIA.
FUNCIN OBJETIVO
= 1 + 2 + 3
RESTRICCIONES

=
=1

CONSIDERACIONES
3 = 1 2
DESPACHO ECONMICO

MEDIANTE EL MTODO DE MULTIPLICADORES DE LAGRANGE SE CALCULA EL COSTO


MARGINAL Y LUEGO LAS POTENCIAS GENERADAS OPTIMAS.


2 +

=
1


=
2
DESPACHO ECONMICO Prctica 2

Sistema de tres generadores conectados a


una barra, con una demanda de 120 MW.

= + +
Pg a b c
us$ $ $ MW MW
2
1 40 4,50 0,015 30 50
2 50 3,50 0,015 30 50
3 40 3,30 0,02 30 50

Utilice el mtodo de los multiplicadores de


Lagrange en Python.
DESPACHO ECONMICO Prctica 3

Sistema de tres generadores conectados a


una barra, con una demanda de 120 MW.

= + +

Pg a b c
us$ $ $ MW MW
2
1 40 4,50 0,015 30 50
2 50 3,50 0,015 30 50
3 40 3,30 0,02 30 50

Mediante algoritmos genticos en Python,


realice el despacho econmico.
Pg1min = 35 MW (se debe modificar el lmite)
DESPACHO ECONMICO Prctica 4

Sistema de tres generadores en un sistema


elctrico de potencia de 5 barras.
40 MW
20 MW
15 MVAr

3 50 MW
1,06 pu 1,030 pu 30 MVAr
1 0
4

2 5
1,045 pu

20 MW 60 MW
60 MW 10 MVAr 40 MVAr
DESPACHO ECONMICO Prctica 2

Datos de las funciones de costo

= + +

N N a b c Pg Pg min Pgmax
BARRA MW MW MW
1 1 50 4,5 0,0045 47,857 10 90

2 2 55 4,3 0,0050 73,540 10 90

3 3 45 3,8 0,0055 45,820 10 90


Python

Tarifas Elctricas
Aplicacin con Python

GONZALO OSCAR EULATE CHOQUE


GONZALO OSCAR EULATE CHOQUE
2016