You are on page 1of 36

Programao Linear Inteira Introduo Limitao importante programao linear: As variveis de deciso devem poder tomar valores no inteiros

ros (para a divisibilidade ser possvel)

Em muitos problemas prticos as variveis de deciso s fazem sentido se forem inteiras: E.g., afectao de pessoas, mquinas e veculos a actividades. No faz sentido afectar meia pessoa ou 0.75 mquinas.

Um problema que possa ser formulado como um problema de programao linear, mas que necessite de variveis inteiras, constitui um problema de programao linear inteira Geralmente diz-se apenas programao inteira. O modelo matemtico para a programao inteira o da programao linear adicionando a restrio de as variveis serem inteiras. Quando a restrio de ser inteira apenas se aplica a algumas das variveis temos um problema de programao inteira mista

Outra aplicao da programao inteira: Quando so necessrias decises do tipo sim-ou-no Devemos iniciar um determinado projecto? Devemos construir uma fbrica em determinado local? Duas escolhas - podemos utilizar variveis inteiras binrias xj = 0, se a deciso j for no xj = 1, se a deciso j for sim

Exemplo A COMPANHIA DE PRODUO DAS BEIRAS pretende construir um nova fbrica em Castelo Banco ou na Guarda ou mesmo duas fbricas, uma em cada cidade. Tambm est interessada em construir, no mximo, mais um armazm, mas este dever ser construdo numa cidade onde tambm for construda uma fbrica. O lucro estimado de cada uma das opes apresentado na quarta coluna da tabela abaixo. Na quinta coluna est o custo de cada uma das opes. H um limite de 10 milhes de contos para o investimento a efectuar. O objectivo consiste em identificar a alternativa que maximiza o lucro estimado.

Deciso 1 2 3 4

Pergunta Sim-ou-No Fbrica em Castelo Branco? Fbrica na Guarda Armazm em Castelo Branco? Armazm na Guarda

Varivel x1 x2 x3 x4

Lucro 9 5 6 4

Custo 6 3 5 2

Restries Como a construo dos armazns mutuamente exclusiva necessitamos da restrio x3 x4 1

Como a deciso 3 apenas pode ser sim se a deciso 1 tambm o for necessitamos de uma restrio que o garanta x3 x1

Desta forma x3 pode ser 1 ou 0 quando x1 for 1 e apenas 0 quando x1 for 0. Da mesma forma, a deciso 4 s pode ser positiva quando a deciso 2 tambm o for. x4 x2

Modelo completo O modelo completo para este problema de programao inteira binria seria maximizar Z sujeito a 6 x1 x1 x2 e 3x2 5x3 x3 x3 x4 2 x4 x4 10 1 0 0 9 x1 5x2 6 x3 4 x4

1,2,3,4 Outras Formulaes com Variveis Binrias

Exceptuando o seu pequeno tamanho, este exemplo ilustra vrias caractersticas tpicas dos problemas reais de programao inteira: Decises mutuamente exclusivas, onde apenas uma deciso num grupo pode ser sim Decises contigentes, quando uma deciso est dependente de outras decises, e.g. uma deciso pode apenas ser sim se outra tambm for sim.

Outras situaes em que til uma formulao utilizando variveis binrias Restries do tipo ou-exclusivo Imagine-se o caso em que apenas uma de duas restries deve ser respeitada: 3x1 2 x 18 2 ou x1 4 x2 16 3x1 x1 ou 3x1 x1 2 x2 4 x2 18 16 M 2 x2 4 x2 18 16 M

Sendo M um nmero positivogrande, isto pode ser rescrito como

Utilizando a varivel auxiliar binria y podemos garantir que apenas uma das restries satisfeita enquanto a outra eliminada. Corresponde questo binria Qual das restries deve ser mantida? K de N restries devem ser respeitadas O caso anterior pode ser generalizado assumindo que temos N restries das quais apenas K devem ser respeitadas Assumindo as seguintes N restries f1 ( x1 , x2 ,..., xn ) f 2 ( x1 , x2 ,..., xn ) f N ( x1 , x2 ,..., xn ) dN d1 d2

Utilizando a mesma lgica do caso anterior o problema pode ser formulado utilizando N variveis binrias auxiliares e uma nova restrio

