Você está na página 1de 12

Data Emisso: 17/07/17

Relatrio de Rev.: 00 Data:


Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 1 de 12

Relatrio de Trabalho Computacional

Alunos: Lara Aparecida Pimentel Delfim Lacerda

Joo Antnio Archetti

Professores: Bruno Dias/Edimar Oliveira

Disciplina: Tpicos Especiais de Otimizao

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)

Esse problema est sujeito as seguintes restries:

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

Nmero de unidades trmicas


Nmero de unidades elicas
Nmero de unidades hidreltricas
Potncia Trmica
Potncia Elica
Volume vertido pela hidreltrica
Potncia de deficit
Custo da Potncia Trmica
Custo da Potncia Elica
Custo do Volume Vertido pela hidreltrica
Custo da Potncia de Dfict
Potncia da carga do Sistema
Volume Turbinado pela Hidreltrica
Coeficiente de produtividade da hidreltrica
0 Volume Inicial do reservatrio da Hidreltrica
Volume Final do reservatrio da Hidreltrica
Entrada de gua no reservatrio da hidreltrica
Limite final da hidreltrica
Limite turbinado pela hidreltrica
Limite inferior da potncia elica

Limite superior da potncia elica

Para simular o problema proposto, foi utilizado o Programa Spyder, do pacote Anaconda, que utiliza
a linguagem de programao Python.

2.1. Linguagem de programao Python


Python uma linguagem de programao dinmica, interpretada, robusta, multiplataforma, multi-
paradigma (orientao objetos, funcional, refletiva e imperativa) e est preparada para rodar em
JVM e .NET Framework. Lanada em 1991 por Guido van Rossum, uma linguagem livre (at para
projetos comerciais) e hoje pode-se programar para desktops, web e mobile.

2.2. Pacote Anaconda


Para o desenvolvimento do otmizador foi utilizado o Software Anaconda. O Anaconda Python possui
diversas vantagens em relao aos demais softwares, dentre elas, destacam-se:
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 3 de 12

A instalao padro do Anaconda contm a maioria das bibliotecas cientficas comumente


usadas;
O comando conda, incluso na distribuio, de fcil utilizao e permite instalar pacotes pr-
compilados (muito til em Windows) e diversas verses de Python ao mesmo tempo. Em
muitas situaes substitui ambos pip e virtualenv.
Em Windows, ele j vem configurado para compilar extenses em C (ou Cython) usando o
mingw (somente 32 bits, por enquanto).

Na Figura 1 apresentado a IDE do Anaconda com a utilizao do Spyder e na Figura 2 a interface do


Spyder que se assemelha muito a do MATLAB.

Figura 1 - IDE do Anaconda

Figura 2 - Interface do Spyder


Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 4 de 12

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:

Gerao Termoeltrica: Capacidade de 100kW e custo de R$30,00/kW .


Gerao Hidreltrica: Mximo volume turbinado de 300hm3/h, capacidade mxima de
volume de 400hm3, penalizao por volume vertido de R$0,01/hm3 e produtividade de
1Kw/hm3/h;
Custo de dficit de R$200,00/kW.
Cenrio da entrada de gua e demanda de acordo com a Tabela 1.
Gerao elica: Incerteza dada por dois cenrios de velocidade do vento dirios. Os valores
da gerao elica so convertidos a partir dos dados de velocidade do vento atravs de uma
aproximao linear.
Tabela 1 - Dados de Entrada de gua e de Demanda
Entrada Entrada Entrada
Demanda Demanda Demanda
Hora de gua Hora de gua Hora de gua
(kW ) (kW ) (kW )
(hm3) (hm3) (hm3)
1 211.64 260 9 211.64 265 17 211.64 390
2 191.00 260 10 191.00 270 18 191.00 385
3 211.64 260 11 211,64 285 19 211,64 370
4 191,00 260 12 191,00 300 20 191,00 340
5 211,64 260 13 211,64 310 21 211,64 310
6 191,00 260 14 191,00 320 22 191,00 270
7 211,64 260 15 211,64 350 23 211,64 250
8 191,00 265 16 191,00 370 24 191,00 230

Tabela 2 - Dados da velocidade do vento por hora


Potncia Potncia Potncia Potncia Potncia Potncia
Hora Mnima Mxima Hora Mnima Mxima Hora Mnima Mxima
(kW ) (kW ) (kW ) (kW ) (kW ) (kW )
1 8.43 13.56 9 0.20 30.00 17 20.44 30.00
2 0 6.43 10 0 1.24 18 6.29 11.82
3 4.68 4.84 11 1.18 23.08 19 12.77 21.66
4 22.23 25.06 12 2.25 16.73 20 1.91 9.79
5 0 7.69 13 9.77 21,89 21 1.18 10.51
6 6.95 12.66 14 4.88 17.57 22 10.27 22.56
7 0 3.79 15 9.17 14.08 23 7.80 10.09
8 9.51 15.26 16 2.50 10.24 24 0 17.92

De forma a explicar melhor o programa, a Tabela 3 apresenta o detalhamento do cdigo


