Você está na página 1de 21

20/09/2017

Complementos de Investigação Operacional (Parte I) Ano letivo 2017/2018 1º Semestre Ana Moura (ana.moura@ua.pt) Gabinete 10.3.23
Complementos de
Investigação Operacional
(Parte I)
Ano letivo 2017/2018
1º Semestre
Ana Moura
(ana.moura@ua.pt)
Gabinete 10.3.23
Programa 1. Programação Inteira (Programação linear inteira mista) a. Introdução e Aplicações de programação inteira b.
Programa
1.
Programação Inteira (Programação linear inteira mista)
a.
Introdução e Aplicações de programação inteira
b.
Modelação com variáveis inteiras e modelação com variáveis 0-1
c.
Métodos e técnicas de resolução
i.
ii.
Algoritmo Branch-and-Bound
Técnicas enumerativas

20/09/2017

Problemas de Otimização Linear Não Linear Contínua Inteira Combinatória Método gráfico Simplex Ponto Interior
Problemas de Otimização
Linear
Não Linear
Contínua
Inteira
Combinatória
Método gráfico
Simplex
Ponto Interior
Problemas de Otimização Linear Não Linear Contínua Inteira Combinatória Método gráfico Pesquisa em árvore – Ramificação
Problemas de Otimização
Linear
Não Linear
Contínua
Inteira
Combinatória
Método gráfico
Pesquisa em árvore – Ramificação e Limitação
(Branch and Bound)
Planos de Corte

20/09/2017

