Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1:...

32
Aula 04: Modelagem e Python-MIP Otimizaªo Linear e Inteira Toelio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computaªo UFOP

Transcript of Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1:...

Page 1: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula 04: Modelagem e Python-MIPOtimização Linear e Inteira

Túlio A. M. Toffolohttp://www.toffolo.com.br

BCC464/PCC174 – 2018/2Departamento de Computação – UFOP

Page 2: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Previously...

Aulas anteriores:

Breve histórico

Exemplos básicos de Modelagem

Método gráfico e definições

2 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 3: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

3 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 4: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

3 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 5: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo-a-passo para modelar um problema:

1 Elabore um esquema do problema.

2 Encontre e escreva uma solução qualquer para o problema.

3 Olhando para a solução, defina as variáveis de decisão.

4 Observando as variáveis de decisão, defina a função objetivo, ouseja, o que deve ser maximizado ou minimizado.

5 Finalmente, defina as restrições do problema.

4 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 6: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

5 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 7: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 1: Fábrica de brinquedos

Fonte: [1] Luís Herique Rodrigues et al. (2014), Pesquisa Operacional -Programação Linear Passo a Passo, Editora Unisinos.

Uma pequena oficina de brinquedos produz dois tipos de brinquedos: caminhãode madeira e boneca de pano. O lucro do caminhão é de R$ 10,00 por unidade eda boneca de pano é de R$ 8,00 por unidade. São necessárias seis pessoaspara fazer um lote de dez caminhões por dia e quatro pessoas para fazer um lotede 14 bonecas por dia. Há 18 pessoas disponíveis para produzir os itens,podendo ser alocadas em qualquer um dos dois, em qualquer etapa. Devido àdemanda existente é necessário fazer ao menos um lote de caminhões e um lotede bonecas por dia.

Formule um modelo de Programação Linear que maximize a lucratividade diária.

6 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 8: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 1: Esquema

Figura 3 – Esquema simplificado do problema 1 – Oficina de brinquedos.

Nessa Figura é possível observar que, conforme tomamos a decisão de fazer maisou menos lotes de caminhões ou bonecas, precisaremos alocar mais ou menos pessoasda empresa na produção de um produto, resultando em um lucro maior ou menor deacordo com a nossa decisão.

Passo 2 – Definindo uma solução para o problema

Definir uma solução para o problema nos ajudará a entender qual é a variável dedecisão. Nesse exemplo, para decidir quantos lotes de caminhões ou bonecas poderemosfazer, precisaremos considerar as restrições quanto à mão de obra disponível, bem comoa quantidade mínima de produtos a vender. O Quadro 3 representa uma possível soluçãopara o problema.

Quadro 3 – Solução para o problema 1 – Oficina de brinquedos

Produto Quantidade de lotes aproduzir

Lucro resultante

Bonecas 1 R$ 112,00Caminhões 2 R$ 200,00

Totais - R$ 312,00

Lucro: R$ 100,00 por lote (10 caminhões) Lucro: R$ 112,00 por lote (14 bonecas)

Figura: Esquema (imagem extraída de Rodrigues et. al [1])

7 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 9: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 2: Solução

Qual seria uma solução para o problema?

Produzir 1 lote de caminhões e 1 lote de bonecas?

Utilizaríamos neste caso 10 pessoas (6 + 4)

Lucraríamos R$ 212,00 (R$ 100,00 + R$ 112,00)

Solução parece ok... não utilizamos mais de 18 pessoas eatendemos à demanda mínima de fazer ao menos um lote decaminhões e um lote de bonecas.

Solução viável!

8 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 10: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 3: Variáveis

Solução: 1 lote de caminhões e 1 lote de bonecas!

Qual decisão foi tomada?

Número de lotes de caminhões: x1

Número de lotes de bonecas: x2

9 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 11: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 4: Função objetivo

O que estamos minimizando/maximizando?

Maximizando o lucro!

