Você está na página 1de 2

Problema de programação inteira Problema de programação inteira

Pesquisa em árvore Pesquisa em árvore


Problemas em Programação Inteira Problemas em Programação Inteira

Nesta aula. . .

max z = c1 x1 + c2 x2 + . . . + cn xn
sujeito a a11 x1 + a12 x2 + . . . + a1n xn ≤ b1
a21 x1 + a22 x2 + . . . + a2n xn ≤ b2
...
1 Pesquisa em árvore am1 x1 + am2 x2 + . . . + amn xn ≤ bm
x1 , x2 , . . . , xn ∈ Z+

2 Problemas em Programação Inteira


Recorde:

Programação inteira pura — todas as variáveis são inteiras.

Programação inteira mista — apenas algumas das variáveis têm de


ser inteiras.

Relaxação linear — problema linear em que se omitem todas as


restrições de integralidade das variáveis.
João Pedro PEDROSO Métodos de Apoio à Decisão João Pedro PEDROSO Métodos de Apoio à Decisão

Problema de programação inteira Problema de programação inteira


Pesquisa em árvore Pesquisa em árvore
Problemas em Programação Inteira Problemas em Programação Inteira

Pesquisa em árvore Pesquisa em árvore: exemplo

Resolver a relaxação linear (obtendo x LP , z LP )


maximizar z = 21x1 + 11x2
Repartir a região admissível, por forma a remover a solução anterior
sujeito a : 7x1 + 4x2 ≤ 13
Repetir, enquanto houver variáveis fracionárias
x1 , x2 ∈ Z+

João Pedro PEDROSO Métodos de Apoio à Decisão João Pedro PEDROSO Métodos de Apoio à Decisão

Problema de programação inteira Problema de programação inteira


Pesquisa em árvore Pesquisa em árvore
Problemas em Programação Inteira Problemas em Programação Inteira

Pesquisa em árvore: exemplo Pesquisa em árvore: alternativas

Pesquisa não-informada:
em profundidade (depth-first search, DFS)
em largura (breadth-first search, BFS)
Pesquisa informada:
best-first search

João Pedro PEDROSO Métodos de Apoio à Decisão João Pedro PEDROSO Métodos de Apoio à Decisão

Problema de programação inteira Problema de programação inteira


Pesquisa em árvore Pesquisa em árvore
Problemas em Programação Inteira Problemas em Programação Inteira

Pesquisa em árvore Pesquisa em árvore: alternativas

Resolver a relaxação linear (obtendo x LP , z LP ) Pontos em que são necessárias decisões na pesquisa em árvore:
1 se na solução todas a variáveis forem inteiras: a solução é óptima para o Escolha da variável para ramificar
problema original 1 Frequentemente: a mais fracionária, embora haja muitas heurísticas
2 caso contrário: z LP fornece um majorante para z ∗ (em maximização; em
alternativas.
minimização é um minorante)
Repartir a região admissível: Escolha do nó da árvore de pesquisa a seleccionar:
Pesquisa não-informada:
1 escolher uma variável fracionária
em profundidade (depth-first search, DFS)
2 adicionar restrições que impeçam a variável de voltar a ter esse valor em largura (breadth-first search, BFS)
Escolher um dos subproblemas Pesquisa informada:
best-first search: o nó com melhor majorante/minorante
Repetir, enquanto houver variáveis fracionárias o nó com a menor diferença (em termos absolutos) entre a variável inteira e a
Terminar quando não houver nenhum subproblema por explorar. fracionária

João Pedro PEDROSO Métodos de Apoio à Decisão João Pedro PEDROSO Métodos de Apoio à Decisão
Problema de programação inteira Problema de programação inteira
Pesquisa em árvore Pesquisa em árvore
Problemas em Programação Inteira Problemas em Programação Inteira

Problema da mochila Problema de sequenciamento de tarefas


Exemplo: um campista prepara a sua viagem, estando a considerar levar (ou
É-nos dada uma lista de n trabalhos que devem ser executados numa
não) quatro artigos (indivisíveis) numa mochila. O limite de peso para que a
máquina, e para cada trabalho i o tempo de processamento ti e a data de
viagem seja confortável é de 14 kg. A cada um dos artigos foi atribuído um
entrega di .
valor do benefício esperado por o ter na viagem: (16, 22, 12, 8), e os pesos
Pretende-se saber qual é a ordem de execução que minimiza o atraso total
respetivos são (5, 7, 4, 3). Pretende-se determinar os artigos a levar para
(i.e., a soma dos atrasos para todos os trabalhos).
maximizar o seu valor.
I — conjunto de artigos seja xij = 1 se o trabalho i é o j-ésimo a ser executado;
ci — benefício/valor atribuído ao artigo i, i ∈ I começa-se por particionar as soluções de acordo com o último trabalho
ai — peso do artigo i, i ∈ I a ser processado;
P
maximizar z = ci xi isso dá origem a n ramos na raiz da árvore de pesquisa
P i∈I
sujeito a i∈I ai xi ≤ b
para P
cada nó i pode-se determinar um minorante no atraso total:
xi ∈ {0, 1}, ∀i ∈ I di − nj=1 tj ;
no nível seguinte, o minorante
P no atraso total no nó i é o atraso no
Neste caso, a relaxação linear pode ser resolvida facilmente: colocar na
primeiro nível mais di − n−1
j=1 tj ;
mochila os objetos disponível por ordem do rácio ci /ai ; para o primeiro
objeto que não couber, colocar a fração que ainda cabe, enchendo continua-se desta forma, até atingir as folhas da árvore de pesquisa; aí,
completamente a mochila. em vez de um minorante teremos o atraso total da solução
A ramificação é feita escolhendo a variável fracionária xk , e fazendo correspondente.
num ramo xk = 0 e no outro xk = 1.
João Pedro PEDROSO Métodos de Apoio à Decisão João Pedro PEDROSO Métodos de Apoio à Decisão

Você também pode gostar