Programação Linear Inteira • Um problema de Programação Linear Inteira (PLI) é um problema de Programação
Programação Linear Inteira
• Um problema de Programação Linear Inteira (PLI) é um problema de
Programação Linear (PL) em que todas ou alguma(s) das suas variáveis são
discretas (têm de assumir valores inteiros):
Quando todas as variáveis de decisão são inteiras -> Programação Linear Inteira Pura
(PLIP);
Se parte das variáveis de decisão são inteiras -> Programação Linear Inteira Mista (PLIM);
Se todas as variáveis de decisão são binárias -> Programação Inteira Binária Pura (PIBP);
Se parte das variáveis de decisão são binárias -> Programação Inteira Binária Mista (PIBM).
Modelo Formal Problema Linear correspondente (Relaxação do PI, dado que se “alarga” o domínio das variáveis
Modelo Formal
Problema Linear correspondente
(Relaxação do PI, dado que se “alarga” o domínio das
variáveis de decisão de N 0 para R)

20/09/2017

Problemas típicos de PI • • • • • • • Problema de Afetação Problema do
Problemas típicos de PI
Problema de Afetação
Problema do Caixeiro Viajante
Problema da Mochila
Problema de Cobertura
Problema de Partição de Conjuntos
Problema de Seleção de Projetos
Problema de Localização
Aplicações de PI(B) • Análise de Investimentos • Escolha de Local • Desenho de uma rede
Aplicações de PI(B)
• Análise de Investimentos
• Escolha de Local
• Desenho de uma rede de produção e distribuição
• Distribuição de mercadorias
• Programação de atividades inter-relacionadas
• Aplicações em linhas aéreas
• etc ..

20/09/2017

Condições expressas através de variáveis binárias • Restrições mutuamente exclusivas (ou-ou, então) •K de N restrições
Condições expressas através de variáveis
binárias
Restrições mutuamente exclusivas (ou-ou, então)
•K de N restrições devem ser válidas
Funções com N valores possíveis
Representação binária de variáveis inteiras genéricas
Métodos de resolução de problemas PI • Comparativamente com os problemas PL, os problemas PI têm
Métodos de resolução de problemas PI
Comparativamente com os problemas PL, os problemas PI têm um menor número de soluções a
serem consideradas, o que não quer dizer que mesmo assim não seja um número muito grande.
Ex: Um problema PIB com n variáveis tem 2 n soluções a serem consideradas. Se:
n=10 -> <1000 soluções
• n=100 -> 1.000.000 soluções
Tem um crescimento exponencial.
•A maioria dos algoritmos bem sucedidos para PI incorpora o método Primal do Simplex (ou o
Dual), relacionando partes do problema PI, com o correspondente problema PL.
Isto é, é o mesmo problema exceto com o facto da restrição inteira ter sido eliminada ->
Relaxamento PL ou Relaxação Linear.

20/09/2017

Métodos de resolução de problemas PI • Porque não se resolve então por um procedimento aproximado,
Métodos de resolução de problemas PI
Porque não se resolve então por um procedimento aproximado, aplicando o Simplex à
relaxação PL e depois arredondam-se os valores?
Métodos de resolução de problemas PI • Conclui-se assim que são necessários métodos que examinem apenas
Métodos de resolução de problemas PI
Conclui-se assim que são necessários métodos que examinem apenas uma parte do conjunto
de soluções admissíveis e que aproveitem as vantagens do algoritmo Simplex.
Exatamente com estas características, existem dois métodos: o Método dos Planos de Cortes
(Cutting Planes) e o Método de Partição e Avaliação Sucessivas (Branch and Bound).
De facto, ambos utilizam o algoritmo Simplex para chegar à solução ótima de problemas de
PL, cuja região admissível vai sendo sucessivamente reduzida, até se alcançar a solução do
problema de PLI. Estes métodos são gerais, pois podem ser aplicados a qualquer modelo de
PLI.

20/09/2017

Método dos planos de corte •O método dos Planos de Corte (Cutting Planes) foi o primeiro
Método dos planos de corte
•O método dos Planos de Corte (Cutting Planes) foi o primeiro método a ser desenvolvido
e deve-se a Gomory (1958).
Consiste em introduzir, sucessivamente, novas restrições na relaxação linear do PLI.
Essas restrições cortam o conjunto das soluções possíveis, eliminando algumas delas e a
própria solução ótima do PL (por isso se chamam planos de corte), sem contudo eliminar
qualquer solução inteira.
Método dos planos de corte • Exemplo: António, proprietário da empresa de brinquedos “Toys ’r’ Tony”,
Método dos planos de corte
• Exemplo:
António, proprietário da empresa de brinquedos “Toys ’r’ Tony”, decidiu criar uma secção de
brinquedos tradicionais de madeira, começando por apenas dois tipos de brinquedos:
pequenos cavalos de baloiço (lucro unitário de 2400u.m.)
comboios antigos (lucro unitário de 1500u.m.).
Cada cavalo requer uma hora de trabalho e 9 m 2 de madeira, enquanto que cada comboio
requer uma hora de trabalho e 5 m 2 de madeira. Supondo que estão disponíveis 6 horas de
trabalho e 45 m 2 de madeira, que quantidades deve fabricar, de forma a maximizar o lucro?

20/09/2017

Método dos planos de corte
Método dos planos de corte
Método dos planos de corte •O primeiro passo consiste na resolução da relaxação linear do PLI
Método dos planos de corte
•O primeiro passo consiste na resolução da relaxação linear do PLI

20/09/2017

Método dos planos de corte • Como na solução ótima da relaxação linear, os valores das
Método dos planos de corte
Como na solução ótima da relaxação linear, os valores das variáveis não são inteiros, há que
gerar um plano de corte.
Para tal, basta considerar a restrição, do quadro ótimo do Simplex da relaxação linear, cujo
termo independente tenha a parte fracionária mais próxima de 0.5, e reescrever essa
restrição separando a parte inteira da parte fracionária.
Qualquer uma das partes fracionárias dos
termos independentes se encontram
igualmente próximas de 0.5.
Qualquer das restrições pode ser considerada
Método dos planos de corte Escolhendo a 1ª restrição: x 1 - 1.25f 1 +0.25f 2
Método dos planos de corte
Escolhendo a 1ª restrição: x 1 - 1.25f 1 +0.25f 2 =3.75
e escrevendo-a sob a forma: membro com coeficientes inteiros = membro com
coeficientes fracionários: x 1 - 2f 1 -3=0.75-0.75f 1 -0.25f 2
•O novo plano de corte a acrescentar ao modelo, traduz a restrição, membro com
coeficientes fracionários, ou seja:
0.75-0.75f 1 -0.25f 2 <=0
Pela definição de variáveis de folga, f 1 =6-x 1 -x 2 e f 2 =45-9x 1 -5x 2
x 1 - 2x 2 <=15

20/09/2017

Método dos planos de corte
Método dos planos de corte
Método dos planos de corte 1. A nova restrição “cortou” o conjunto das soluções possíveis, eliminando
Método dos planos de corte
1.
A nova restrição “cortou” o
conjunto das soluções possíveis,
eliminando a solução ótima da
relaxação linear, mas não
eliminando qualquer solução
inteira.
2.
Como a solução ótima deste
novo modelo de PL é inteira, ela
é a solução ótima do PLI.
3.
Se a solução encontrada ainda
não fosse inteira, gerar-se-ia
novo corte, e assim
sucessivamente.

20/09/2017

Método dos planos de corte • Qualquer corte gerado por este método tem, então, duas propriedades:
Método dos planos de corte
Qualquer corte gerado por este método tem, então, duas propriedades:
1ª) Qualquer solução possível do PLI, satisfaz o corte.
2ª) A solução ótima da relaxação linear, não satisfaz o corte.
Demonstra-se (Gomory, 1958) que se atinge a solução ótima do PLI após um número finito de
cortes.
(Apesar desta propriedade o método dos planos de corte caiu em desuso)
Método dos planos de corte • Desvantagens do método de Gomory: Elevado trabalho computacional envolvido na
Método dos planos de corte
Desvantagens do método de Gomory:
Elevado trabalho computacional envolvido na resolução de problemas de grandes dimensões.
Embora o número de cortes seja finito, o seu número pode ser muito elevado (centenas ou milhares);
De cada vez que se gera um novo corte acrescenta-se uma nova restrição ao modelo original, o que significa que a
complexidade desse modelo é sempre crescente, podendo o trabalho computacional vir a tornar-se proibitivo apesar
de se dispor de um algoritmo de resolução muito eficiente como é o Simplex.
Se se interromper o método, antes de ele chegar ao fim, não se dispõe de qualquer solução inteira, ainda que não
seja ótima.