Ou seja: max 100x1 + 112x2

10 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 12: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 5: Restrições

Quais são as restrições?

1 Há 18 pessoas disponíveis:

6x1 + 4x2 ≤ 18

2 Devemos produzir no mínimo 1 lote de caminhões:

x1 ≥ 1

3 Devemos produzir no mínimo 1 lote de bonecas:

x2 ≥ 1

11 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 13: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Modelo

Logo, devemos resolver o modelo de programação linear a seguir:

max 100x1 + 112x2

s.a. 6x1 + 4x2 ≤ 18

x1 ≥ 1

x2 ≥ 1

12 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 14: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Método gráfico

O modelo pode ser facilmente resolvido pelo método gráfico:

x1

x2

�1 1 2 3 4 5 6 7 8 9 10 11 12�1

1

2

3

4

5

6

7

8

9

10

11

12

1

Modelo

Logo, devemos resolver o modelo de programação linear a seguir:

max 100x1 + 112x2

s.a. 6x1 + 4x2 18

x1 � 1

x2 � 1

12 / 23 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

x1

x2

�1 1 2 3 4 5 6 7 8 9 10 11 12�1

1

2

3

4

5

6

7

8

9

10

11

12

1

x1

x2

�1 1 2 3 4 5 6 7 8 9 10 11 12�1

1

2

3

4

5

6

7

8

9

10

11

12

1

13 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 15: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

14 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 16: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 2: Transporte

Fonte: [1] Luís Herique Rodrigues et al. (2014), Pesquisa Operacional -Programação Linear Passo a Passo, Editora Unisinos.

Você possui três fábricas localizadas em regiões geográficas distintas, e precisasaber quanto deve produzir e transportar para quatro diferentes mercados a umcusto mínimo. As informações do custo de transporte unitário entre as fábricas eos mercados estão no quadro a seguir.

Xij – Quantidade de unidades de produto produzidos na fábrica i a ser enviado parao mercado j

Passo 4 – Identificando o que deve ser minimizado ou maximizado

Esse problema indica que “Você possui três fábricas localizadas em regiõesgeográficas distintas e precisa saber quanto deve produzir e transportar para quatrodiferentes mercados, a um custo mínimo”. Dessa maneira, podemos entender que oproblema trata-se da minimização dos custos, e sua função objetivo pode ser definida daseguinte forma:

MINIMIZAR CUSTO

Onde o custo é: custo de transporte da fábrica i para o mercado j multiplicadopela quantidade de unidades de produto produzidos na fábrica i a ser enviado para omercado j.

Passo 5 – Identificando classes de restrições

Ao observar o quadro que apresenta os dados do problema, identificam-se duasclasses de restrições, destacadas a seguir:

Quadro 9 – Classes de restrições do problema 3 – transporte

Custo de transporteMercados

Capacidade Produtiva1 2 3 4

FábricasA $ 0,90/un $ 1,00/un $ 1,80/un $ 1,05/un 22.500 unB $ 2,10/un $ 0,80/un $ 0,70/un $ 1,15/un 21.000 unC $ 1,10/un $ 1,00/un $ 1,20/un $ 1,50/un 19.500 un

Demanda mínima 10.000un 15.000un 11.000un 10.000un

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

Page 17: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 1: Esquema

Deve-se definir quantos produtos de cada fábrica devem ser enviados acada mercado, considerando capacidade e demanda mínima...

Figura 6 – Esquema do Problema 3 – Transporte.

Passo 2 – Definindo uma solução para o problema

Uma proposta de solução para o problema deve indicar quantas unidades deproduto devem ser enviadas de cada fábrica para cada mercado, atendendo tanto àscapacidades produtivas máximas quanto às demandas mínimas de cada mercado. Umasolução possível para o problema é evidenciada no Quadro 8.

Quadro 8 – Solução para o problema 3 – transporte

Unidades enviadasPara o mercado...

1 2 3 4