implementado com alguns comentrios pertinentes.
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 5 de 12

Tabela 3 - Explicao do Cdigo


Importando a Biblioteca Scipy de otimizao e a funo minimize para resolver a FOB
from scipy.optimize import minimize
Definindo as variveis de acordo com os dados do problema
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
ri = 30.0 #Custo da trmica
zt=200.0 #Custo do dficit
sj=1.0 #Custo do vento
um=0.01 #Custo por hidreltrica revertido
sum_potencia_eolica = 0.0
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]
Definindo a funo objetivo. Da varivel 0 a 23 corresponde a gerao trmica e da 24 a 48 o dfict
def objetivo (x):
x1=x[0]
x2=x[1]
x3=x[2]
x4=x[3]
Data Emisso: 17/07/17
Relatrio de Rev.: 00 Data:
Cd. Doc.: ME-H-ME01-170710
Trabalho rea: Mestrado
Computacional Verso: 00
Pgina 6 de 12

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

+ 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\
+ri*x13 + sj*Pe[12] + um*Vv[12] + zt*x37 + ri*x14 + sj*Pe[13] + um*Vv[13] +zt*x38+ ri*x15 +
sj*Pe[14] + um*Vv[14] +zt*x39+ ri*x16 + sj*Pe[15] + um*Vv[15] +zt*x40 +ri*x17 + sj*Pe[16] +
um*Vv[16] +zt*x41 + ri*x18 + sj*Pe[17] + um*Vv[17] +zt*x42\
+ri*x19 + sj*Pe[18] + um*Vv[18] +zt*x43 + ri*x20 + sj*Pe[19] + um*Vv[19] +zt*x44 +ri*x21 +
sj*Pe[20] + um*Vv[20] +zt*x45 + ri*x22 + sj*Pe[21] + um*Vv[21] +zt*x46 +ri*x23 + sj*Pe[22] +
um*Vv[22] +zt*x47 + ri*x24 + sj*Pe[23] + um*Vv[23] + +zt*x48
Definio das restries do problema. No final so definidos os tipos das restries, sendo as duas
primeiras equaes e as duas ltimas inequaes.
def restricao1 (x):
for i in range(24):
Pload[i] = Pload[i] - x[i] - (pm*Vt[i]) - Pe[i] - x[23+i]
return Pload

def restricao2 (x):


for i in range(24):
soma[i] = V0[i] + Af[i]
for i in range(24):
soma[i] = soma[i] - Vf[i] - Vt[i] - Vv[i]
return soma

def restricao3 (x):


for i in range(23):
rampa1[i] = rampa1[i] - x[i+1] + 1.1*x[i]
return rampa1

def restricao4 (x):


for i in range(23):
rampa2[i] = rampa2[i] + x[i+1] - 0.9*x[i]
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]
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

artigo de referncia devido a um mtodo de diviso do problema em dois subproblemas utilizado no


artigo base.

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

ri = 30.0 #Custo da trmica

zt=200.0 #Custo do dficit

sj=1.0 #Custo do vento

um=0.01 #Custo por hidreltrica revertido

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]

def objetivo (x):

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):

# Soma_objetivo = Soma_objetivo + ri*x[i] + sj*Pe[i] + um*Vv[i]

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\

+ri*x13 + sj*Pe[12] + um*Vv[12] + zt*x37 + ri*x14 + sj*Pe[13] + um*Vv[13] +zt*x38+ ri*x15 +


sj*Pe[14] + um*Vv[14] +zt*x39+ ri*x16 + sj*Pe[15] + um*Vv[15] +zt*x40 +ri*x17 + sj*Pe[16] +
um*Vv[16] +zt*x41 + ri*x18 + sj*Pe[17] + um*Vv[17] +zt*x42\

+ri*x19 + sj*Pe[18] + um*Vv[18] +zt*x43 + ri*x20 + sj*Pe[19] + um*Vv[19] +zt*x44 +ri*x21 +


sj*Pe[20] + um*Vv[20] +zt*x45 + ri*x22 + sj*Pe[21] + um*Vv[21] +zt*x46 +ri*x23 + sj*Pe[22] +
um*Vv[22] +zt*x47 + ri*x24 + sj*Pe[23] + um*Vv[23] + +zt*x48

def restricao1 (x):

for i in range(24):

Pload[i] = Pload[i] - x[i] - (pm*Vt[i]) - Pe[i] - x[23+i]

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

def restricao2 (x):

for i in range(24):

soma[i] = V0[i] + Af[i]

for i in range(24):

soma[i] = soma[i] - Vf[i] - Vt[i] - Vv[i]

return soma

def restricao3 (x):

for i in range(23):

rampa1[i] = rampa1[i] - x[i+1] + 1.1*x[i]

# print(rampa1)

return rampa1

def restricao4 (x):

for i in range(23):

rampa2[i] = rampa2[i] + x[i+1] - 0.9*x[i]

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]

solucao = minimize(objetivo,x0,method='slsqp',bounds=bnds, constraints=restricoes)

print(" O minimo gasto da trmica : ", solucao.fun)

Você também pode gostar