Formulao para que K das N restries sejam satisfeitas f1 ( x1 , x2 ,..., xn ) f 2 ( x1 , x2 ,..., xn ) f N ( x1 , x2 ,..., xn ) N i 1 com yi binrio para i yi N dN My N K d1 d2 My1 My 2

1,2,..., N

A penltima restrio garante que K variveis auxiliares tero valor 0, correspondendo s restries a respeitar.

Funes com N valores possveis Considere-se o caso em que uma funo poder apenas tomar um de N valores possveis

f ( x1 , x2 ,..., xn )

d1 ou d 2 ou... ou d N

A formulao correspondente em programao inteira ser

f ( x1 , x2 ,..., xn ) N i 1 yi

N d i yi i 1 1 1,2,..., N

com yi binrio para i

O problema do custo fixo comum uma actividade ter um custo fixo de arranque Nesse caso o custo total de uma actividade j pode ser representado por fj(xj)

k j c j x j se x j 0 0 se x j 0

onde xj corresponde ao nvel, kj ao custo inicial e cj ao custo do incremento da actividade j. Imagine-se que h n actividades, cada uma com a estrutura de custo anterior e que se pretende minimizar Z f1 ( x1 ) f 2 ( x2 ) ... f n ( xn )

sujeito a algumas restries de programao linear. Fazendo n perguntas do tipo Ser a actividade j realizada? e criando as respectivas variveis auxiliares binrias o problema pode ser formulado como um problema de programao linear mista: minimizar Z n j 1 (c j x j kjyj)

com e

xj

My j

0 1,2,..., n

y j binrio para j

alm das outras possveis restries de PL

Programao Linear Inteira Outras Formulaes com Variveis Binrias

Nesta formulao

yj

1 0

se x j se x j

0 0

o que garantido pelas restries xj My j 0

Para uma actividade j existir xj ter de ser > 0, o que implica que yj dever ser 1 ou a restrio anterior no ser satisfeita.

Representao binria de nmeros inteiros Imagine-se que temos um problema de programao inteira pura onde a generalidade das variveis so binrias, mas que a existncia de algumas variveis inteiras no permite que problema seja resolvido como um problema de programao inteira binria Se soubermos que os limites a uma varivel inteira x so 0 x u

e se N for definido como um inteiro tal que N N 1

Programao Linear Inteira Outras Formulaes com Variveis Binrias

Ento a representao binria de x N x i 0 i 2 yi

onde yi so variveis binrias auxiliares Substituindo as ocorrncias de cada varivel inteira com a sua representao binria obtemos um problema de programao inteira binria. No esquecer que temos de utilizar um conjunto de variveis auxiliares diferentes para cada varivel.

Exemplo Temos um problema de programao inteira com muitas variveis binrias e em que apenas x1 e x2 so inteiras. Entre as diversas restries existem as seguintes x1 2 x1 3x2 5 30

Isto implica que u=5 para x1 com N=2 e u=10 para x2 com N=3 Podemos ento fazer x1 y 0 2 y1 4 y 2 E, substituindo nas restries, obtemos 2 y1 4 y1 4 y2 8 y2 3 y3 6 y4 12 y5 24 y6 x2 y3 2 y4 4 y5 8 y6

y0 2 y0

5 30

Outras Formulaes com Variveis Binrias Alguns cuidados com a utilizao de variveis binrias Mesmos em problemas em que todas as variveis so inteiras e limitadas possvel utilizar a tcnica anterior. Isto no no entanto aconselhvel devido exploso do nmero de variveis envolvidas. Aplicar um bom algoritmo de PI ao problema inicial dever em geral ser mais eficiente do que aplicar um bom algoritmo de PIB a um modelo inteiro binrio muito maior. Mesmo um problema com apenas 100 variveis binrias pode ser um desafio em termos computacionais.

Exerccio Um casal est a tentar reorganizar as tarefas domsticas l em casa (compras, cozinhar, lavar loua e lavar roupa) de forma a que cada um fique com duas tarefas e o tempo que cada um passa nelas seja o mnimo possvel :) A eficincia de cada um em cada tarefa varia, e o tempo que cada um precisa para realizar uma tarefa apresentado na tabela seguinte: Horas Precisas por Semana Compras Ana Z 4.5 4.9 Cozinhar 7.8 7.2 Loua 3.6 4.3 Roupa 2.9 3.1

