Escolar Documentos
Profissional Documentos
Cultura Documentos
Túlio A. M. Toffolo
http://www.toffolo.com.br
BCC464/PCC174 – 2018/2
Departamento de Computação – UFOP
Previously...
Aulas anteriores:
Breve histórico
Exemplos básicos de Modelagem
Método gráfico e definições
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
Maximizando o lucro!
Ou seja: max 100x1 + 112x2
Método12gráfico
11
O modelo
10
pode ser facilmente resolvido pelo método gráfico:
Logo, devemos resolver o modelo de programação linear a seguir:
9
x2
8
max 100x1 + 112x2
127
s.a. 6x1 + 4x2 18
116
x1 1
105
x2 1
94
83
72
61
5 x1 x1
2 3 4 51 6 17 28 39 10
4 11
5 12
6 7 8 9 10 11 12
12 / 23 Túlio Toffolo
4 – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP
1
3
2
13 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP
Aula de hoje
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
Demanda mínima: Para cada um dos mercados deve ser expedido uma quantidade
15 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP
Passo 1: Esquema
Ao definirmos quantas unidades devem ser enviadas de cada fábrica para cada
mercado, deparamo-nos com a própria variável de decisão, que pode ser expressa da
Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP
17 / 30
seguinte maneira:
Passo 3: Variáveis
Variáveis:
xi,j : quantidade a enviar da fábrica i ∈ F para o mercado j ∈ M .
Função objetivo:
XX
min ci,j xi,j
i∈F j∈M
Seja pDemanda
i a capacidade produtiva
mínima: Para dados
cada um fábrica i ∈ deve
mercados F ser expedido uma quantidade
X
∀i ∈ F : xi,j ≤ pi
j∈M
XX
min ci,j xi,j
i∈F j∈M
X
s.a. xi,j ≤ pi ∀i ∈ F
j∈M
X
xi,j ≥ dj ∀j ∈ M
i∈F
xi,j ≥ 0 ∀i ∈ F, ∀j ∈ M
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
Requisitos:
Linguagem Python 3.5 ou mais recente
Framework Python-MIP, desenvolvido por Túlio Toffolo e Haroldo
Santos (projeto apoiado pela COIN-OR)
1 ...
2
3 # criando a função objetivo
4 model += xsum(c[i][j]*x[i][j] for i in F for j in M)
5
6 # adicionando as restrições
7 for i in F:
8 model += xsum(x[i][j] for j in M) <= p[i]
9 for j in M:
10 model += xsum(x[i][j] for i in F) >= d[j]
11
12 # resolvendo o modelo
13 model.optimize()
14
15 # imprimindo a solução
16 print("\n-----------------------------------")
17 print("Solução ótima com custo: {}\n".format(model.objective_value))
18 for i in F:
19 for j in M:
20 print("x({},{}) = {}".format(i, j, x[i][j].x))
21 print("-----------------------------------\n")
1 Dicas de modelagem
3 Exemplo 2: Transporte
4 Aula prática
5 Exercícios
Exercício 1
Um sapateiro é capaz de fazer 6 sapatos por hora ou 5 cintos por hora.
Ele gasta 2 unidades de couro para fabricar um sapato e uma unidade de
couro para fabricar um cinto. Tem-se um total de 6 unidades disponíveis
de couro. O lucro unitário do sapato é de 5 unidades monetárias e o do
cinto é de 2 unidades monetárias.
Ajude o sapateiro a lucrar o máximo que ele puder por dia (considere que
o dia tem 8 horas): formule um Programa Linear (PL) e, em seguida:
Implemente e resolva a formulação utilizando o Python-MIP e CBC.
Resolva também utilizando o método gráfico.
/ 12