Aula 26: Branch-and-Price Otimização Linear e Inteira Túlio Toffolo http://www.toffolo.com.br BCC464 / PCC174 2018/2 Departamento de Computação UFOP
Aula de Hoje 1 Branch-and-Price Exemplo: Problema da Alocação Generalizada 2 Decomposição de Dantzig-Wolfe e Branch-and-Price Exemplo: Problema da Alocação Generalizada 3 Exemplo adicional: Time Constrained Shortest Path 4 Exercício Prático 1 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Aula de Hoje 1 Branch-and-Price Exemplo: Problema da Alocação Generalizada 2 Decomposição de Dantzig-Wolfe e Branch-and-Price Exemplo: Problema da Alocação Generalizada 3 Exemplo adicional: Time Constrained Shortest Path 4 Exercício Prático 1 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Branch-and-Price Branch-and-Bound com geração de colunas! Mas... qual a diferença? Exemplo da última aula: Problema da Alocação Generalizada (PAG) Lembre-se que temos as colunas ótimas para a relaxação linear... Mas provavelmente será necessário gerar colunas adicionais ao modificar o mestre durante o branching. Como funcionaria o branch-and-bound (no caso, branch-and-price)? 2 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
PAG: Problema Mestre n m max. l i,jy i,j,k λ j,k i=1 j=1 k K j m s.a. y i,j,k λ j,k = 1 i {1,..., n} j=1 k K j λ j,k = 1 j {1,..., m} k K j 0 λ j,k 1 j {1,..., m}, k K j PAG: Pricing (note que j é uma constante em cada pricing) ( n ) min. (l i,j π i)y i µ j s.a. i=1 n r i,jy i c j i=1 y i {0, 1} i {1,..., n} 3 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Branch-and-Price para o PAG E se fizermos branching nas variáveis λ do problema mestre? Como fica o pricing? Ao invés de gerar qualquer coluna com custo reduzido negativo, temos que gerar uma coluna com custo reduzido negativo que não corresponda a nenhuma das variáveis λ fixadas em zero. Esta estratégia traz uma série de dificuldades... Sem falar que pode levar a decisões irrelevantes... Qual seria uma abordagem viável? 4 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Branch-and-Price para o PAG Temos que criar regras de branching que preferencialmente: Não modifiquem o(s) problema(s) de pricing Encontre soluções inteiras (caso existam) em um número finito de passos. Como fazer isso para o PAG? Quais decisões estamos tomando? E se forçarmos/impedirmos que uma tarefa seja executa por uma máquina específica? 5 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Branch-and-Price para o PAG Considerando uma solução fracionária (em que uma tarefa é executada em mais de uma máquina), podemos: Forçar que uma tarefa i seja executada pela máquina j Impedir que uma tarefa i seja executada pela máquina j Como implementar? Para proibir que uma tarefa i seja executada pela máquina j: 1 Todas as colunas k em que y i,j,k = 1 são fixadas em 0 (λ j,k = 0) 2 No problema de pricing da máquina j, adicionar a restrição y i = 0 Para forçar que uma tarefa i seja executada pela máquina j: 1 Todas as colunas k em que y i,j,k = 0 são fixadas em 0 (λ j,k = 0) 2 No problema de pricing da máquina j, adicionar a restrição y i = 1 e nos demais problemas de pricing, forçar y i = 0. 6 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Aula de Hoje 1 Branch-and-Price Exemplo: Problema da Alocação Generalizada 2 Decomposição de Dantzig-Wolfe e Branch-and-Price Exemplo: Problema da Alocação Generalizada 3 Exemplo adicional: Time Constrained Shortest Path 4 Exercício Prático 6 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Decomposição de DW e Branch-and-Price Vamos utilizar novamente o Problema da Alocação Generalizada (PAG) para exemplificar. Considere duas formulações, F e F D : F é a formulação compacta apresentada F D é a formulação resultante após aplicarmos a Decomposição de Dantzig-Wolfe em F A relaxação de F D é resolvida via Geração de Colunas! Fazer branching não é trivial... Mas.. e se utilizarmos as variáveis de F para fazer branching em F D? 7 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Problema da Alocação Generalizada F: Formulação compacta n m max. l i,j x i,j s.a. i=1 j=1 m x i,j = 1 i {1,..., n} j=1 n r i,j x i,j c j j {1,..., m} i=1 x ij {0, 1} i, j 8 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
F D Problema Mestre n m max. l i,jy i,j,k λ j,k i=1 j=1 k K j m s.a. y i,j,k λ j,k = 1 i {1,..., n} j=1 k K j λ j,k = 1 j {1,..., m} k K j 0 λ j,k 1 j {1,..., m}, k K j F D Pricing (note que j é uma constante em cada pricing) ( n ) min. (l i,j π i)y i µ j s.a. i=1 n r i,jy i c j i=1 y i {0, 1} i {1,..., n} 9 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Problema da Alocação Generalizada Se fixarmos a variável x i,j : x i,j = 1 força que a tarefa i seja executada pela máquina j x i,j = 0 impede que a tarefa i seja executada pela máquina j Podemos utilizar esta ideia em nosso branch-and-price: Para proibir que uma tarefa i seja executada pela máquina j: 1 Todas as colunas k em que y i,j,k = 1 são fixadas em 0 (λ j,k = 0) 2 No problema de pricing da máquina j, adicionar a restrição y i = 0 Para forçar que uma tarefa i seja executada pela máquina j: 1 Todas as colunas k em que y i,j,k = 0 são fixadas em 0 (λ j,k = 0) 2 No problema de pricing da máquina j, adicionar a restrição y i = 1; nos demais problema de pricing, adicionar a restrição y i = 0 10 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Problema da Alocação Generalizada Obter o valor de x i,j é trivial: x i,j = k K j y i,j,k λ j,k Mas.. Qual variável escolher para branching? A mais fracionária? A que mais impacta a solução (coeficiente na função objetivo)?...? 11 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Aula de Hoje 1 Branch-and-Price Exemplo: Problema da Alocação Generalizada 2 Decomposição de Dantzig-Wolfe e Branch-and-Price Exemplo: Problema da Alocação Generalizada 3 Exemplo adicional: Time Constrained Shortest Path 4 Exercício Prático 11 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Decomposição de Dantzig-Wolfe Exemplo visto na Aula 23: Time Constrained Shortest Path Example: Taken from the Primer Fonte: Desrosiers and Lübbecke (2005) Column Generation Chapter 1: A Primer in Column Generation Find: Resource constrained shortest path from 1 to 6 http://www.or.rwth-aachen.de/research/publications/primer.pdf Total traversal time must not exceed 14 units (1,10) 2 (1,1) (2,3) 4 (1,7) 1 (1,2) (10,1) 6 (10,3) (5,7) 3 5 (12,3) (2,2) custo tempo 12 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Decomposição de Dantzig-Wolfe Exemplo visto na Aula 23: Time Constrained Shortest Path Example: Taken from the Primer Fonte: Desrosiers and Lübbecke (2005) Column Generation Chapter 1: A Primer in Column Generation Find: Resource constrained shortest path from 1 to 6 http://www.or.rwth-aachen.de/research/publications/primer.pdf Total traversal time must not exceed 14 units (1,10) 2 (1,1) (2,3) 4 (1,7) 1 (1,2) (10,1) 6 (10,3) (5,7) 3 5 (12,3) (2,2) custo tempo Caminho Path 1-3-5-6 mais quick rápido butéexpensive: caro: custo cost 2424, 8time unidades 8 de tempo 12 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Decomposição de Dantzig-Wolfe Exemplo visto na Aula 23: Time Constrained Shortest Path Example: Taken from the Primer Fonte: Desrosiers and Lübbecke (2005) Column Generation Chapter 1: A Primer in Column Generation Find: Resource constrained shortest path from 1 to 6 http://www.or.rwth-aachen.de/research/publications/primer.pdf Total traversal time must not exceed 14 units (1,10) 2 (1,1) (2,3) 4 (1,7) 1 (1,2) (10,1) 6 (10,3) (5,7) 3 5 (12,3) (2,2) custo tempo Caminho Path 1-2-4-6 mais cheap barato but demora: too slow: custo cost 3, 3 time 18 18 unidades de tempo 12 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Decomposição de Dantzig-Wolfe Exemplo visto na Aula 23: Time Constrained Shortest Path Example: Taken from the Primer Fonte: Desrosiers and Lübbecke (2005) Column Generation Chapter 1: A Primer in Column Generation Find: Resource constrained shortest path from 1 to 6 http://www.or.rwth-aachen.de/research/publications/primer.pdf Total traversal time must not exceed 14 units (1,10) 2 (1,1) (2,3) 4 (1,7) 1 (1,2) (10,1) 6 (10,3) (5,7) 3 5 (12,3) (2,2) custo tempo Caminho Path 1-3-2-4-6 ótimo: is optimal: custo 13 cost 13 13, unidades time 13 de tempo 12 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Time Constrained Shortest Path Seja c i,j o custo do arco (i, j), t i,j o tempo para percorrer o arco (i, j) e T = 14 o tempo total disponível para o percurso: min s.a. (i,j) A c i,jx i,j x i,j +1 se i é a origem (i = 1) x i,j = 1 se i é o destino (i = 6) j:(j,i) A 0 caso contrário, t i,jx i,j T j:(i,j) A (i,j) A x i,j {0, 1} (i, j) A v V Vamos decompor o problema explorando o subproblema de caminho mínimo (que é fácil de resolver)! 13 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Time Constrained Shortest Path Podemos utilizar caminhos ao invés de arcos! x i,j = p P x p,i,j λ p (i, j) A λ p = 1 p P λ p 0 p P P é o conjunto de todos os caminhos do nó 1 ao 6 x p,i,j = 1 se o arco (i, j) está no caminho p e 0 caso contrário λ p = 1 é a restrição de convexificação p P 14 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Time Constrained Shortest Path Agora vamos substituir x i,j no problema original: min s.a. c i,jx p,i,jλ p p P (i,j) A p P (i,j) A t i,jx p,i,jλ p T x i,j = p P x p,i,jλ p (i, j) A λ p = 1 p P λ p 0 x i,j Z + p P (i, j) A Relaxando a integralidade, podemos remover o link entre x i,j e x p,i,j. 15 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exemplo: Time Constrained Shortest Path Problema Mestre min s.a. c i,jx p,i,jλ p p P (i,j) A p P (i,j) A λ p = 1 p P λ p 0 t i,jx p,i,jλ p T (π) (τ) p P Pricing Encontre um caminho p tal que: c p = c i,jx p,i,j t i,jx p,i,jπ τ < 0 (i,j) A (i,j) A 16 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
y 0 + λ 1246 + λ 1356 + λ 13256 + λ 1256 = 1 π 0 yexemplo: 0, λ 1246 Time, Constrained λ 1356, λshortest 13256, Path λ 1256 0 olution z π 0 π 1 c p c p t p Solução ótima do 100.0 exemplo 100.00 visto na 0.00 Aula 23 97.0 1246 3 18 2, λ 1246 = 0.78 24.6 100.00 5.39 32.9 1356 24 8 Fonte: Desrosiers and Lübbecke (2005): 0.6, λ 1356 = 0.4 11.4 40.80 2.10 4.8 13256 15 10 λ 13256 λ= 1256 0.5= 0.8 e λ9.0 13256 30.00 = 0.2 1.50 2.5 1256 5 15 0.2, λ 1256 = 0.8 7.0 35.00 2.00 0 (1,10) 1 (10,3) (1,2) 2 0.2 (1,1) (2,3) (5,7) 0.8 4 3 5 (12,3) (10,1) (1,7) 6 (2,2) = 0.8, x 13 = x 32 = 0.2, x 25 = x 56 = 1 Como fazer branching? 2018 The Basics 41/128 17 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
y 0 + λ 1246 + λ 1356 + λ 13256 + λ 1256 = 1 π 0 yexemplo: 0, λ 1246 Time, Constrained λ 1356, λshortest 13256, Path λ 1256 0 olution z π 0 π 1 Podemos utilizar as variáveis x i,j = c p c p t p 100.0 100.00 0.00 y 97.0 i,j,k λ 1246 3 18 j,k 2, λ 1246 = 0.78 24.6 100.00 5.39 32.9 1356 24 8 k K j 0.6, λ 1356 = 0.4 11.4 40.80 2.10 4.8 13256 15 10 λ 13256 = 0.5 9.0 30.00 1.50 2.5 1256 5 15 0.2, λ x 1,2 0.8, x 1,3 = 0.2, x 2,5 = 1.0, x 3,2 = 0.8, x 5,6 = 1.0 1256 = 0.8 7.0 35.00 2.00 0 (1,10) 1 (10,3) (1,2) 2 0.2 (1,1) (2,3) (5,7) 0.8 4 3 5 (12,3) (10,1) (1,7) 6 (2,2) = 0.8, Se x 13 selecionarmos = x 32 = 0.2, xx 25 = x 56 = 1 1,2 teremos dois branches: x 1,2 = 0 e x 1,2 = 1. 2018 The Basics 41/128 18 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
ranching on Fractional Arcs Exemplo: Time Constrained Shortest Path Branch x 1,2 = 0: O que muda? What 1 Oelse arco (1, can 2) we é removido do? Next do grafo obvious do pricing! is to branch on fractional 2 As variáveis arc variables, λ 1246 e λ 1256 like sãox removidas 12 = 0.8 do mestre. 2 (1,1) (2,3) 4 (1,7) 1 (1,2) (10,1) 6 Branch x 12 = 0 (10,3) (5,7) 3 5 (12,3) (2,2) Problema: pode ser necessário utilizar variáveis artificiais In subproblem: Arc (1, 2) is removed from graph In RMP: Variables λ 1246 and λ 1256 must be eliminated; re-optim 19 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
ranching on Fractional Arcs Exemplo: Time Constrained Shortest Path Branch x 1,2 = 1: O que muda? What 1 Oelse arco (1, can 3) we é removido do? Next do grafo obvious do pricing! is to branch on 2 fractional Variáveis arcontendo variables, o arco like (1, x3) 12 são = removidas 0.8 do mestre. (1,10) 2 (1,1) (2,3) 4 (1,7) 1 (10,1) 6 Branch x 12 = 1 (5,7) 3 5 (12,3) (2,2) Novamente, pode ser necessário utilizar variáveis artificiais In subproblem: Arcs (1, 3) and (3, 2) are removed In RMP: Variables corresponding to paths containing these ar 20 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Aula de Hoje 1 Branch-and-Price Exemplo: Problema da Alocação Generalizada 2 Decomposição de Dantzig-Wolfe e Branch-and-Price Exemplo: Problema da Alocação Generalizada 3 Exemplo adicional: Time Constrained Shortest Path 4 Exercício Prático 20 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Exercício: Aplique a Decomposição de Dantzig-Wolfe no modelo a seguir, de forma que as restrições de alocação formem o(s) problema(s) de pricing. max. s.a. n m i=1 j=1 l i,jx i,j m x i,j = 1 i {1,..., n} j=1 n r i,jx i,j c j j {1,..., m} i=1 x ij {0, 1} i, j 1 Apresente as formulações do problema mestre e do(s) pricing(s). 2 Descreva um algoritmo branch-and-price para resolver o problema considerando a formulação da questão 1. 3 Implemente a geração de colunas para resolver a relaxação linear da formulação proposta. (dica: utilize o código apresentado na última aula) 21 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Solução: Questão 1 Problema mestre: max. s.a. ( n ) m l i,jx i,j,k λ k k K i=1 j=1 ( n ) r i,jx i,j,k λ k c j j {1... m} (π) k K i=1 λ k = 1 (µ) k K Problema de pricing: encontrar uma alocação! Note que cada tarefa é independente no pricing e, portanto, poderíamos criar um pricing para cada tarefa. ( n ) m min. (l i,j r i,jπ j) x i,j µ s.a. i=1 j=1 m x i,j = 1 i {1... n} j=1 x i,j {0, 1} i {1... n}, j {1... m} 22 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
Solução: Questão 2 Podemos utilizar a regra de branching discutida anteriormente para o PAG, baseada nas variáveis originais x i,j. Detectamos uma tarefa i sendo parcialmente executada em uma máquina j, e criamos dois branches: x i,j = 0 impede que a tarefa i seja executada pela máquina j 1 Todas as colunas k em que x i,j,k = 1 são fixadas em 0 (λ k = 0) 2 No problema de pricing, adicionamos a restrição x i,j = 0 x i,j = 1 força que a tarefa i seja executada pela máquina j 1 Todas as colunas k em que x i,j,k = 0 são fixadas em 0 (λ k = 0) 2 No problema de pricing, adicionamos a restrição x i,j = 1 Solução: Questão 3 Código disponível no site da disciplina: http://www.decom.ufop.br/toffolo 23 / 23 Túlio Toffolo Otimização Linear e Inteira Aula 26: Branch-and-Price
/ 12 Perguntas?