680 likes | 898 Views
Programação inteira. Branch-and-bound. Aula baseada em diversas fontes: “Integer programming” de L. Wolsey, 1998. “Integer and combinatorial optimization” de Nemhauser e Wolsey, 1988 Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
E N D
Programação inteira Branch-and-bound Aula baseada em diversas fontes: “Integer programming” de L. Wolsey, 1998. “Integer and combinatorial optimization” de Nemhauser e Wolsey, 1988 Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware Slides do curso “Systems Optimization” – John Vande Vate, MIT Opencourseware
Como resolver problemas combinatórios • Exemplo: • três variáveis: • x1 • x2 • x3 • Cada uma delas pode assumir valores 0 ou 1. • Possibilidade: enumeração explícita (listar todas as soluções possíveis e verificar qual a melhor).
Através de ramificações, exploramos todas as possíveis soluções. Ex.: problema com três variáveis binárias problemas que precisam ser resolvidos Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Crescimento exponencial Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Crescimento exponencial Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Ideia básica • Enumeração implícita. Land and Doig, Econometrica, 28, 497-520
Relaxação • Ideia básica de vários métodos (incluindo branch-and-bound). z Min z
Relaxação • Ideia básica de vários métodos (incluindo branch-and-bound). • Duas condições: • O espaço factível da relaxação contém o espaço factível do problema original. • O valor objetivo da relaxação é melhor que o do problema original para cada solução factível possível.
Limitante dual • Ao se resolver um problema de minimização (maximização), uma relaxação nos fornece um limitante inferior (superior).
Limitante primal • Ao se resolver um problema de minimização (maximização), uma solução factível nos fornece um limitante superior (inferior).
S1 S2 S3 Composição de limitantes S e se fosse min ? Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Branch and bound (básico)
Retomando o exemplo da enumeração explícita. • Ideia: não resolver os nós folha, mas eliminar ramos anteriores da árvore (com o auxílio de limitantes). Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Prunning (optimality) Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Prunning (bound) Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Prunning (resumo) • poda por otimalidade: zt = max{ cx: x2 St} resolvido. • poda por limitante: • poda por infactibilidade: St = Wolsey, L. A., Integer Programming.Wiley-Interscience, 1998
Algoritmo Slides do curso “Optimization methods” – Dimitris BertsimasMIT Opencourseware
Comentários • A relaxação usada não necessariamente é a linear. • Frequentemente usa-se a relaxação linear devido, sobretudo, à eficiência computacional do método simplex. Slides do curso “Optimization methods” – Dimitris BertsimasMIT Opencourseware
Usando a relaxação linear Slides do curso “Optimization methods” – Dimitris BertsimasMIT Opencourseware
Exemplo Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo • Dificuldade: A árvore gerada se aproxima da árvore da enumeração explícita. Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Branch and bound (melhorando a performance)
Como melhorar o branch-and-bound ? Resposta 1: melhorando o limitante primal. Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo (com melhor limitante primal) Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo (com melhor limitante primal) Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Exemplo (com melhor limitante primal) Slides do curso “Optimization methods in management sciente” – J. Orlin et al., MIT Opencourseware
Limitante primal • Solução factível. • Maneiras de obtê-lo: • Heurísticas • Tipo de exploração da árvore
Limitante primal Obtenção “a priori”: • Heurísticas • Meta-heurísticas O branch-and-bound é usado, então, para provar a otimalidade.
Limitante primal (cplex) • Node Heuristic: “The node heuristic employs techniques to try to construct a feasible solution from the current (fractional) branch & cut node.” • Relaxation Induced Neighborhood Search (RINS) Heuristic: “ Relaxation induced neighborhood search (RINS) is a heuristic that explores a neighborhood of the current incumbent solution to try to find a new, improved incumbent. It formulates the neighborhood exploration as another MIP (known as the subMIP), and truncates the subMIP optimization by limiting the number of nodes explored in the search tree.” IBM ILOG Cplex user manual
Limitante primal (cplex) IBM ILOG Cplex reference manual
Melhorando a performance (intrinsecamente). Ou Questões de implementação no B&B
Divisão • Seja Si o espaço factível do nó i. Podemos dividir o nó i em dois nós, Si1 e Si2 , da seguinte forma: • selecionando d e x de maneira adequada tal que a solução atual, x0, não atenda nenhuma das restições:
Divisão • Possibilidade 1: • simples. • vantagem de adicionar apenas limites nas variáveis, não aumentando o tamanho da base.
Divisão • Possibilidade 2: • Dadas restrições da forma: • Uma solução x0 é infactível se, para qualquer Ql2 Q, • Uma ramificação possível é:
Seleção do nó • regras de seleção: • a priori • adaptativas
Seleção do nó • A priori (profundidade – depth-first): se o nó atual não for podado, o próximo nó a ser analisado é um dos seus filhos. Caso ele seja podado, volta-se na árvore (backtracking) até se encontrar um nó ativo. • Vantagens: • Uso de reotimização (hot-start) na resolução dos problemas lineares.* • soluções factíveis tendem a ser encontradas em níveis mais fundos da árvore.
*hot-start • Uma ramificação implica na adição de uma restrição (no problema primal) • = adição de uma coluna (variável) no problema dual. • A solução ótima do nó pai é factível para o nó filho (e, com frequência, não muito distante da solução ótima). Consequência: menos iterações do algoritmo simplex são necessárias para resolver o problema em cada nó.
Seleção do nó • A priori (largura – breadth first): todos os nós de um dado nível são considerados antes de se passar para o nível seguinte. • Pode ser interessante em heurísticas (beam search).
Seleção do nó • Adaptativas (melhor limitante): a ideia é explorar o nó que “promete” mais primeiro.