Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2...

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

Transcript of Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2...

Page 1: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

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

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

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

Page 2: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Previously...

Aula Anterior:

Algoritmo Simplex (Parte 1)

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

Page 3: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Aula de Hoje

1 Formato LP

2 Exemplo de modelagem 1

3 Exemplo de modelagem 2

4 Aula Prática

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

Page 4: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Aula de Hoje

1 Formato LP

2 Exemplo de modelagem 1

3 Exemplo de modelagem 2

4 Aula Prática

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

Page 5: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Introdução

Formatos conhecidos para entrada de programas lineares:

MPS Mathematical Programming System :

padrão da indústria

pouco intuitivo, confuso e com limitações

LP CPLEX LP file format :

padrão criado para uso com o resolvedor CPLEX

mais fácil e prático do que o formato MPS

aceito nos principais resolvedores modernos

arquivos podem ser convertidos para MPS

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

Page 6: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Formato LP

Componentes

função objetivo

restrições

informações de variáveis

limites

variáveis inteiras genéricas

variáveis binárias

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

Page 7: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Problema da Dieta

DIETA.LP

1 Minimize2 custo: 3 x1 + 2.5 x234 Subject to5 vitaminas: 6 x1 + 4 x2 >= 326 proteinas: 5 x1 + 6 x2 >= 3678 End

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

Page 8: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Resolvendo usando Python-MIP + SolverComando

1 from mip.model import *2 model = Model()3 model.read('dieta.lp')4 model.optimize()

Exemplo Limites1 Optimize a model with 2 rows, 2 columns and 4 nonzeros2 Coefficient statistics:3 Matrix range [4e+00, 6e+00]4 Objective range [2e+00, 3e+00]5 Bounds range [0e+00, 0e+00]6 RHS range [3e+01, 4e+01]7 Presolve time: 0.02s8 Presolved: 2 rows, 2 columns, 4 nonzeros9

10 Iteration Objective Primal Inf. Dual Inf. Time11 0 0.0000000e+00 8.500000e+00 0.000000e+00 0s12 2 1.7750000e+01 0.000000e+00 0.000000e+00 0s1314 Solved in 2 iterations and 0.02 seconds15 Optimal objective 1.775000000e+01

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

Page 9: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Limites e Integralidade

Podem ser especificadas restrições específicas sobre algumas variáveis

Essas restrições são informadas após a seção das restrições normais epodem ser dos seguintes tipos:

Restrição de limites -Seção Bounds:

Exemplo Limites1 Subject to2 ...3 Bounds4 0 <= x1 <= 405 2 <= x4 <= 3

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

Page 10: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Limites e Integralidade (cont.)

Para variáveis para as quais não são permitidos valores fracionáriostemos as seções:

General: variáveis inteiras de modo geral

Binary: variáveis inteiras que somente podem assumir valor zero ou um

Exemplo Integralidade1 Subject to2 ...3 General4 x15 x26 Binary7 x3

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

Page 11: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Aula de Hoje

1 Formato LP

2 Exemplo de modelagem 1

3 Exemplo de modelagem 2

4 Aula Prática

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

Page 12: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Modelagem - Planejamento da Produção

Nossa companhia fabrica tapetes artesanais, um produto com demanda sazonal.Obtivemos as demandas demanda1, demanda2, . . . , demanda12 para o ano que seinicia. As mesmas variam desde 440 até 920.

Atualmente temos 30 empregados, e cada um faz 20 tapetes por mês e recebe $2.000,00. Estamos sem estoque de carpetes no momento.

As flutuações de demanda podem ser gerenciadas do seguinte modo:

1 trabalho extra: nesse caso paga-se 80% a mais do que o salário regular; cadafuncionário pode ter um máximo de 30% de trabalho a mais no mês;

2 contratar ou despedir: custo de $ 320 e $ 400, respectivamente;

3 manter estoques: custa $ 8 por tapete por mês; atualmente não temos tapetes

estocados e precisamos terminar o ano sem estoque também.

Como atender toda a demanda minimizando os custos de produção ?

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

Page 13: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Planejamento da Produção - Variáveis

ti trabalhadores no i-ésimo mês; (t0 = 30);

xi número de tapetes feitos i-ésimo mês;

ei número de tapetes feitos utilizando-se trabalho extra nomês i;

ci, di respectivamente: contratados e demitidos no início do mêsi;

ai número de tapetes armazenados ao final do mês i (a0 = 0).

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

Page 14: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Planejamento da Produção - Restrições

Variáveis

ti trabalhadoresxi produçãoci contratadosdi demitidosei trab. extraai armazenados

Produção mês i (i = 1, . . . , 12)

xi = 20ti + ei

Máximo prod. com trab. extra (20× 0, 3)

ei ≤ 6ti

Tapetes armezanados no final do mês i

ai = a(i−1) + xi − demandai

Trabalhadores no início do mês i

ti = t(i−1) + ci − di

Não negatividade

ti, xi, ci, ei, ai ≥ 0 ∀i

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

Page 15: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Planejamento da Produção - Função Objetivo