Construa um modelo de PIB para este problema Resoluo de Problemas de PI

Pode parecer que os problemas de programao inteira devero ser razoavelmente fceis de resolver: Os problemas de PL podem ser resolvidos de forma muito eficiente Os problemas de PI tm menos solues a ser consideradas Problemas de PI puros tm um nmero finito de solues

Dupla falcia O nmero de solues ser finito no implica que seja pequeno Num problema de PIB com n variveis h 2n solues

Impossvel de simplesmente enumerar todas as solues Os melhores algoritmos no podem garantir a soluo de todos os problemas, mesmo relativamente pequenos (< 100 variveis) Segunda falcia : pensar que diminuir o nmero de solues (retirando as no inteiras) facilita a soluo. Na verdade a existncia destas solues que garante a eficcia da resoluo de problemas de PL. Como resultado os problemas de PL so muito mais fceis de resolver do que os de PI

Como consequncia os algoritmos de PI tentam incorporar o mais possvel o mtodo simplex Partes do problema de PI so dadas ao simplex para resolver, normalmente com as restries das variveis serem inteiras levantadas. Para qualquer problema PI, o correspondente em PL chamado uma relaxao do problema inicial

so

Os dois factores principais para a dificuldade computacional de um problema de PI o nmero de variveis inteiras, ao contrrio dos problemas de PL em que o nmero de restries mais importante alguma estrutura especial interna, que permita que algoritmos especiais sejam desenvolvidos para lidar com esse problema em particular (e.g. problemas de afectao, transporte, etc.)

E porque que no arredondamos? Devido dificuldade de resoluo de problemas de programao inteira por vezes tentador tentar aplicar o simplex relaxao linear arredondando depois os resultados

Esta abordagem pode ser adequada para alguns problemas, sobretudo quando os valores so suficientemente grandes para que o arredondamento no introduza erros significativos

Existem, no entanto, duas possibilidades de erro A soluo ptima para o problema de PL pode no ser vivel para o problema de PI depois de arredondada Mesmo que o arredondamento seja vivel, nada garante que a soluo encontrada seja ptima para o problema de PI

Resoluo de Problemas de PI Situao em as solues arredondadas no so viveis:

x2 3

As solues arredondadas no so viveis (3/2,2) Soluo ptima para a relaxao linear

0 1 2 3

x1

Situao em que a soluo arredondada est longe do ptimo x2 3

Soluo ptima para o problema de PI Soluo ptima para a relaxao linear Z*=10=x 1+5x2 Soluo arredondada

0 1 2 3

x1

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Ramifica-e-limita (branch-and-bound) Como qualquer problema puro de PI tem apenas um nmero finito de solues possveis natural considerar a utilizao de um mtodo de enumerao para encontrara um ptimo. Infelizmente o nmero de solues , geralmente, muito grande. Torna-se imperativo que o mtodo utilizado seja suficientemente estruturado para que apenas uma muito pequena parte das solues possveis sejam realmente examinadas. O ramifica e limita um algoritmo que apresenta essa qualidade.

Conceito bsico Dividir para reinar (divide-and-conquer) Como o problema original frequentemente demasiado grande para resolver directamente, vai sendo dividido em problemas cada vez menores at que estes problemas possam ser conquistados

Diviso Consiste em particionar (ramificar) o conjunto de solues possveis em conjuntos cada vez menores.

Conquista Uma possibilidade consiste em identificar limites para a qualidade da melhor soluo num subconjunto, eliminando-o se se verificar ser impossvel ele conter uma soluo ptima.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Os passos de ramificao, limitao e eliminao sero descritos utilizando o seguinte exemplo de PIB: Maximizar sujeito a 6x1 x1 x2 e com x j binrio para j Z 9 x1 5x2 6 x3 4 x4

3x2

5x 3 x3 x3

2 x4 x4 x4

10 1 0 0

1,2,3,4

Ramificao

Quando estamos a lidar com variveis binrias a forma mais simples de particionar um conjunto de solues consiste em fixar o valor de uma das variveis. Podemos, por exemplo, fazer x1=0 para um subconjunto de solues e x1=1 para outro subconjunto Se fizermos a substituio no problema inicial obtemos dois novos subproblemas. Estes novos problemas so mais simples, mais pequenos do que o inicial.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Sub-problema 1 (x1=0) Maximizar sujeito a 3x2 Z 5x2 6x 3 4x 4

