Professional Documents
Culture Documents
1. Problema
Escolher um tema de otimizao Linear, Inteira ou Inteira Mixta. Preparar o Modelo do Problema.
Resolver usando um solver/Modelador Linear: AIMMS/LINGO/PYTHON/GAMS/AMPL. No seria
possvel utilizar Excel ou Matlab.
2. Metodologia Proposta
O modelo utilizado nesse problema foi o de Despacho Econmico de Unidades Trmicas. A funo
objetivo do problema definida em (1).
=1(
=1 , + =1 , + =1 , + ) (1)
Sendo:
Perodo de tempo
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 2 de 12
Para simular o problema proposto, foi utilizado o Programa Spyder, do pacote Anaconda, que utiliza
a linguagem de programao Python.
3. Simulaes Realizadas
Para realizar as simulaes foi proposto um modelo com uma barra, com uma unidade hidreltrica,
uma termoeltrica e uma usina elica. O objetivo do problema minimizar o despacho econmico
da usina termoeltrica, para o horizonte de operao de um dia. Os dados utilizados nas simulaes
so apresentados a seguir:
x5=x[4]
x6=x[5]
x7=x[6]
x8=x[7]
x9=x[8]
x10=x[9]
x11=x[10]
x12=x[11]
x13=x[12]
x14=x[13]
x15=x[14]
x16=x[15]
x17=x[16]
x18=x[17]
x19=x[18]
x20=x[19]
x21=x[20]
x22=x[21]
x23=x[22]
x24=x[23]
x25=x[24]
x26=x[25]
x27=x[26]
x28=x[27]
x29=x[28]
x30=x[29]
x31=x[30]
x32=x[31]
x33=x[32]
x34=x[33]
x35=x[34]
x36=x[35]
x37=x[36]
x38=x[37]
x39=x[38]
x40=x[39]
x41=x[40]
x42=x[41]
x43=x[42]
x44=x[43]
x45=x[44]
x46=x[45]
x47=x[46]
x48=x[47]
return ri*x1 + sj*Pe[0] + um*Vv[0] +zt*x25 + ri*x2 + sj*Pe[1] + um*Vv[1] +zt*x26 + ri*x3 + sj*Pe[2]
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 7 de 12
rest1={'type':'eq','fun':restricao1}
rest2={'type':'eq','fun':restricao2}
rest3={'type':'ineq','fun':restricao3}
rest4={'type':'ineq','fun':restricao4}
restricoes=[rest1,rest2,rest3,rest4]
Montagem da funo para fazer a minimizao de acordo com a FOB, as restries e os limites de
operao do problema
solucao = minimize(objetivo,x0,method='slsqp',bounds=bnds, constraints=restricoes)
3.1. Resultados
Com a simulao feita foi obitida um custo de R$55.460,01 com os valores de gerao da trmica e
do dficit conforme apresentado na Tabela 4. O custo obitido se diferencia do custo apresentado no
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 8 de 12
4. Concluso
Ao final deste trabalho foi possvel conhecer uma nova linguagem de programao, o Python. Trata-
se de uma linguagem de programao open source o que viabiliza sua aplicao nos mais diversos
setores. Com o uso da biblioteca Scipy e da funo minimize possibilitou entender melhor como os
otimizadores funcionam, diferenciando um pouco da utilizao do Linprog do MATLAB.
5. Cdigo do Problema
from scipy.optimize import minimize
pm=1.0
volume_maximo = 400.0
V0 =
[400.0,311.64,202.64,114.28,5.28,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
,0.0]
Vf
=[311.64,202.64,114.28,5.28,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
0.0]
Vt = [300.0, 300.0, 300.0, 300.0, 216.92, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00,
211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00]
Vv = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0]
Af=[211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00,
211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00, 211.64, 191.00]
#"Entrada de gua no reservatrio
Pe=[8.43, 0.00, 4.68, 22.23, 0.00, 6.95, 0.00, 9.51, 0.20, 0.00, 1.18, 2.25, 9.77, 4.88, 9.17, 2.50, 20.44,
6.29, 12.77, 1.91, 1.18, 10.27, 7.8, 0.00] # "Limite inferior da potncia do vento
Pload=[260, 260, 260, 260, 260, 260, 260, 265, 265, 270, 285, 300, 310, 320, 350, 370, 390, 385, 370,
340, 310, 270, 250, 230] #Potncia da carga
sum_potencia_eolica = 0.0
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 9 de 12
Soma_objetivo = 0.0
sum_volume_vertido = 0.0
b = (0.0,270)
bnds = (b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b)
t= [76.83]
d = [0]
x0 = [t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d]
rampa1 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0]
rampa2 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0]
soma = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0]
x1=x[0]
x2=x[1]
x3=x[2]
x4=x[3]
x5=x[4]
x6=x[5]
x7=x[6]
x8=x[7]
x9=x[8]
x10=x[9]
x11=x[10]
x12=x[11]
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 10 de 12
x13=x[12]
x14=x[13]
x15=x[14]
x16=x[15]
x17=x[16]
x18=x[17]
x19=x[18]
x20=x[19]
x21=x[20]
x22=x[21]
x23=x[22]
x24=x[23]
x25=x[24]
x26=x[25]
x27=x[26]
x28=x[27]
x29=x[28]
x30=x[29]
x31=x[30]
x32=x[31]
x33=x[32]
x34=x[33]
x35=x[34]
x36=x[35]
x37=x[36]
x38=x[37]
x39=x[38]
x40=x[39]
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 11 de 12
x41=x[40]
x42=x[41]
x43=x[42]
x44=x[43]
x45=x[44]
x46=x[45]
x47=x[46]
x48=x[47]
# for i in range(24):
return ri*x1 + sj*Pe[0] + um*Vv[0] +zt*x25 + ri*x2 + sj*Pe[1] + um*Vv[1] +zt*x26 + ri*x3 + sj*Pe[2]
+ um*Vv[2]+zt*x27 + ri*x4 + sj*Pe[3] + um*Vv[3]+ zt*x28 +ri*x5 + sj*Pe[4] + um*Vv[4] +zt*x29 +
ri*x6 + sj*Pe[5] + um*Vv[5] +zt*x30\
+ri*x7 + sj*Pe[6] + um*Vv[6] +zt*x31 + ri*x8 + sj*Pe[7] + um*Vv[7] +zt*x32 +ri*x9 + sj*Pe[8] +
um*Vv[8] +zt*x33 + ri*x10 + sj*Pe[9] + um*Vv[9]+zt*x34 +ri*x11 + sj*Pe[10] + um*Vv[10] +zt*x35 +
ri*x12 + sj*Pe[11] + um*Vv[11] +zt*x36\
for i in range(24):
return Pload
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 12 de 12
for i in range(24):
for i in range(24):
return soma
for i in range(23):
# print(rampa1)
return rampa1
for i in range(23):
return rampa2
rest1={'type':'eq','fun':restricao1}
rest2={'type':'eq','fun':restricao2}
rest3={'type':'ineq','fun':restricao3}
rest4={'type':'ineq','fun':restricao4}
restricoes=[rest1,rest2,rest3,rest4]