20/09/2017

Branch-and-Bound (Método de partição e avaliações sucessivas) •O método “Branch and Bound” (método de ramificação e
Branch-and-Bound
(Método de partição e avaliações sucessivas)
•O método “Branch and Bound” (método de ramificação e limitação) consiste:
Na partição (Ramificação) sucessiva do conjunto de soluções possíveis do problema de PLI em subconjuntos;
•E na limitação (Avaliação) do valor ótimo da função objetivo (limite inferior se se tratar de maximização,
ou superior se se tratar de minimização);
de modo a excluir os subconjuntos que não contenham a solução ótima.
Branch-and-Bound (Método de partição e avaliações sucessivas) • Começa-se por resolver a relaxação linear do PLI
Branch-and-Bound
(Método de partição e avaliações sucessivas)
Começa-se por resolver a relaxação linear do PLI inicial:
se as variáveis que no problema de PLI são inteiras tomam, na solução ótima do PL, valores inteiros, então foi
encontrada a solução ótima do PLI;
Caso contrário, divide-se o problema de PL em dois, através da introdução de restrições adicionais que fazem
a partição do conjunto das soluções possíveis.
Vão-se resolvendo sucessivos problemas de PL, estabelecendo-se limites para o valor ótimo
da função objetivo e, assim, eliminando diversos sub-conjuntos, até se alcançar a solução
ótima do PLI.

20/09/2017

Branch-and-Bound - PIM 1) Resolve-se a relaxação linear do problema: I. II. Se a solução é
Branch-and-Bound - PIM
1)
Resolve-se a relaxação linear do problema:
I.
II.
Se a solução é inteira, então obtém-se a solução ótima.
Caso contrário, criam-se dois novos sub-problemas ramificando-se uma variável fracionária.
2)
Um sub-problema não é ramificado quando:
I.
II.
Todas as variáveis na solução são inteiras;
A solução do sub-problema é não admissível.
3)
Escolhe-se um sub-problema onde existem variáveis fracionárias e ramifica-se sobre uma
delas.
4)
Repete-se até que já não hajam variáveis fracionárias.
Branch-and-Bound – PIM (Exemplo) Exemplo anterior: Solução relaxada
Branch-and-Bound – PIM
(Exemplo)
Exemplo anterior:
Solução relaxada