5x 3 x3 x3

2 x4 x4 x4

10 1 0 0

x2 e com x j binrio para j Sub-problema 2 (x1=1) Maximizar sujeito a 3x2 Z 9 5x 2

2,3,4

6 x3

4 x4

x2

5x 3 x3 x3

2 x4 x4 x4

4 1 0 0

e com x j binrio para j

2,3,4

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

A imagem seguinte mostra esta diviso sob a forma de rvore A raiz corresponde ao problema inicial Os ramos levam a nodos que correspondem aos novos problemas, originados pela diviso do anterior

x1 0 I 1

Esta rvore chamada rvore soluo ou rvore de enumerao

Continua a ramificar-se conforme o algoritmo vai progredindo A varivel que vai permitindo esta ramificao, ao serem-lhe atribudos valores, chamada varivel de ramificao Existem muitos mtodos sofisticados de fazer esta ramificao embora aqui escolhamos sempre as variveis na sua ordem natural

Limitao Para cada um dos sub-problemas agora necessrio calcular um limite qualidade da sua melhor soluo. Isto geralmente feito resolvendo um verso simplificada (relaxada) do problema. Esta relaxao geralmente obtida eliminando uma ou mais restries do problema Para problemas de programao inteira as restries mais problemticas costumas ser aquelas que obrigam as variveis a ser inteiras. A relaxao consiste assim em eliminar este conjunto de restries passando a considerar um problema de programao linear.

Programao Linear Inteira

Ramifica-e-Limita Aplicado PIB

Uma primeira forma ilustrada pelo nodo x1=0 na rvore de eliminao Note-se que a soluo (0, 1, 0, 1) para a relaxao correspondente a esse nodo uma soluo inteira Esta deve portanto ser tambm a soluo ptima para o prprio subproblema 1 Esta soluo deve ser guardada como a primeira soluo candidata para o problema, juntamente com o seu valor de Z (este valor costuma ser denotado por Z*) Temos portanto Z*=9 Podemos agora eliminar o sub-problema 1, j que outras sub- divises deste apenas podem conduzir a piores solues.

Os resultados acima sugerem uma segunda forma de eliminar sub-problemas. No existe necessidade de examinar nenhum problema cujo limite seja menor ou igual a 9 (Z*), j que uma soluo com esta qualidade j est garantida.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Este caso no se d para j no nosso problema, j que o nodo restante tem um limite de 16. Pode no entanto vir a ser til em futuros sub-problemas descendentes do que agora temos. Conformes novas solues candidatas forem sendo encontradas com valores superiores de Z*, mais fcil se ir tornado a eliminao de sub-problemas.

A terceira forma de eliminao de um sub-problema a mais simples. Se o mtodo simplex no conseguir encontrar solues possveis para a relaxao linear de um sub-problema ento este tambm no dever ter solues e pode ser eliminado E1: O

Sumrio dos testes de eliminao

limite do problema menor ou igual a Z* E2: A relaxao linear no tem solues E3: A soluo ptima para a relaxao linear inteira (passa a ser a nova soluo e o teste E1 aplicado a todos os sub-problemas por eliminar)

x1 0 I 9=Z* (0,1,0,1) 1 16 E3

Aplicao dos teste ao nosso problema:

16

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Sumrio do Ramifica-e-Limita para PIB Inicializao: Z * Aplicam-se os passos de limitao, eliminao e o teste de optimalidade descritos abaixo ao problema total. Se no for eliminado, classifica-se o problema como o primeiro subproblema sobre o qual ser realizada a primeira iterao do algoritmo Passos de cada iterao: 1. Ramificao Entre os sub-problemas restantes escolhe-se o criado mais recentemente para ser ramificado Novos ramos so criados fixando a prxima varivel 2. Limitao Para cada sub-problema resultante calcula-se o seu limite aplicando o mtodo simplex sua relaxao linear 3. Eliminao Para cada sub-problema resultante aplicam-se os trs testes definidos anteriormente Testes de optimalidade Terminar quando no houver sub-problemas, a soluo candidata actual ptima. Seno, executar outra iterao.