Da Fábrica...A 5000 5000 5000 5000B 5000 5000 5000 5000C 4000 5000 4000 4000

Passo 3 – Definindo variáveis de decisão

Ao definirmos quantas unidades devem ser enviadas de cada fábrica para cadamercado, deparamo-nos com a própria variável de decisão, que pode ser expressa daseguinte maneira:

Figura: Esquema (imagem extraída de Rodrigues et. al [1])

16 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 18: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 2: Solução

Uma solução deve indicar quantas unidades de produto devem serenviadas de cada fábrica para cada mercado, respeitando as capacidadesprodutivas e atendendo as demandas mínimas de cada mercado.

Eis uma solução possível:

Figura 6 – Esquema do Problema 3 – Transporte.

Passo 2 – Definindo uma solução para o problema

Uma proposta de solução para o problema deve indicar quantas unidades deproduto devem ser enviadas de cada fábrica para cada mercado, atendendo tanto àscapacidades produtivas máximas quanto às demandas mínimas de cada mercado. Umasolução possível para o problema é evidenciada no Quadro 8.

Quadro 8 – Solução para o problema 3 – transporte

Unidades enviadasPara o mercado...

1 2 3 4

Da Fábrica...A 5000 5000 5000 5000B 5000 5000 5000 5000C 4000 5000 4000 4000

Passo 3 – Definindo variáveis de decisão

Ao definirmos quantas unidades devem ser enviadas de cada fábrica para cadamercado, deparamo-nos com a própria variável de decisão, que pode ser expressa daseguinte maneira:17 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 19: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 3: Variáveis

Estamos decidindo quanto enviar de cada fábrica para cada mercado...

Seja F o conjunto de fábricas

Seja M o conjunto de mercados

Variáveis:

xi,j : quantidade a enviar da fábrica i ∈ F para o mercado j ∈M .

18 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 20: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 4: Função objetivo

Devemos minimizar o custo de transporte...

Seja ci,j o custo de enviar uma unidade do produto produzido nafábrica i ∈ F para o mercado j ∈M

Função objetivo:

min∑i∈F

∑j∈M

ci,jxi,j

19 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 21: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Passo 5: Restrições

Xij – Quantidade de unidades de produto produzidos na fábrica i a ser enviado parao mercado j

Passo 4 – Identificando o que deve ser minimizado ou maximizado

Esse problema indica que “Você possui três fábricas localizadas em regiõesgeográficas distintas e precisa saber quanto deve produzir e transportar para quatrodiferentes mercados, a um custo mínimo”. Dessa maneira, podemos entender que oproblema trata-se da minimização dos custos, e sua função objetivo pode ser definida daseguinte forma:

MINIMIZAR CUSTO

Onde o custo é: custo de transporte da fábrica i para o mercado j multiplicadopela quantidade de unidades de produto produzidos na fábrica i a ser enviado para omercado j.

Passo 5 – Identificando classes de restrições

Ao observar o quadro que apresenta os dados do problema, identificam-se duasclasses de restrições, destacadas a seguir:

Quadro 9 – Classes de restrições do problema 3 – transporte

Custo de transporteMercados

Capacidade Produtiva1 2 3 4

FábricasA $ 0,90/un $ 1,00/un $ 1,80/un $ 1,05/un 22.500 unB $ 2,10/un $ 0,80/un $ 0,70/un $ 1,15/un 21.000 unC $ 1,10/un $ 1,00/un $ 1,20/un $ 1,50/un 19.500 un

Demanda mínima 10.000un 15.000un 11.000un 10.000un

Demanda mínima: Para cada um dos mercados deve ser expedido uma quantidadeSeja pi a capacidade produtiva da fábrica i ∈ F

∀i ∈ F :∑j∈M

xi,j ≤ pi

Seja dj a demanda mínima do mercado j ∈M

∀j ∈M :∑i∈F

xi,j ≥ dj

20 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 22: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 2: Transporte

