Aula 04: Resolvedores LPOtimização Linear e Inteira
Túlio A. M. Toffolohttp://www.toffolo.com.br
BCC464/PCC174 –2018/2Departamento de Computação –UFOP
Previously...
Aula Anterior:
Algoritmo Simplex (Parte 2)
Exemplos de Modelagem
2 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula de Hoje
1 Exercício 1: Método Simplex
2 Exercício 2: Modelagem
3 Formato LP
4 Aula Prática
3 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula de Hoje
1 Exercício 1: Método Simplex
2 Exercício 2: Modelagem
3 Formato LP
4 Aula Prática
3 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Método Simplex
Exercício1 Resolva, usando o método Simplex (passo-a-passo):
min. 300x1+ 280x2
s.a. 70x1+ 50x2 ≥ 350
50x1+ 80x2 ≥ 400
x1 ≥ 2
x1, x2 ≥ 0
4 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Método Simplex
Exercício1 Resolva, usando o método Simplex (passo-a-passo):
min. 300x1+ 280x2
s.a. 7x1+ 5x2 ≥ 35
5x1+ 8x2 ≥ 40
x1 ≥ 2
x1, x2 ≥ 0
5 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
O Algoritmo Simplex
Passo 1 Converta o PL para a Forma Padrão.
Passo 2 Obtenha uma Solução Básica Factível (se possível) daForma Padrão.
Passo 3 Teste de Otimalidade: Determine se a Solução Básica éÓtima. Se Ótima PARE.
Passo 4 Caso não seja ótima -Mudança de Base: determine:
qual variável não básica irá entrar na base, com o intuitode melhorar a função objetivo;
qual variável básica irá sair da base.
Passo 5 Utilize as operações elementares para computar a NovaSolução Básica e volte para o Passo 3.
6 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passo 1
Passo 1: Colocar na forma padrão:
min. 300x1+ 280x2
s.a. 7x1+ 5x2−x3 = 35
5x1+ 8x2 −x4 = 40
x1 −x5 = 2
7 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passo 2
Passo 2: Obter uma Solução Básica Factível (SBF) inicial:
Infelizmente a obtenção de uma solução inicial não é trivial
Motivo: as variáveis de folga (que aparecem em apenas umarestrição) não permitem uma SBF trivial (exemplo: x3 = −35 não épossível uma vez que x3 ≥ 0)
O que fazer?
Uma opção é aplicar o Método de Duas Fases
8 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Método de Duas Fases
Passo 2: Obter uma Solução Básica Factível (SBF) inicial
O Método de Duas Fases é aplicado:
Variáveis artificiais são adicionadas para que seja trivial gerar umaSolução Básica Factível (SBF).
Em seguida, um novo problema é resolvido cujo objetivo é minimizar ovalor das variáveis artificiais, ou seja: desaparecer com elas.
min. +a1+a2+a3
s.a. 7x1+ 5x2−x3 +a1 =35
5x1+ 8x2 −x4 +a2 =40
x1 −x5 +a3 = 2
Agora temos que resolver o problema acima!
9 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.1 e 2.2
Passo 2.1 (Método de Duas Fases): Colocar na forma padrão
Não é necessário pois o problema já está na forma padrão.
Passo 2.2 (Método de Duas Fases): Encontrar uma SBF inicialTrivial: a1 = 35, a2 = 40 e a3 = 2.
L0 : + a1 + a2 + a3 = 0
L1 : 7x1 + 5x2 − x3 + a1 = 35 a1 = 35
L2 : 5x1 + 8x2 − x4 + a2 = 40 a2 = 40
L3 : x1 − x5 + a3 = 2 a3 = 2
Vamos montar o tableau:
a1, a2 e a3 devem ter coeficiente 0 na função objetivo:
Logo: L0 ← L0 − L1 − L2 − L3
10 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.3 e 2.4
Passo 2.3 (Método de Duas Fases): Teste de otimalidade
A solução não é ótima, pois há variáveis com custo reduzidonegativo (e trata-se de um problema de minimização):
x1 x2 x3 x4 x5 a1 a2 a3
L0 : −13 −13 +1 +1 +1 = −77 z = −77
L1 : +7 +5 −1 +1 = 35 a1 = 35
L2 : +5 +8 −1 +1 = 40 a2 = 40
L3 : +1 −1 +1 = 2 a3 = 2
Passo 2.4 (Método de Duas Fases): Mudança de Base
Quem entra na base? x1
Quem sairá da base? a3, pois a linha L3 será a linha pivô (é a linhaque mais limita o valor de x1)
11 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Temos que atualizar o tableau
x1 x2 x3 x4 x5 a1 a2 a3
L0 : −13 −13 +1 +1 +1 = −77 z = −77
L1 : +7 +5 −1 +1 = 35 a1 = 35
L2 : +5 +8 −1 +1 = 40 a2 = 40
L3 : +1 −1 +1 = 2 a3 = 2
x1 entra base na linha pivô L3 (linha que mais limita seu valor), logo:
L3 ← L3 (x1 já tinha coeficiente 1) logo: x1 = 2
x1 x2 x3 x4 x5 a1 a2 a3
L3 : +1 −1 +1 = 2 x1 = 2
12 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Atualizamos as demais linhas para que x1 tenha coeficiente zero:
L0 ← L0 + 13L3
L1 ← L1 − 7L3
L2 ← L2 − 5L3
x1 x2 x3 x4 x5 a1 a2 a3
L0 : −13 +1 +1 −12 +13 = −51 z = −51
L1 : +5 −1 +7 +1 −7 = 21 a1 = 21
L2 : +8 −1 +5 +1 −5 = 30 a2 = 30
L3 : +1 −1 +1 = 2 x1 = 2
Agora voltamos ao passo 2.3...
13 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.3 e 2.4
Passo 2.3 (Método de Duas Fases): Teste de otimalidade
A solução ainda não é ótima, pois ainda há variáveis com custoreduzido negativo (e trata-se de um problema de minimização):
x1 x2 x3 x4 x5 a1 a2 a3
L0 : −13 +1 +1 −12 +13 = −51 z = −51
L1 : +5 −1 +7 +1 −7 = 21 a1 = 21
L2 : +8 −1 +5 +1 −5 = 30 a2 = 30
L3 : +1 −1 +1 = 2 x1 = 2
Passo 2.4 (Método de Duas Fases): Mudança de Base
Quem entra na base? x2
Quem sairá da base? a2, pois a linha L2 será a linha pivô (é a linhaque mais limita o valor de x2)
14 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Temos que atualizar o tableau
x1 x2 x3 x4 x5 a1 a2 a3
L0 : −13 +1 +1 −12 +13 = 67 z = 67
L1 : +5 −1 +7 +1 −7 = 21 a1 = 21
L2 : +8 −1 +5 +1 −5 = 30 a2 = 30
L3 : +1 −1 +1 = 2 x1 = 2
x2 entra base na linha pivô L2 (linha que mais limita seu valor), logo:
L2 ← L2 ÷ 8, e portanto x2 =308
x1 x2 x3 x4 x5 a1 a2 a3
L2 : +1 − 18
+ 58
+ 18
− 58
= 308
x2 = 308
15 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Atualizamos as demais linhas para que x2 tenha coeficiente zero:
L0 ← L0 + 13L2
L1 ← L1 − 5L2
x1 x2 x3 x4 x5 a1 a2 a3
L0 : +1 − 58
− 318
+ 138
+ 398
= 0 z = 0
L1 : −1 + 58
+ 318
+1 − 58
− 318
= 188
x5 = 188
L2 : +1 − 18
+ 58
+ 18
− 58
= 308
x2 = 308
L3 : +1 −1 +1 = 2 x1 = 2
Agora repetimos o ’loop’ e voltamos ao passo 2.3...
16 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.3 e 2.4
Passo 2.3 (Método de Duas Fases): Teste de otimalidade
A solução ainda não é ótima, pois ainda há variáveis com custoreduzido negativo (e trata-se de um problema de minimização):
x1 x2 x3 x4 x5 a1 a2 a3
L0 : +1 − 58
− 318
+ 138
+ 398
= − 188
z = − 188
L1 : −1 + 58
+ 318
+1 − 58
− 318
= 188
x5 = 188
L2 : +1 − 18
+ 58
+ 18
− 58
= 308
x2 = 308
L3 : +1 −1 +1 = 2 x1 = 2
Passo 2.4 (Método de Duas Fases): Mudança de Base
Quem entra na base? x5
Quem sairá da base? a1, pois a linha L1 será a linha pivô (é a linhaque mais limita o valor de x5)
17 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Temos que atualizar o tableau
x1 x2 x3 x4 x5 a1 a2 a3
L0 : +1 − 58
− 318
+ 138
+ 398
= − 188
z = − 188
L1 : −1 + 58
+ 318
+1 − 58
− 318
= 188
a1 = 188
L2 : +1 − 18
+ 58
+ 18
− 58
= 308
x2 = 308
L3 : +1 −1 +1 = 2 x1 = 2
x5 entra base na linha pivô L1 (linha que mais limita seu valor), logo:
L1 ← L1 × 831 , e portanto x5 =
1831
x1 x2 x3 x4 x5 a1 a2 a3
L1 : − 831
+ 531
+1 + 831
− 531
−1 = 1831
x5 = 1831
18 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passos 2.5
Passo 2.5 (Método de Duas Fases): Computar Nova Solução Básica
Atualizamos as demais linhas para que x5 tenha coeficiente zero:
L0 ← L0 + 31L1 ÷ 8
L2 ← L2 − 5L1 ÷ 8
L3 ← L3 + L1
x1 x2 x3 x4 x5 a1 a2 a3
L0 : +1 +1 +1 = 0 z = 0
L1 : − 831
+ 531
+1 + 831
− 531
−1 = 1831
x5 = 1831
L2 : +1 + 531
− 731
− 531
+ 731
= 10531
x2 = 10531
L3 : +1 − 831
+ 531
831
− 531
= 8031
x1 = 8031
Agora repetimos o ’loop’ e voltamos ao passo 2.3...
19 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passo 2.3
Passo 2.3 (Método de Duas Fases): Teste de otimalidade
A solução ainda é ótima (considerando o problema artificial daprimeira fase) e, portanto, encontramos uma SBF inicial
x1 =8031 , x2 = 105
31 e x5 =1831
Como encontramos uma SBF, removemos as variáveis artificiais doproblema e voltamos à função objetivo do problema original:
x1 x2 x3 x4 x5
L0 : +300 +280
L1 : − 831
+ 531
+1 = 1831
x5 = 1831
L2 : +1 + 531
− 731
= 10531
x2 = 10531
L3 : +1 − 831
+ 531
= 8031
x1 = 8031
20 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Passo 3
Primeiro atualizamos a linha L0 para que as variáveis básicas (x1, x2e x5) tenham coeficiente zero:
L0 ← L0 − 300L3 − 280L2
x1 x2 x3 x4 x5
L0 : + 100031
− 46031
L1 : − 831
+ 531
+1 = 1831
x5 = 1831
L2 : +1 + 531
− 731
= 10531
x2 = 10531
L3 : +1 − 831
+ 531
= 8031
x1 = 8031
Passo 3: Teste de otimalidade
A solução é ótima!!!
z = 5340031 , x1 =
8031 e x2 =
10531
21 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Solução gráfica
22 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula de Hoje
1 Exercício 1: Método Simplex
2 Exercício 2: Modelagem
3 Formato LP
4 Aula Prática
23 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Modelagem
ExercícioA cia. farmacêutica Margarida fabrica 2 drogas: d1 e d2. As drogas são produzi-das pela mistura de dois compostos químicos: q1 e q2. Considerando seu pesototal, a droga d1 deve apresentar ao menos 65% de q1 e a droga d2 deve apre-sentar ao menos 55% de q1. A droga d1 vende por R$ 60,00 a grama e a droga d2vende a R$ 40,00 a grama. Os compostos q1 e q2 podem ser produzidos por doisprocessos de fabricação, p1 e p2. Executar o processo p1 por uma hora requer 30gramas de matéria-prima crua, 2 horas de trabalho e produz 15 gramas de cadacomposto químico. O processo p2 executado por uma hora requer 20 gramas dematéria-prima crua e 3 horas de trabalho, resultando em 20 gramas de q1 e 10gramas de q2. Considere a disponibilidade de 120 horas de trabalho e 100 gramasde matéria-prima crua.
Formule um PL que maximiza o faturamento da cia. Margarida.
24 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Exercício 2: Modelagem
Variáveis:
d1 e d2: quantidade produzida de cada droga
p1 e p2: tempo de execução de cada processo
qd11 , qd21 , qd12 e qd21 : quantidade produzida de cada droga a partir decada processo
25 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Exercício 2: Modelagem
max 60d1 + 40d2 (1)
s.a. d1 = qd11 + qd1
2 (2)
d2 = qd21 + qd2
2 (3)
qd11 ≥ 0.65d1 (4)
qd21 ≥ 0.55d2 (5)
qd11 + qd2
1 ≤ 15p1 + 20p2 (6)
qd12 + qd2
2 ≤ 15p1 + 10p2 (7)
30p1 + 20p2 ≤ 100 (8)
2p1 + 3p2 ≤ 120 (9)
d1, d2, qd11 , qd2
1 , qd12 , qd2
2 , p1, p2 ≥ 0 (10)
26 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula de Hoje
1 Exercício 1: Método Simplex
2 Exercício 2: Modelagem
3 Formato LP
4 Aula Prática
27 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
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
28 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Formato LP
Componentes
função objetivo
restrições
informações de variáveis
limites
variáveis inteiras genéricas
variáveis binárias
29 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Problema da Dieta
DIETA.LP
1 Minimize2 3 x1 + 2.5 x234 Subject to5 6 x1 + 4 x2 >= 326 5 x1 + 6 x2 >= 3678 End
30 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Resolvendo
Comando1 gurobi.sh2 model = read('dieta.lp')3 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
31 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
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
32 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
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 binárias que somente podem assumir valor zero ou um
Exemplo Integralidade1 Subject to2 ...3 Binary4 x35 General6 x17 x2
33 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula de Hoje
1 Exercício 1: Método Simplex
2 Exercício 2: Modelagem
3 Formato LP
4 Aula Prática
34 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
Aula Prática
1 Modelar os modelos da aula passada no formato LP
Exemplo de Modelagem 2 (Análise de Investimentos)
Exercício da Aula Passada (cia. farmacêutica Margarida)
2 Implementação de modelos com Python+Gurobi
Exemplo de Modelagem 1 (Planejamento da Produção)
35 / 35 Túlio Toffolo – Otimização Linear e Inteira – Aula 04: Resolvedores LP
/ 12
Perguntas?