Pyomo concrete 02

Este é um exemplo do Pyomo, para um modelo concreto.

Porém, uma vantagem bastante grande é que os dados podem vir em listas e dicionários do Python, e as regras da função objetivo e restrições podem ser escritas como funções do Python.

Como os projetos normalmente serão de tamanho médio, eu acho este o método mais interessante, por manipular via Python o arquivo inteiro.

Projetos muito mais pesados teriam que ser resolvidos com solvers mais poderosos, como o CPLEX, e aí a coisa muda de nível – é melhor usar AIMMS ou algo mais robusto, até para fins de debug.

Link para download.

Código:

from pyomo.environ import *

#dados

N = [1,2]
M = [1,2]

c = {1:1, 2:2}
a = {(1,1):3, (1,2):4, (2,1):2, (2,2):5}
b = {1:1, 2:2}

#Model

model = ConcreteModel()

model.x = Var(N, within = NonNegativeReals)

def obj_rule(model):
return sum(c[i] + model.x[i] for i in N)

model.obj = Objective(rule = obj_rule)

def cons_1(model,m):
return sum(a[m,i]*model.x[i] for i in N) >= b[m]

model.con = Constraint(M, rule = cons_1)

opt = SolverFactory(‘cbc’) #Ou glpk
results = opt.solve(model)

print(results)
model.display()