Eis o modelo de programação linear:

min∑i∈F

∑j∈M

ci,jxi,j

s.a.∑j∈M

xi,j ≤ pi ∀i ∈ F

∑i∈F

xi,j ≥ dj ∀j ∈M

xi,j ≥ 0 ∀i ∈ F,∀j ∈M

21 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 23: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

22 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 24: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Python-MIP

Vamos utilizar o Python-MIP para implementar os dois modelos vistosnesta aula.

Requisitos:

Linguagem Python 3.5 ou mais recente

Framework Python-MIP, desenvolvido por Túlio Toffolo e HaroldoSantos (projeto apoiado pela COIN-OR)

Mais informações: http:// www.python-mip.com

23 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 25: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 1

1 from mip.model import *23 model = Model("Exemplo 1", MAXIMIZE)45 # criando variáveis6 x1 = model.add_var()7 x2 = model.add_var()89 # criando a função objetivo

10 model += 100*x1 + 112*x21112 # adicionando as restrições13 model += 6*x1 + 4*x2 <= 1814 model += x1 >= 115 model += x2 >= 11617 # resolvendo o modelo18 model.optimize()1920 # imprimindo a solução21 print("x1 = {x1.x}, x2 = {x2.x}".format(**locals()))

24 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 26: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 1 (alternativo)

1 from mip.model import *23 model = Model("Exemplo 1", MAXIMIZE)45 # criando variáveis6 x1 = model.add_var()7 x2 = model.add_var()89 # criando a função objetivo

10 model.objective = 100*x1 + 112*x21112 # adicionando as restrições13 model.add_constr(6*x1 + 4*x2 <= 18)14 model.add_constr(x1 >= 1)15 model.add_constr(x2 >= 1)1617 # resolvendo o modelo18 model.optimize()1920 # imprimindo a solução21 print("x1 = {x1.x}, x2 = {x2.x}".format(**locals()))

25 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 27: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 2 (I)

1 from mip.model import *23 model = Model("Exemplo 2")45 # dados de entrada6 F = [ 0, 1, 2 ]7 M = [ 0, 1, 2, 3 ]8 c = [ [ 0.90, 1.00, 1.80, 1.05 ],9 [ 2.10, 0.80, 0.70, 1.15 ],

10 [ 1.10, 1.00, 1.20, 1.50 ] ]11 p = [ 22500, 21000, 19500 ]12 d = [ 10000, 15000, 11000, 10000 ]1314 # criando variáveis15 x = [ [ model.add_var() for j in M ] for i in F ]1617 # poderíamos escrever, alternativamente:18 x = []19 for i in F:20 x.append([])21 for j in M:22 x[i].append(model.add_var())

26 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 28: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exemplo 2 (II)

1 ...23 # criando a função objetivo4 model += xsum(c[i][j]*x[i][j] for i in F for j in M)56 # adicionando as restrições7 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]1112 # resolvendo o modelo13 model.optimize()1415 # imprimindo a solução16 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")

27 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 29: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

28 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 30: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Aula de hoje

1 Dicas de modelagem

2 Exemplo 1: Fábrica de brinquedos

3 Exemplo 2: Transporte

4 Aula prática

5 Exercícios

29 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 31: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

Exercícios

Exercício 1Um 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 decouro para fabricar um cinto. Tem-se um total de 6 unidades disponíveisde couro. O lucro unitário do sapato é de 5 unidades monetárias e o docinto é de 2 unidades monetárias.

Ajude o sapateiro a lucrar o máximo que ele puder por dia (considere queo 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.

30 / 30 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Modelagem e Python-MIP

Page 32: Aula 04: Modelagem e Python-MIP - Otimização …Aula de hoje 1 Dicas de modelagem 2 Exemplo 1: Fábrica de brinquedos 3 Exemplo 2: Transporte 4 Aula prática 5 Exercícios 3 / 30

/ 12

Perguntas?