Porqu escolher o sub-problema mais recente para ramificao e no aquele que tiver maior limite (mais promissor)? Reoptimizao no simplex.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Completando o exemplo Iterao 2 Resta apenas o sub-problema correspondente ao nodo x1=1 Vamos ramificar este sub-problema fixando x2 Sub-problema 3 (x1=1, x2=0) Z 9 6x 3 4 x4 Sub-problema 4 (x1=1, x2=1) Maximizar sujeito a 5x3 x3 x3 x4 Z 14 6 x3 4 x4

Maximizar sujeito a

2 x4 x4

10 1 0 0

5x3 x3 x3

2 x4 x4 x4

1 1 1 1

e com x j binrio para j

3,4

e com x j binrio para j

3,4

Limite para o sub-problema 3 4 ( x1 , x2 , x3 , x4 ) (1,0, ,1), com Z 5 Z 13 Limite para o sub-problema 4 1 ( x1 , x2 , x3 , x4 ) (1,1,0, ), com Z 2

13

4 5

16

16

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Todos os testes de eliminao falham Como ainda temos sub-problemas, passamos iterao seguinte rvore soluo no fim da segunda iterao x1 0 9=Z* I 16 1 16 (0,1,0,1) E3 x2 0 13 (1,0,4/5,0) 1 16 (1,1,0,1/2)

Iterao 3 Os dois sub-problemas restantes forma criados simultaneamente Vamos ramificar o sub-problema 4 j que tem maior limite (fixando x3) Sub-prob. 5 (x1=1, x2=1,x3=0) Sub-prob. 6 (x1=1, x2=1, x3=1) Z 14 4x 4 sujeito a Maximizar Z 20 4 x 4 sujeito a

Maximizar

2x4 x4 x4

1 1 1

2x4 x4 x4 0 1

e com x 4 binrio

e com x 4 binrio

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

Limite para o sub-problema 5 ( x1 , x2 , x3 , x4 ) Z 16 (1,0,0, 1 ), com Z 2 16

Limite para o sub-problema 6 No tem solues possveis O sub-problema 6 eliminado pelo teste E2, enquanto o subproblema 5 passa os trs testes Como ainda temos sub-problemas, passamos iterao seguinte rvore soluo no fim da terceira iterao x1 0 I 16 9=Z* (0,1,0,1) 1 16 E3 x2 0 13 x3 0 16 (1,1,0,1/2) 1 E2

1 16

Iterao 3

Os sub-problemas correspondendo aos nodos (1,0) e (1,1,0) esto ainda activos, tendo o correspondente ao (1,1,0) sido criado mais recentemente Vamos ramificar o sub-problema 5 fixando x4

Programao Linear Inteira Ramifica-e-Limita Aplicado PIB

x4 x4

Como x4 a ltima varivel, fixar o seu valor cria uma soluo nica, em vez de novos sub-problemas As solues nicas so ento 0: 1: ( x1 , x2 , x3 , x4 ) ( x1 , x2 , x3 , x4 ) (1,1,0,0) possvel, com Z (1,1,0,1) impossvel 14

Aplicando os testes de eliminao, possvel verificar que a primeira soluo passa o teste E3, enquanto a segunda passa o teste E2. Alm do mais, a primeira soluo melhor do que a actual melhor candidata, passando por isso a ser a nova melhor candidata, com Z*=14 Como uma nova melhor candidata foi encontrada, vamos aplicar de novo o teste de eliminao E1 a todos os sub-problemas activos. Como o valor de Z (13) para o nico sub-problema (3) activo menor ou igual a Z*(14) o problema eliminado. No h mais problemas - soluo ptima! x1 0 9 I 16 E3 x2 0 13 E1 x3 0 16 1 x4 0 14=Z* (1,1,0,0)

rvore soluo final: 16

1 16 1 E2

E2

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Vamos agora considerar o problema genrico de Programao Inteira Mista I variveis so inteiras (embora no necessariamente binrias) e as restantes so continuas. O problema a ser considerado : Maximizar Z n cjxj j 1

sujeito a e xj 0, para j

n aij x j j 1

bi , para i

1,2,...,m

1,2,...,n 1,2,...,I ; I n

x j inteiro, para j

Com I=n, o problema resume-se a um problema de PI pura.