20/09/2017

Branch-and-Bound – PIM (exemplo) • Sabe-se que, o valor ótimo da função objetivo não pode exceder
Branch-and-Bound – PIM
(exemplo)
Sabe-se que, o valor ótimo da função objetivo não pode exceder 12375.
Como na solução ótima deste problema x 1 e x 2 não são inteiras, há a necessidade de efetuar
a sua partição, dando origem a dois novos sub-problemas (A e B), pela introdução de novas
restrições de eliminação de soluções não-inteiras: x 1 <=3 e x 1 >=4
Poder-se-ia escolher fazer a partição segundo a variável x 2
Branch-and-Bound – PIM (Exemplo) Partição
Branch-and-Bound – PIM
(Exemplo)
Partição

20/09/2017

Branch-and-Bound – PIM (Exemplo) •A solução ótima do sub-problema A é inteira, o que significa que
Branch-and-Bound – PIM
(Exemplo)
•A solução ótima do sub-problema A é inteira, o que significa que se encontrou uma solução
inteira cujo valor da função objetivo é 11700.
•O valor ótimo da função objetivo estará compreendido entre estes dois limites, 11700 <= F
<= 12375.
Como a solução ótima do sub-problema B não é inteira e o valor da função objetivo é 12300
(> 11700), este sub-problema pode conter uma solução inteira melhor que a do sub-
problema A;
Logo, é necessário efetuar a sua partição, dando origem aos sub-problemas B1 e B2, pela
introdução das restrições x 2 >= 2 e x 2 <= 1
Branch-and-Bound – PIM (Exemplo) Partição O sub-problema B1 não tem soluções possíveis, sendo por isso excluído.
Branch-and-Bound – PIM
(Exemplo)
Partição
O sub-problema B1 não tem soluções possíveis, sendo por isso
excluído.
O sub-problema B2, pelas mesmas razões do sub-problema B, é objeto
de partição e dá origem aos sub-problemas B21 e B22, pela
introdução das restrições x 1 <= 4 e x 1 >= 5

20/09/2017

Branch-and-Bound – PIM (Exemplo) Quer o subproblema B21, quer o subproblema B22, têm soluções inteiras. Partição
Branch-and-Bound – PIM
(Exemplo)
Quer o subproblema B21, quer o subproblema B22, têm soluções inteiras.
Partição
O valor ótimo da função objetivo do subproblema B21 é 11100 < 11700, ou
seja, pior do que a solução de que já dispúnhamos.
O valor ótimo da função objetivo do subproblema B22 é 12000, logo
atualizamos os limites e teremos 12000 <= F <= 12000.
Branch-and-Bound- PIM (Exemplo)
Branch-and-Bound- PIM
(Exemplo)

20/09/2017

Branch-and-Bound- PIM (Exemplo) •À medida que se vai “descendo” na árvore, vão-se atualizando os limites inferior
Branch-and-Bound- PIM
(Exemplo)
•À medida que se vai “descendo” na árvore, vão-se atualizando os limites inferior e superior
ao valor ótimo da função objetivo (F*):
No nó inicial (raiz da árvore), 0 <= F* <= 12375.
Ao nível dos subproblemas A e B, 11700 <= F* <= 12300.
No nível imediatamente inferior, 11700 <= F* <= 12167.
Por fim, no quarto e último nível, 12000 <= F* <= 12000.
Podemos então concluir que (x 1 , x 2 ) = (5, 0) ; F* = 12000 é a solução ótima, não fazendo
sentido efetuar uma nova partição.
Branch-and-Bound- PIM • Vemos assim que: 1. É efetuada a partição de um sub-problema, cuja solução
Branch-and-Bound- PIM
• Vemos assim que:
1.
É efetuada a partição de um sub-problema, cuja solução ótima tem pelo menos uma
variável que, sendo uma variável inteira no PLI inicial, assume valores não-inteiros, se esse
sub-problema puder conter uma solução inteira melhor do que a já existente.
2.
São logo eliminados os sub-problemas que não tenham soluções possíveis ou que não
possam conter uma solução possível melhor do que a já existente.