Variáveis

ti trabalhadoresxi produçãoci contratadosdi demitidosei trab. extraai armazenados

Minimizando os Custos

12∑i=1

2000ti+

8ai+180ei+320ci+400di

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

Page 16: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Aula de Hoje

1 Formato LP

2 Exemplo de modelagem 1

3 Exemplo de modelagem 2

4 Aula Prática

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

Page 17: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Modelagem - Análise de Investimentos

Um investidor tem 3 alternativas de investimento: A, B e C para o ano que se inicia. Osinvestimentos não são mutuamente exclusivos e o dinheiro proveniente de lucros em umaaplicação pode ser reinvestido em qualquer uma das aplicações. As aplicações têm asseguintes características:

A: disponível no início de cada um dos quatro trimestres; cada R$ investido em A noprincípio do trimestre devolve R$ 1,10 no final do trimestre;

B: disponível no início de cada um dos dois semestres; cada R$ investido em B retornaR$ 1,20 ao final do semestre.

C: disponível somente no início do ano; Cada R$ investido em C devolve R$ 1,40 no

final do ano.

O capital do investidor é de R$ 5.000,00. Como maximizar o capital do investidor até o

final do ano?

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

Page 18: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Carteira de Aplicações

Variáveis de Decisão

xij : quantidade investida na aplicação i no trimestre j

⇓i ∈ {A,B,C}, j ∈ {1, 2, 3, 4}

xA1, xA2, xA3, xA4, xB1, xB3, xC1

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

Page 19: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

O Fluxo do Capital

xA1

1 2 3 4 5

xA2

xA3

xA4

xB1

xC1

xB3

1,1 xA1

1,1 xA2

1,1 xA3

1,1 xA4

1,2 xB3

1,4 xC1

1,2 xB1

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

Page 20: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

O Fluxo do Capital : Função Objetivo

xA1

1 2 3 4 5

xA2

xA3

xA4

xB1

xC1

xB3

1,1 xA1

1,1 xA2

1,1 xA3

1,1 xA4

1,2 xB3

1,4 xC1

1,2 xB1

Maximize

1, 1xA4 + 1, 2xB3 + 1, 4xC1

(lembre-se que o dinheiro ganho em períodos anteriores pode ser reinvestido.)

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

Page 21: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

O Fluxo do Capital : Restrições

Período 1Os R$ 5.000,00 disponíveis podem ser guardados ou investidos em A,B ou C. Criaremosuma variável artificial g1 que indica a quantidade guardada no período 1.

xA1 + xB1 + xC1 + g1 = 5000

Período 2

xA2 + g2 = 1, 1xA1 + g1

Período n

investimentos em n + guardados em n=

lucros em n + guardados em n− 1

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

Page 22: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Fluxo de Capital - Modelo

Maximize:

1, 1xA4 + 1, 2xB3 + 1, 4xC1 + g4

Sujeito a:

xA1 + xB1 + xC1 + g1 = 5000

xA2 + g2 = g1 + 1, 1xA1

xA3 + xB3 + g3 = g2 + 1, 1xA2 + 1, 2xB1

xA4 + g4 = g3 + 1, 1xA3

xij ≥ 0 ∀ i, jgj ≥ 0 ∀ j

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

Page 23: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Aula de Hoje

1 Formato LP

2 Exemplo de modelagem 1

3 Exemplo de modelagem 2

4 Aula Prática

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

Page 24: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Parte 1: Modelagem

ExercícioA cia. farmacêutica Margarida fabrica 2 drogas: d1 e d2. As drogas são produzidas pelamistura de dois compostos químicos: q1 e q2. Considerando seu peso total, a droga d1deve apresentar ao menos 65% de q1 e a droga d2 deve apresentar ao menos 55% deq1. A droga d1 vende por R$ 60,00 a grama e a droga d2 vende a R$ 40,00 a grama.Os compostos q1 e q2 podem ser produzidos por dois processos de fabricação, p1 e p2.Executar o processo p1 por uma hora requer 30 gramas de matéria-prima crua, 2 horasde trabalho e produz 15 gramas de cada composto químico. O processo p2 executado poruma hora requer 20 gramas de matéria-prima crua, 3 horas de trabalho 2 produz 20 gramasde q1 e 10 gramas de q2. Considerando a disponibilidade de 120 horas de trabalho e 100gramas de matéria-prima crua, formule o Problema de Programação Linear que maximizao faturamento da cia. Margarida.

Formule um PL que maximiza o faturamento da cia. Margarida.

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

Page 25: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

Parte 2: Implementação

1 Modelar a formulação a seguir no formato LP e em seguida resolvausando o PythonMIP

Exercício anterior (cia. farmacêutica Margarida)

2 Implementar os modelos a seguir usando PythonMIP

Exemplo de Modelagem 1 (Planejamento da Produção)

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

Page 26: Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2 Exemplo de modelagem 1 3 Exemplo de modelagem 2 4 Aula Prática 3 / 24 Túlio Toffolo

/ 12

Perguntas?