Vamos descrever um algoritmo do tipo ramifica-e-limita para este problema Estrutura semelhante ao utilizado para problemas de PIB A resoluo de relaxaes PL continua a fornecer a base para os passos de limitao e eliminao Apenas so necessrias 4 alteraes ao algoritmo para que ele possa resolver problemas de PIM

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Alterao 1 Escolha da varivel de ramificao Anteriormente: a varivel seguinte na ordem natural das variveis era escolhida Agora: apenas as variveis inteiras com valor no-inteiro na soluo ptima para o subproblema corrente so consideradas. Escolhe-se a primeira destas variveis para ramificao.

Alterao 2 Valores atribudos varivel de ramificao na criao dos novos subproblemas. Anteriormente: variveis binrias fixadas a 0 e a 1 davam origem aos dois novos subproblemas. Agora: variveis inteiras, logo seria ineficiente criar um subproblema para cada valor possvel So criados apenas dois subproblemas, especificando dois intervalos para a varivel de ramificao Se xj for a varivel de ramificao, xj * for o seu valor (no-inteiro) na soluo actual da relaxao PL do problema e [xj] maior inteiro

x* j

teremos como intervalos para os novos subproblemas * [ x j] e x *


j

[x

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Por exemplo, se xj*=3.5 xj 3e xj 4

sero as restries que que sero acrescentadas, cada uma delas, a um novo subproblema

As duas alteraes anteriores combinadas podem produzir um fenmeno interessante, chamado varivel de ramificao recorrente Ilustrado na figura abaixo Um primeiro par de subproblemas foi criado fazendo x1 3 e x1 Se a resoluo de uma relaxao LP do primeiro subproblema obtiver um valor ptimo de 1.25 para x1 esta varivel volta a aparecer com varivel de ramificao (da a recorrncia) 4

Se ainda mais tarde um novo valor de 0.75 for obtido para x1, a varivel produz uma nova ramificao, mas desta vez com x1=0 e x1=1, j que no pode tomar outros valores no intervalo restante [0, 1] x1 = 0 x1 x1 I 3 ... (1.25,...) x1 x1 4 2 1 ... (0.75,...) x1 = 1

(3.5,...)

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Alterao 3 Envolve a etapa de limitao. Anteriormente: num problema de PI pura o valor de Z para a soluo ptima era arredondado para baixo para obter o limite Agora: como algumas variveis podem no ser inteiras o valor de Z tomado como limite sem arredondamento

Alterao 4 Envolve o terceiro teste de eliminao E3. Anteriormente: com um problema de PI pura o teste consistia em eliminar um ramo quando todos os valores das variveis eram inteiros na soluo ptima da relaxao LP Agora: este teste requer apenas que os valores das variveis inteiras (j que pode haver delas contnuas) sejam tambm inteiros.

Sumrio do Ramifica-e-Limita para PIB Inicializao: Z * Aplicam-se os passos de limitao, eliminao e o teste de optimalidade descritos abaixo ao problema total. Se no for eliminado, classifica-se o problema como o primeiro subproblema sobre o qual ser realizada a primeira iterao do algoritmo

Programao Linear Inteira

Ramifica-e-Limita Aplicado PIM

Passos de cada iterao: 1. Ramificao Entre os sub-problemas restantes escolhe-se o criado mais recentemente para ser ramificado De entre as variveis inteiras com valores no inteiros na soluo ptima, escolhe-se a primeira para varivel de ramificao Seja x1 a varivel e x1* o seu valor ptimo Criam-se dois novos subproblemas acrescentando ao anterior as restries respectivas x j * [ x j ] e xj 2. Limitao * [ xj ] 1

Para cada subproblema resultante calcula-se o seu limite aplicando o mtodo simplex sua relaxao linear (no se arredonda o valor de Z) 3. Eliminao Para identificar os problemas a eliminar aplicam-se os trs testes seguintes a todos os novos subproblemas E1: O limite do problema menor ou igual a Z* E2: A relaxao linear no tem solues E3: A soluo ptima para a relaxao linear tem valores inteiros para as variveis inteiras (se for melhor do que a anterior passa a ser a nova soluo e o teste E1 aplicado a todos os subproblemas por eliminar) Teste de optimalidade Terminar quando no houver sub-problemas, a soluo candidata actual ptima. Seno, executar outra iterao.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Exemplo Vamos ilustrar a aplicao deste algoritmo resolvendo o seguinte problema de programao inteira mista: Maximizar sujeito a x1 x1 6 x1 x1 e xj 0, j 1,2,3,4 1,2,3 x2 5x 2 2 x3 2 x4 5x 3 x3 10 1 0 3 Z 4 x1 2 x2 7 x3 x4

x j inteiro, j

Inicializao Depois de fazermos Z* criamos a relaxao linear deste problema apagando as restries que obrigam xj a ser inteiro, para j=1,2,3.

Resultado da aplicao do mtodo simplex relaxao inteira: ( x , x 2, x , x ) 4 1 3 ( 5 3 7 , , ,0), com Z 4 2 4 14 1 4

Como h solues admissveis e a soluo ptima tem valores no inteiros para variveis inteiras o problema no eliminado e passamos primeira iterao.

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Iterao 1 A primeira varivel inteira com valor no-inteiro na soluo ptima x1=5/4, logo x1 a varivel escolhida para ramificao. So criados dois subproblemas: Subproblema 1 (S1) Problema original mais a restrio x1 Subproblema 2 (S2) Problema original mais a restrio x1 1

Removendo as restries das variveis serem inteiras e aplicando o mtodo simplex obtm-se os resultados seguintes S1: ( x1 , x 2 , x 3 , x 4 ) (1, 6 9 ,0), com Z , 5 5 14 1 5

S2: No tem solues admissveis, logo eliminado (teste E2) x1 I 14.25 1

14.20 (1,6/5,9/5,0)

(5/4,3/2,7/4,0)

x1

2 E2

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

Iterao 2 Temos apenas um subproblema, correspondendo ao nodo x1 1 A primeira varivel inteira neste problema com valor no-inteiro na soluo ptima x2=6/5, logo x2 a varivel escolhida para ramificao. So criados dois subproblemas: Subproblema 2 (S3) S1 mais a restrio x2 Subproblema 2 (S4) S1 mais a restrio x2 2 1

Removendo as restries das variveis serem inteiras e aplicando o mtodo simplex obtm-se os resultados seguintes S3: ( x1 , x 2 , x 3 , x 4 ) 5 11 ,0), com Z ( ,1, 6 6 5 11 ,0), com Z ( ,2, 6 6 14 1 6 1 6

S4:

( x1 , x 2 , x 3 , x 4 )

12

Como ambos os problemas tm soluo e valores no-inteiros para variveis inteiras no conseguimos eliminar nenhum deles e devemos passar a uma nova iterao

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

x2 x1 I 14.25 x1 E2 2 1

14 1/6 (5/6,1,11/6,0) x2 2 12 1/6 (5/6,2,11/6,0)

14.20

Iterao 3 Como problemas restantes foram criados simultaneamente, vamos escolher para ramificar aquele com maior Z, i.e. S3 A primeira varivel inteira neste problema com valor no-inteiro na soluo ptima x1=5/6, logo x1 (de novo) a varivel escolhida para ramificao. So criados dois subproblemas: Subproblema 5 (S5) S3 mais a restrio x1 Subproblema 6 (S6) S3 mais a restrio x1 1, logo x1=1

0, logo x1=0

Removendo as restries das variveis serem inteiras e aplicando o mtodo simplex obtm-se os resultados seguintes

Programao Linear Inteira Ramifica-e-Limita Aplicado PIM

S5:

( x1 , x 2 , x 3 , x 4 )

(0,0,2,

1 2

), com Z

13

1 2

S6: No tem solues admissveis, logo eliminado (teste E2) Tambm podemos eliminar S5 j que a soluo tem valores inteiros para todas as variveis inteiras (E3) Passamos consequentemente a ter uma nova soluo candidata com Z*=13.50 Como temos um nova soluo candidata temos de aplicar o teste E1 a todos os problemas em aberto (neste caso apenas S4) S4 eliminado j que o seu limite menor do que Z* Como no temos mais problemas o algoritmo termina devolvendo a soluo candidata actual como soluo ptima.

rvore soluo final: x1 = 0 E3 x2 x1 I 14.25 x1 E2 2 1 1 Z*=13.50 (0,0,2,1/2) x1 = 1 E2

14 1/6

14.20 x2 2 E1 12 1/6