20/09/2017

Branch-and-Bound- PIM • Para além de ser, de um modo geral, menos trabalhoso resolver um modelo
Branch-and-Bound- PIM
• Para além de ser, de um modo geral, menos trabalhoso resolver um modelo
de PLI através deste método, do que através do método dos planos de corte,
ele apresenta a vantagem de:
•É possível interromper o método antes de encontrar a solução ótima e de dispor de
uma solução inteira, em relação à qual se pode ter uma ideia de quão próxima estará da
solução ótima, graças aos limites que se vão determinando.
Branch-and-Bound para problemas PIB • Pré-Processamento automático para problemas de PIB pura: • Fixar variáveis –
Branch-and-Bound para problemas PIB
Pré-Processamento automático para problemas de PIB pura:
Fixar variáveis – se o valor de uma variável, não puder satisfazer uma dada restrição mesmo quando as
outras satisfazem a restrição no seu melhor valor, então essa variável deve ser fixada noutro valor.
Eliminar restrições redundantes – Se uma restrição funcional satisfizer até mesmo a mais desafiadora
solução binária, então ela foi tornada redundante pelas restrições binárias e pode ser eliminada.
Redução de coeficientes ou geração de planos de corte - Um plano de corte é uma nova restrição que
reduz o espaço de soluções admissíveis para a relaxação linear sem eliminar nenhuma solução admissível do
problema PI.

20/09/2017

Pesquisa em árvore ou Enumeração Implícita em PIB • • • Um nó corresponde a uma
Pesquisa em árvore ou Enumeração Implícita
em PIB
Um nó corresponde a uma possível solução binária para x;
Dois nós interligados possuem a mudança no valor de uma variável;
Cada variável pode ter um de três estados: fixado em 1, fixado em 0 ou livre.
Passo adiante (Forward step): fixar uma variável em 1;
Passo atrás (Backtrack step): fixar uma variável em 0;
Pesquisa em árvore - PIB • Iteração típica para problemas de Maximização: Foward • Ramificação (Branching)
Pesquisa em árvore - PIB
• Iteração típica para problemas de Maximização:
Foward
• Ramificação (Branching) :
Backtrack
Dos nós criados mais recentemente, seleciona um
(desempate -o que tem maior limite) e relaxar a variável (x i )
atribuindo o valor 1;
Variáveis
Variáveis
Livres
Livres
Resolver o sub-problema com as restantes variáveis livres;
Fixar a mesma variável no valor 0 e repetir o processo para o sub-problema com x i = 0;

20/09/2017

Pesquisa em árvore - PIB • Iteração típica para problemas de Maximização: • Limitar (Bounding): •
Pesquisa em árvore - PIB
• Iteração típica para problemas de Maximização:
• Limitar (Bounding):
Resolver, em cada nó, o problema PL correspondente e determinar o valor ótimo do
problema PL.
Arredondar (para baixo) o valor não-inteiro.
Este será o valor do limite do sub-problema do respetivo nó.
Pesquisa em árvore - PIB • Iteração típica para problemas de Maximização: • Avaliar (Fathoming): 1.
Pesquisa em árvore - PIB
• Iteração típica para problemas de Maximização:
• Avaliar (Fathoming):
1.
Solução inteira: Se um dos novos nós tem uma solução inteira, o seu limite é
comparado aos limites das outras soluções similares. Se não tiver o melhor valor,
é fathomed. Se tiver o melhor valor passa a ser a nova melhor solução corrente Z
(Incumbent).
2.
Valor limite: se algum dosnovos nós, tem um limite menor do que do melhor nó
corrente Z (Fathom o nó).
3.
Não-admissível -A sua relaxação linear não tem solução admissível (Fathom o
nó);

20/09/2017

Pesquisa em árvore - PIB • Iteração típica para problemas de Maximização: • Paragem do algoritmo:
Pesquisa em árvore - PIB
• Iteração típica para problemas de Maximização:
• Paragem do algoritmo:
Pára quando não houverem mais sub-problemas. O nó com o melhor valor
é a solução do problema.
• Caso contrário, se ainda existirem nós para ser ramificados, faz-se uma nova
iteração.