Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2...
Transcript of Aula 06: Modelagem e Python-MIP - Otimização Linear e Inteira · Aula de Hoje 1 Formato LP 2...
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
Previously...
Aula Anterior:
Algoritmo Simplex (Parte 1)
2 / 24 Túlio Toffolo – Otimização Linear e Inteira – Aula 06: Modelagem e Python-MIP
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
/ 12
Perguntas?