Programação linear inteira
Variáveis inteiras e binárias, relaxação, branch and bound e cortes válidos.
Comprar máquinas exige quantidades inteiras. Uma solução LP que propõe de cada máquina pode servir de limite otimista, mas não de plano de compra executável. A programação linear inteira, ou ILP, acrescenta domínios inteiros a um modelo linear.
A relaxação, a ramificação e os cortes exploram essa diferença. A ideia comum é conservar todos os planos inteiros válidos enquanto se excluem soluções fracionárias ou ramos que não podem melhorar o melhor inteiro conhecido.
Variáveis binárias e modelos
Uma variável representa uma decisão sim/não. A mochila 0-1 fica
Numa atribuição de tarefas, significa atribuir a tarefa à pessoa . Para uma atribuição por tarefa, usa ; para no máximo tarefas por pessoa, . Compatibilidades podem excluir variáveis ou impor . Não dupliques a mesma tarefa na contagem por esquecer uma igualdade.
Um custo fixo de abrir uma instalação precisa de uma variável binária . Uma restrição permite atribuições apenas quando está aberta. deve ser um limite válido e tão apertado quanto o modelo permita. Um valor demasiado pequeno elimina soluções; um valor desnecessariamente grande enfraquece a relaxação e pode criar problemas numéricos.
Relaxação linear
Retirar a integridade alarga o conjunto de soluções. Para maximização, o ótimo LP é um limite superior do ótimo inteiro; para minimização, é um limite inferior. Se uma solução ótima da relaxação já for inteira em todas as variáveis exigidas, também é ótima no ILP, porque nenhuma solução inteira pode superá-la.
Considera
A relaxação tem ótimo e valor . Os pontos inteiros , e têm valor 2; nenhuma solução inteira atinge 3, pois somar as restrições dá . Como é inteiro, fica .
Arredondar não resolve o ILP
Arredondar cada coordenada pode violar uma desigualdade, uma igualdade ou uma exigência mínima. No modelo , , inteiros, minimizar tem relaxação ótima , valor 1. Arredondar ambos para baixo dá , que viola o mínimo; arredondar um para cima e outro para baixo viola a igualdade. A solução inteira ótima é , valor 2.
Mesmo um arredondamento admissível não é automaticamente ótimo, porque o valor LP sozinho não identifica o ponto inteiro que atinge o melhor valor possível.
Branch and bound com relaxações
Assumimos que as variáveis têm limites finitos, para que a árvore seja finita e cada relaxação admissível tenha um ótimo finito. Uma relaxação ilimitada exige análise própria; não é uma solução fracionária em que possamos aplicar diretamente estes passos.
Em cada nó, resolve a relaxação LP com as restrições herdadas. Num problema de maximização:
- Se a relaxação é inviável, poda o nó.
- Se o seu limite superior não supera o incumbente inteiro, poda o nó quando só precisas de um ótimo.
- Se a solução é inteira, atualiza o incumbente e fecha o nó.
- Caso contrário, escolhe uma variável inteira com valor fracionário e cria os ramos e .
Todos os valores inteiros de pertencem a um desses ramos. Não perdemos uma solução inteira e excluímos o ponto fracionário atual. Repetir a divisão em cada ramo mantém a cobertura do espaço de soluções.
Seguir o exemplo
Na raiz do exemplo, e limite . Ramifica em e .
No ramo , a restrição e forçam . É inteiro, valor 2, e passa a incumbente.
No ramo , a relaxação pode chegar a , valor . Esse limite ainda é maior que 2, portanto não basta para podar. Ramifica em e :
- Com , o ótimo é , valor 2.
- Com , força , valor 2.
A árvore regista a restrição acrescentada em cada ramo. Seguimos primeiro para obter um incumbente. Para mostrar os restantes ótimos, conservamos os ramos que empatam com ele.
Os três ramos inteiros atingem valor 2. Para devolver um único ótimo, bastaria fechar os ramos sem possibilidade de melhorar o incumbente; para devolver todos, precisamos de conservar os empates. Isso é necessário, mas não suficiente: uma relaxação que devolve uma solução inteira pode ter outros ótimos no mesmo nó. Fechá-lo ao encontrar a primeira solução serve para obter um ótimo; a enumeração precisa de continuar a procurar outras soluções de igual valor.
Podemos usar também que o objetivo tem valor inteiro: um limite permite o limite mais apertado . Com um incumbente de 2, a raiz já seria podável. Este arredondamento do limite é válido porque o objetivo assume valores inteiros em todas as soluções inteiras; não é arredondar uma solução fracionária.
A ordem DFS, BFS ou melhor-limite afeta tempo e memória. DFS segue um ramo; BFS processa primeiro os nós menos profundos; melhor-limite escolhe o nó com melhor limite otimista. Encontrar cedo uma boa solução inteira permite descartar outros nós já gerados, usando os seus limites. Não confundas gerar um filho com resolver a sua relaxação: um enunciado ou uma implementação deve dizer quando esse cálculo acontece. O pior caso continua exponencial. Um bom incumbente e limites apertados reduzem a árvore, mas não transformam o problema geral em LP.
Cortes válidos
Um corte acrescenta uma desigualdade satisfeita por todos os pontos inteiros admissíveis e violada pela solução fracionária atual. Reduz a relaxação sem retirar nenhuma solução inteira.
No exemplo, somar as restrições e usar a integridade de dá o corte . O ponto é eliminado; os três ótimos inteiros permanecem. Este corte prova diretamente o valor ótimo quando combinado com uma solução de valor 2.
A zona hachurada pertence à relaxação original, mas fica acima de . Os pontos preenchidos mostram todos os inteiros admissíveis: nenhum fica nessa zona.
Não basta desenhar uma linha que afaste o ponto atual. É necessário provar que a linha conserva todos os inteiros admissíveis, incluindo os que ainda não vimos.
Corte fracionário de Gomory
Numa formulação puramente inteira com variáveis não negativas, uma linha da base pode escrever-se
com e inteiros. Se é fracionário, usa a parte fracionária e acrescenta
A justificação vem de ser inteiro. Como e , esse inteiro é no máximo , logo no máximo . Subtrair da equação dá o corte.
Por exemplo, dá . Na solução básica fracionária atual, as não básicas violam o corte. Qualquer solução inteira da equação respeita-o. A parte fracionária de é , não ; usa o chão matemático, não truncar para zero.
Esta fórmula não se aplica sem alterações a uma linha com variáveis contínuas. ILP misto exige cortes adequados à mistura de domínios. Métodos modernos combinam ramificação e cortes, mas cada corte continua a precisar da mesma condição de validade.
Integridade e fluxo
Alguns modelos LP têm ótimos inteiros sem precisarem de procurar por ramificação. Em redes de fluxo com capacidades inteiras, os aumentos inteiros preservam integridade e atingem um ótimo inteiro. A estrutura dessas restrições permite métodos especializados polinomiais.
Não generalizes: uma matriz com coeficientes inteiros pode ter ótimo fracionário, como o exemplo , . Para usar integridade como propriedade do LP, precisamos de um resultado sobre a estrutura do modelo, não apenas sobre o aspeto dos coeficientes.
Relação com NP-completude
Podemos representar uma cláusula por , usando uma variável binária para literal positivo e para a sua negação. A atribuição satisfaz a fórmula se e só se cumpre todas essas desigualdades.
Por exemplo, dá . A transformação usa tamanho polinomial e mostra que viabilidade inteira já pode representar satisfazibilidade. Isto explica a dificuldade geral do ILP, apesar de as restrições serem lineares.
Exercícios
Apertar a relaxação por integridade
x e y são inteiros não negativos e cumprem 3x+2y≤11 e 2x+3y≤11. Deriva um corte para x+y e encontra o máximo inteiro dessa soma.
Pista
Soma as duas restrições e usa que x+y é inteiro.
Solução
O corte é x+y≤4, válido para todos os inteiros admissíveis porque x+y é inteiro e não pode ficar entre 4 e 4,4. O ponto (2,2) cumpre as restrições, pois ambas dão 10≤11, e atinge soma 4. Portanto o ótimo inteiro é 4. A relaxação pode ter (2,2;2,2), soma 4,4, que viola o corte e é eliminada.
Erros frequentes
Arredondar os coeficientes de uma restrição sem uma prova pode retirar pontos válidos. Aqui arredondámos o limite de uma quantidade que sabemos inteira.
Dividir sem perder inteiros
Num nó de maximização, a relaxação dá x=2,7 e objetivo 18,6. x tem de ser inteiro e o objetivo também tem de ser inteiro. O incumbente é 18. Que ramos corresponderiam a x e é necessário explorá-los para obter um ótimo?
Pista
Os inteiros não pertencem ao intervalo aberto entre 2 e 3.
Mais uma pista
Os ramos são x≤2 e x≥3. O objetivo de qualquer continuação inteira é no máximo floor(18,6).
Solução
A ramificação válida seria x≤2 ou x≥3, conservando todos os valores inteiros. Porém o limite superior inteiro do objetivo é 18. Como já existe uma solução inteira de valor 18, o nó pode ser podado sem explorar esses ramos para devolver um ótimo. Para enumerar todos os ótimos, o empate não permite podar. Se o objetivo não tivesse valores inteiros, não poderíamos apertar 18,6 para 18.
Confere a tua resposta:
- Dei os ramos x≤2 e x≥3.
- Usei a integridade do objetivo para limite 18.
- Expliquei a poda com incumbente 18 e o caso de todos os ótimos.
Erros frequentes
Criar x≤2,7 e x≥2,7 não exclui a solução fracionária na relaxação dos filhos. Arredondar a solução x não substitui a ramificação nem prova viabilidade.
Encontrar o incumbente antes de expandir
Numa maximização inteira, o objetivo assume valores inteiros e basta devolver um ótimo. A relaxação da raiz é fracionária, com limite 12, e gera A e B, por esta ordem. A é fracionário com limite 10,5 e gera A1 e A2, ambos inteiros, de valores 8 e 10. B já é inteiro e vale 11. Não há incumbente inicial. Compara DFS, começando por A, com BFS. Um nó só é resolvido quando sai da pilha ou fila; se o seu limite já é conhecido, pode ser descartado sem resolver de novo. Indica a ordem dos nós processados e os que deixam de precisar de exploração.
Solução
DFS processa raiz,A,A1,A2,B. A1 fornece incumbente 8; A2 melhora-o para 10. Depois B melhora-o para 11. As folhas inteiras não geram filhos. O valor final é 11.
BFS processa raiz,A,B. Depois de A, a fila contém B,A1,A2. B fornece incumbente 11 antes de chegar aos filhos de A. Os limites conhecidos de A1 e A2, respetivamente 8 e 10, já não o superam, pelo que ambos são descartados. São nós gerados, mas não precisam de voltar a ser processados. Também o limite 10,5 de A, apertado para 10 pelo objetivo inteiro, certifica que toda a sua subárvore não pode melhorar 11.
A ordem pode alterar o trabalho porque altera quando surge uma boa solução completa. Não altera a validade de um limite nem o ótimo. Em ambos os percursos, a solução B atinge 11 e os restantes ramos não o excedem.
Confere a tua resposta:
- Rastreei DFS: raiz,A,A1,A2,B.
- Rastreei BFS: raiz,A,B.
- Podei A1 e A2 em BFS pelo incumbente 11 e distingui gerar de processar.