1. Cap´ıtulo 4
Programa¸c˜ao
Inteira/Mista
4.1 Restri¸c˜oes de Integralidade
Restri¸c˜oes de integralidade surgem quando a natureza do problema imp˜oe
que todas as suas vari´aveis de decis˜ao assumam apenas valores inteiros (integrais).
Problemas com esta caracter´ıstica s˜ao chamados de problemas de Programa¸c˜ao
Inteira. Problemas nos quais as vari´aveis de decis˜ao s´o podem assumir os valores
inteiros 0 e 1 s˜ao denominados de problemas de Programa¸c˜ao 0-1. Quando ape-
nas parte das vari´aveis est´a restrita a valores inteiros, diz-se que o problema ´e de
Programa¸c˜ao Inteira/Mista.
Os m´etodos tradicionais de Programa¸c˜ao Linear, em especial o m´etodo Sim-
plex, n˜ao levam diretamente em conta restri¸c˜oes de integralidade, o que n˜ao quer
dizer que n˜ao possam produzir solu¸c˜oes ´otimas inteiras. No Cap´ıtulo 3 as solu¸c˜oes
encontradas por m´etodos Simplex especializados para problemas de transporte e de
atribui¸c˜ao s˜ao naturalmente inteiras, porque os dados de entrada destes problemas
s˜ao inteiros e os m´etodos empregados exploram as estruturas especiais destes pro-
blemas para executar apenas opera¸c˜oes de adi¸c˜ao, subtra¸c˜ao e multiplica¸c˜ao, n˜ao
podendo assim gerar resultados n˜ao-inteiros.
Existem, entretanto, problemas importantes de planejamento que requerem
solu¸c˜oes ´otimas inteiras, mas que n˜ao apresentam propriedades que permitam obtˆe-
las por meio de programa¸c˜ao linear. Em geral os m´etodos da programa¸c˜ao linear
precisam ser adaptados para que forne¸cam respostas compat´ıveis com restri¸c˜oes de
integralidade. Embora a presen¸ca de vari´aveis inteiras em problemas de planeja-
mento j´a tenha sido abordada em cap´ıtulos anteriores, ´e neste que se inicia um
estudo mais detalhado de modelos e m´etodos de Programa¸c˜ao Inteira/Mista.
4.2 Exemplo Ilustrativo
Algumas propriedades b´asicas de problemas lineares-inteiros s˜ao discutidas
por meio do exemplo ilustrativo a seguir.
Exemplo 4.1 Um moveleiro fabrica dois tipos de pain´eis de madeira. Disp˜oe de
105
2. 106 Cap´ıtulo 4. Programa¸c˜ao Inteira/Mista
seis unidades de madeira e 28 horas de trabalho. O painel 1 consome duas unidades
de madeira e sete horas de trabalho; o painel 2, uma unidade de madeira e oito horas
de trabalho. Os lucros unit´arios dos pain´eis s˜ao de $120 e $80, respectivamente. O
moveleiro gostaria de maximizar seu lucro com a produ¸c˜ao de pain´eis.
A descri¸c˜ao acima admite a seguinte formula¸c˜ao por programa¸c˜ao linear-
inteira:
(PLI)
maximizar z = 120x1 + 80x2
sujeito a 2x1 + x2 ≤ 6,
7x1 + 8x2 ≤ 28,
com x1 e x2 vari´aveis inteiras n˜ao-negativas. A Figura 4.1 ilustra graficamente o
problema. Apenas os pontos assinalados com o s´ımbolo • s˜ao solu¸c˜oes vi´aveis para
o problema linear-inteiro (PLI).
PSfrag replacements
1
1
2
2
3
3
4
4
5
6
0 x1
x2
2x1 + x2 = 6
7x1 + 8x2 = 28
Solu¸c˜ao de
(PLIR)
Figura 4.1: Representa¸c˜ao gr´afica do problema (PLI).
A solu¸c˜ao ´otima do problema linear-inteiro relaxado, (PLIR), obtido ignorando-
se as restri¸c˜oes de integralidade sobre as vari´aveis de decis˜ao, ´e encontrada na in-
tersec¸c˜ao das restri¸c˜oes lineares: x1 = 20/9 e x2 = 14/9. Se a solu¸c˜ao ´otima obtida
fosse inteira, o problema (PLI) teria sido resolvido. O valor da fun¸c˜ao-objetivo na
solu¸c˜ao do problema linear relaxado ´e
zPLIR = 120(20/9) + 80(14/9) = 3520/9 391.1.
Uma primeira id´eia para for¸car a integralidade da solu¸c˜ao seria arredondar
3. 4.3. Modelos de Programa¸c˜ao Inteira 107
os valores ´otimos do problema (PLIR) para os inteiros mais pr´oximos, obtendo-se
x1 = 2 e x2 = 1. O valor da fun¸c˜ao-objetivo na solu¸c˜ao arredondada ´e zARR = 320.
Uma segunda id´eia, poss´ıvel quando o problema considerado apresenta um
n´umero relativamente pequeno de alternativas vi´aveis inteiras, seria resolver o pro-
blema por enumera¸c˜ao, isto ´e, determinar qual das alternativas vi´aveis inteiras
leva ao maior valor para a fun¸c˜ao-objetivo. A solu¸c˜ao ´otima do problema (PLI),
obtida por enumera¸c˜ao, ´e x1 = 3, x2 = 0 e zPLI = 360. Sua diferen¸ca percentual
em rela¸c˜ao `a solu¸c˜ao obtida por arredondamento ´e
360 − 320
360
11%.
Diferen¸cas percentuais da ordem de 10% de lucro costumam ser significativas
em problemas de planejamento. 2
Dado um problema de programa¸c˜ao linear-inteira (PLI) qualquer e sua vers˜ao
(PLIR) obtida relaxando-se (ignorando-se) restri¸c˜oes de integralidade, ent˜ao, em
termos de valores ´otimos das fun¸c˜oes-objetivos,
zPLI ≤ zPLIR
se o problema original for de maximiza¸c˜ao. No caso de minimiza¸c˜ao,
zPLI ≥ zPLIR.
A raz˜ao para as desigualdades ´e que a regi˜ao vi´avel do problema (PLIR)
cont´em todas as solu¸c˜oes vi´aveis inteiras do problema (PLI). Logo, o valor ´otimo
de (PLIR) ´e no m´ınimo igual ao de (PLI), podendo ser maior ou menor, depen-
dendo do tipo de formula¸c˜ao, maximiza¸c˜ao ou minimiza¸c˜ao. Esta propriedade ´e
freq¨uentemente explorada por m´etodos de programa¸c˜ao inteira.
4.3 Modelos de Programa¸c˜ao Inteira
Muitos problemas de planejamento podem ser formulados a partir de mode-
los de programa¸c˜ao inteira gen´ericos, e que por serem gen´ericos tˆem sido melhor
estudados na literatura da ´area. Alguns destes modelos s˜ao discutidos nesta se¸c˜ao.
Problema da Mochila
O chamado problema da mochila (knapsack problem) descreve a seguinte si-
tua¸c˜ao: certo indiv´ıduo possui uma mochila com capacidade para armazenar b
kilogramas. O indiv´ıduo precisa escolher as quantidades de n diferentes itens a
armazenar na mochila, sabendo que cada unidade do item i pesa ai kilogramas.
O indiv´ıduo atribui o valor pi a cada unidade do item i. O problema consiste em
maximizar o valor total dos itens a armazenar na mochila respeitando o seu limite
de capacidade.
4. 108 Cap´ıtulo 4. Programa¸c˜ao Inteira/Mista
Definindo xi como a quantidade do item i = 1, 2, . . . , n, o problema da mochila
assume a seguinte forma:
(PM)
maximizar z = p1x1 + p2x2 + · · · + pnxn
sujeito a a1x1 + a2x2 + · · · + anxn ≤ b,
com xi, i = 1, 2, . . . , n, vari´aveis inteiras n˜ao-negativas.
O problema da mochila surge com freq¨uˆencia em problemas de planejamento,
como no discutido a seguir.
Exemplo 4.2 Uma empresa est´a considerando investir em quatro novos projetos.
Os projetos gerariam um lucro l´ıquido presente de $16000, $22000, $12000 e $8000.
(O lucro l´ıquido presente, NPV em inglˆes, seria o lucro obtido ao longo dos anos
referido ao momento no qual a decis˜ao de investimento ´e tomada.) Os projetos exi-
giriam investimentos de $5000, $7000, $4000 e $3000, respectivamente. A empresa
disp˜oe de um total de $14000 para investimento nos quatro projetos. O objetivo da
empresa ´e determinar quais projetos devem receber investimentos para que o seu
lucro seja m´aximo.
Este problema se encaixa na formula¸c˜ao geral do problema da mochila definindo-
se as vari´aveis de decis˜ao como xi = 1 se o projeto i ´e selecionado, e xi = 0, caso
contr´ario (i = 1, 2, 3, 4). Expressando valores em $1000, obt´em-se o seguinte pro-
blema de programa¸c˜ao linear-inteira;
(P)
maximizar z = 16x1 + 22x2 + 12x3 + 8x4
sujeito a 5x1 + 7x2 + 4x3 + 3x4 ≤ 14,
com xi = 1 ou xi = 0, i = 1, 2, 3, 4. (O problema (P) poderia ser classificado como
um problema de programa¸c˜ao 0-1.)
A seguir discute-se a introdu¸c˜ao de restri¸c˜oes adicionais como exerc´ıcio de
modelagem de problemas de programa¸c˜ao inteira. Se a empresa resolver investir em
no m´aximo dois projetos (devido a limita¸c˜oes de recursos humanos, por exemplo),
ent˜ao uma restri¸c˜ao do tipo
x1 + x2 + x3 + x4 ≤ 2
deve ser agregada ao problema (P). Se investir no projeto 2 implicar em investir no
projeto 1, a restri¸c˜ao a ser agregada ao problema (P) deve ser
x2 ≤ x1.
Para evitar investimentos simultˆaneos nos projetos 1 e 4, acrescenta-se ao
problema (P) a restri¸c˜ao
x1 + x4 ≤ 1.
2
5. 4.3. Modelos de Programa¸c˜ao Inteira 109
Problema do Caixeiro Viajante
O problema do caixeiro viajante (travelling salesman problem) pode ser re-
sumido da seguinte forma: um vendedor parte para visitar um certo n´umero de
cidades antes de retornar `a sua cidade de origem. Qual a ordem das visitas que
minimiza a distˆancia total percorrida?
O problema do caixeiro viajante possui in´umeras e importantes aplica¸c˜oes em
planejamento. Empresas transportadoras de grande porte, por exemplo, freq¨uente-
mente recorrem a programas computacionais para resolver problemas de rotea-
mento, isto ´e, determinar quais rotas percorrer para atender pedidos de entrega e
coleta de encomendas de forma a minimizar seus custos totais de transporte.
Denomina-se tour qualquer solu¸c˜ao vi´avel para o problema do caixeiro vi-
ajante, isto ´e, qualquer solu¸c˜ao pela qual o caixeiro visita cada cidade uma vez
e retorna `a sua cidade de origem, n˜ao necessariamente percorrendo um caminho
m´ınimo. Num problema envolvendo n cidades existem n! possibilidades de tours,
pois de uma cidade qualquer deve-se passar a uma das n − 1 restantes, e ent˜ao
para as n − 2 restantes, e assim sucessivamente, at´e restar apenas uma cidade a ser
visitada. Se n = 11, ent˜ao o n´umero total de tours seria 10! = 3628800. Observe
que n˜ao ´e necess´ario especificar uma cidade de origem quando se adota o conceito
de tour.
Para obter o modelo matem´atico inicial de um problema com n cidades, define-
se como vari´aveis de decis˜ao, para i, j = 1, 2, . . . , n,
xij =
1, se o tour segue diretamente da cidade i para a cidade j;
0, caso contr´ario
Para que ocorra um tour, exatamente uma cidade deve ser visitada depois da
cidade i, o que se traduz nas n restri¸c˜oes
n
j=1,j=i
xij = 1, i = 1, 2, . . . , n. (4.1)
Um segundo conjunto de n restri¸c˜oes imp˜oe que exatamente uma cidade deve
ser visitada antes da cidade j:
n
i=1,i=j
xij = 1, j = 1, 2, . . . , n. (4.2)
As 2n restri¸c˜oes (4.1) e (4.2) s˜ao similares `as presentes em problemas de atri-
bui¸c˜ao, discutidos no cap´ıtulo anterior.
O objetivo no problema do caixeiro viajante ´e minimizar a distˆancia total
percorrida. Denotando por cij o custo de deslocamento entre as cidades i e j,
obt´em-se a seguinte fun¸c˜ao-objetivo:
z =
n
i=1
n
j=1,j=i
cijxij. (4.3)
6. 110 Cap´ıtulo 4. Programa¸c˜ao Inteira/Mista
O modelo matem´atico inicial do problema consiste em minimizar (4.3) sujeito
`as restri¸c˜oes (4.1) e (4.2). Este modelo possui solu¸c˜oes vi´aveis que n˜ao s˜ao tours.
Exemplo: considere um modelo envolvendo n = 8 cidades e as seguintes vari´aveis
assumindo valor igual a 1: x13, x32, x26, x64, x41, x57, x78 e x85. Todas as 2n = 16
restri¸c˜oes s˜ao satisfeitas, mas a solu¸c˜ao n˜ao corresponde a um tour. Existem, na
verdade, dois subtours: um composto por x13, x32, x26, x64, x41; outro formado
por x57, x78 e x85. Para que qualquer solu¸c˜ao vi´avel corresponda a um tour ´e
necess´ario incorporar novas restri¸c˜oes ao modelo, o que n˜ao ser´a feito nesta discuss˜ao
introdut´oria do problema.
Exemplo 4.3 Problemas envolvendo o seq¨uenciamento de tarefas s˜ao muitas vˆezes
modelados como problemas do tipo caixeiro viajante. Considere a produ¸c˜ao di´aria
de uma ind´ustria qu´ımica, que inclui a produ¸c˜ao de tintas nas cores branco, verme-
lho, amarelo e preto. Como a ind´ustria usa o mesmo equipamento para produzir
todos os tipos de cores, uma limpeza entre bateladas – produ¸c˜oes de cores diferentes
– ´e necess´aria. A tabela a seguir resume os tempos de limpeza entre bateladas, em
minutos. As linhas da tabela representam cores correntes; as colunas, cores a serem
produzidas em seguida. O objetivo da ind´ustria ´e determinar a seq¨uˆencia ´otima de
produ¸c˜ao di´aria das quatro cores que minimiza o tempo total de limpeza (setup).
Branco Amarelo Preto Vermelho
Branco – 10 17 15
Amarelo 20 – 19 18
Preto 50 44 – 25
Vermelho 45 40 20 –
Este problema se enquadra no modelo do problema do caixeiro viajante associando-
se cores a cidades. Denotando as cores por 1, 2, 3 e 4 (branco, amarelo, preto e
vermelho), os tempos de limpeza por cij, as vari´aveis de decis˜ao por xij = 1, se o
tour vai dar cor i para a cor j, e xij = 0, caso contr´ario, obt´em-se diretamente o
modelo matem´atico do problema. Como comentado, a solu¸c˜ao ´otima do problema
pode n˜ao ser um tour. O tour ´otimo obtido por enumera¸c˜ao ´e produzir as cores
na seq¨uˆencia 1,2,4,3 (branco, amarelo, vermelho, preto), com um tempo m´ınimo
total de limpeza igual a 98 minutos. 2
4.4 M´etodo Branch–and–Bound
Nesta se¸c˜ao apresenta-se um m´etodo geral para resolu¸c˜ao de problemas de pro-
grama¸c˜ao inteira, conhecido como m´etodo branch–and–bound. Um exemplo simples
ser´a usado para motivar o desenvolvimento do m´etodo. Considere o problema de
programa¸c˜ao inteira
(P1)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
7. 4.4. M´etodo Branch–and–Bound 111
sendo x1 e x2 vari´aveis inteiras n˜ao-negativas. As solu¸c˜oes vi´aveis do problema (P1)
s˜ao representadas pelo s´ımbolo • na Figura 4.11.
PSfrag replacements
1
1
2
2
3
3
4
4
5
5
6
0 x1
x2
2x1 + x2 = 6
2x1 + 3x2 = 9
Figura 4.11: Solu¸c˜oes vi´aveis do problema (P1).
A solu¸c˜ao ´otima do problema (P1), obtida por enumera¸c˜ao expl´ıcita das
alternativas vi´aveis, ´e x1 = 0 e x2 = 3, com z = 12. O m´etodo branch–and–
bound pode ser visto como um m´etodo de enumera¸c˜ao impl´ıcita, porque explora
todo o conjunto vi´avel do problema sem recorrer `a enumera¸c˜ao de todas as suas
alternativas vi´aveis.
Algoritmo Branch–and–bound
O algoritmo branch–and–bound para problemas de maximiza¸c˜ao pode ser des-
crito em trˆes passos principais:
1: Primeira Aproxima¸c˜ao. Ignore as restri¸c˜oes de integralidade e resolva o pro-
blema de programa¸c˜ao linear resultante. Se a solu¸c˜ao ´otima encontrada for
integral, isto ´e, se os valores ´otimos das vari´aveis de decis˜ao forem todos
n´umeros inteiros, ent˜ao o problema de programa¸c˜ao inteira tamb´em sido re-
solvido e o algoritmo termina. Caso contr´ario, o valor ´otimo encontrado para
z se transforma num limitante superior, LS, para o valor ´otimo do pro-
blema com as restri¸c˜oes de integralidade. No exemplo acima, a solu¸c˜ao ´otima
do problema sem as restri¸c˜oes de integralidade ´e x1 = 2.25 e x2 = 1.5, com
z = 12.75. Faz-se LS = 12.75;
2: Ramifica¸c˜ao (branching) Se na primeira aproxima¸c˜ao, uma das vari´aveis,
xj por exemplo, possuir valor n˜ao-inteiro, ent˜ao i1 ≤ xj ≤ i2, com i1 e
8. 112 Cap´ıtulo 4. Programa¸c˜ao Inteira/Mista
i2 representando n´umeros inteiros n˜ao-negativos consecutivos. Dois novos
problemas s˜ao criados acrescentando-se ao problema original as restri¸c˜oes xj ≤
i1 e xj ≥ i2, respectivamente. Este procedimento, chamado de ramifica¸c˜ao,
elimina a solu¸c˜ao corrente com valor de xj n˜ao-inteiro, mas preserva todas as
poss´ıveis solu¸c˜oes vi´aveis inteiras do problema original. Se ap´os a primeira
aproxima¸c˜ao mais de uma vari´avel for n˜ao-inteira, recomenda-se adotar para
ramifica¸c˜ao uma das que apresentarem parte fracion´aria mais pr´oxima de 0.5.
No exemplo, fazendo j = 2, obt´em-se 1 ≤ x2 ≤ 2, e os dois novos problemas
seriam
(P2)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≤ 1,
e
(P3)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≥ 2,
com x1 e x2 vari´aveis inteiras n˜ao-negativas. Primeiras aproxima¸c˜oes dos
novos problemas (P2) e (P3) s˜ao obtidas. No exemplo, a solu¸c˜ao de (P2)
´e x1 = 2.5, x2 = 1 e z∗
= 11.5; a solu¸c˜ao de (P3) ´e x1 = 1.5, x2 = 2 e
z = 12.5. Se as solu¸c˜oes de (P2) e (P3) forem ambas n˜ao-integrais, como
no exemplo, selecione para nova ramifica¸c˜ao o problema cuja valor ´otimo da
primeira aproxima¸c˜ao for mais pr´oximo do limitante superior, LS = 12.75. No
exemplo, (P3) ´e selecionado para a ramifica¸c˜ao da vari´avel x1: 1 ≤ x1 ≤ 2.
Os dois novos problema seriam
(P4)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≥ 2,
x1 ≤ 1,
e
(P5)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≥ 2,
x1 ≥ 2,
sendo x1 e x2 vari´aveis inteiras n˜ao-negativas. As primeiras aproxima¸c˜oes de
(P4) e (P5) s˜ao as seguintes: para (P4), x1 = 1, x2 = 2.33 e z = 12.33;
o problema (P5) ´e invi´avel. No procedimento de ramifica¸c˜ao pode ocorrer
de algum problema tornar-se invi´avel com a incorpora¸c˜ao da nova restri¸c˜ao.
Ramifica¸c˜oes adicionais a partir deste tipo de problema n˜ao s˜ao poss´ıveis;
3: Limita¸c˜ao (bounding) O procedimento de ramifica¸c˜ao prossegue at´e que uma
primeira aproxima¸c˜ao apresente solu¸c˜ao inteira. O valor da fun¸c˜ao objetivo
9. 4.4. M´etodo Branch–and–Bound 113
correspondente `a solu¸c˜ao inteira torna-se um limitante inferior, LI, para o
valor ´otimo do problema original, (P1). Todos os problemas cujas primeiras
aproxima¸c˜oes, integrais ou n˜ao, apresentarem valores inferiores ao limitante
inferior s˜ao ent˜ao descartados. O limitante inferior ´e atualizado sempre que
uma primeira aproxima¸c˜ao exibir solu¸c˜ao inteira com valor de z maior. O
algoritmo branch–and–bound termina quando n˜ao mais existirem problemas a
serem ramificados. No exemplo, a ramifica¸c˜ao prossegue a partir do problema
(P4):
(P6)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≥ 2,
x1 ≤ 1,
x2 ≤ 2,
e
(P7)
maximizar z = 3x1 + 4x2
sujeito a 2x1 + x2 ≤ 6,
2x1 + 3x2 ≤ 9,
x2 ≥ 2,
x1 ≥ 2,
x2 ≥ 3,
com x1 e x2 vari´aveis inteiras n˜ao-negativas. A primeira aproxima¸c˜ao de (P6)
´e x1 = 1, x2 = 2 e z = 11. Como a solu¸c˜ao ´e inteira, LI = 11. Ainda n˜ao
´e poss´ıvel descartar problemas. A solu¸c˜ao de (P7), tamb´em inteira, ´e x1 = 0,
x2 = 3 e z = 12; atualiza-se o limitante inferior para LI = 12, e agora ´e
poss´ıvel descartar os problemas (P2) (z = 11.5) e (P4) (z = 11). Como n˜ao
existem mais problemas a serem ramificados, a solu¸c˜ao ´otima do problema
(P1) ´e x1 = 0, x2 = 3 e z = 12.
O algoritmo branch–and–bound gera uma ´arvore. Cada n´o da ´arvore repre-
senta um problema de onde partem dois ramos. Quando um limitante inferior ´e
obtido e ramos s˜ao eliminados, ocorre a poda da ´arvore, na denomina¸c˜ao de alguns
autores. Para o exemplo considerado, a ´arvore se apresentaria como na Figura 4.12.
10. 114 Cap´ıtulo 4. Programa¸c˜ao Inteira/Mista
PSfrag replacements
P1
P2
P3
P4
P5
P6
P7
z∗
= 12.75
z∗
= 11.5
z∗
= 12.5
z∗
= 12.33
z∗
= 11
z∗
= 12
(2.25, 1.5)
(2.5, 1)
(1.5, 2)
(1, 2.33)
(1, 2)
(0, 3)
Infact´ıvel
Figura 4.12: ´Arvore associada ao exemplo.
Ap´os a primeira aproxima¸c˜ao do problema (P1), se poderia pensar em arre-
dondar os valores n˜ao-inteiros da solu¸c˜ao encontrada para os valores inteiros mais
pr´oximos. A solu¸c˜ao inteira sub´otima assim obtida geralmente n˜ao produz bons
resultados, especialmente se os valores das vari´aveis forem pequenos. No exemplo
acima, a solu¸c˜ao inteira vi´avel mais pr´oxima ap´os a primeira aproxima¸c˜ao de (P1)
´e x1 = 2 e x2 = 1, com z = 10. A diferen¸ca percentual do valor ´otimo do problema
(z = 12) em rela¸c˜ao ao produzido pelo arredondamento da sua primeira apro-
xima¸c˜ao ´e de 17%. Em outros casos ´e poss´ıvel que o arredondamento n˜ao introduza
grande varia¸c˜ao no valor ´otimo da fun¸c˜ao-objetivo.
Exemplo 4.4 Um fabricante est´a come¸cando a ´ultima semana de produ¸c˜ao de
quatro diferentes tipos de consoles para televisores, os quais devem ser montados
e ent˜ao decorados. Os modelos requerem 4, 5, 3 e 5 horas para serem montados,
e 2, 1.5, 3 e 3 horas para serem decorados, respectivamente. Os lucros unit´arios
com os modelos s˜ao $7, $7, $6 e $9, respectivamente. O fabricante disp˜oe de 30000
horas para montagem (750 montadores trabalhando 40 horas por semana) e 20000
horas para decora¸c˜ao (500 decoradores trabalhando 40 horas por semana). Quantas
unidades de cada modelo o fabricante deve produzir durante esta ´ultima semana
de forma a maximizar seu lucro? Assuma que todas as unidades produzidas ser˜ao
vendidas.
A formula¸c˜ao matem´atica do problema ´e
(P1)
maximizar z = 7x1 + 7x2 + 6x3 + 9x4
sujeito a 4x1 + 5x2 + 3x3 + 5x4 ≤ 30000,
2x1 + 1.5x2 + 3x3 + 3x4 ≤ 20000,
com x1, x2, x3 e x4 vari´aveis inteiras n˜ao-negativas que representam os n´umeros
de consoles dos tipos 1, 2, 3 e 4. A primeira aproxima¸c˜ao de (P1) ´e x1 = x2 = 0,
11. 4.4. M´etodo Branch–and–Bound 115
x3 = 1666.67 e x4 = 5000, com z = 55000. O limitante superior do problema ´e
LS = 55000. Como x3 n˜ao possui valor inteiro, introduz-se dois novos problemas:
(P2)
maximizar z = 7x1 + 7x2 + 6x3 + 9x4
sujeito a 4x1 + 5x2 + 3x3 + 5x4 ≤ 30000,
2x1 + 1.5x2 + 3x3 + 3x4 ≤ 20000,
x3 ≤ 1666,
e
(P3)
maximizar z = 7x1 + 7x2 + 6x3 + 9x4
sujeito a 4x1 + 5x2 + 3x3 + 5x4 ≤ 30000,
2x1 + 1.5x2 + 3x3 + 3x4 ≤ 20000,
x3 ≥ 1667.
As solu¸c˜oes de (P2) e (P3) s˜ao x1 = x2 = 0, x3 = 1666, x4 = 5000.4 com z =
54999.6, e x1 = 1, x2 = 0, x3 = 1667, x4 = 4999 com z = 55000, respectivamente.
Como a solu¸c˜ao de (P3) ´e inteira, atualiza-se o limitante inferior: LI = 55000.
Elimina-se o problema (P2) (z = 54999.6) e como n˜ao h´a mais problemas a serem
ramificados, a solu¸c˜ao do problema inteiro (P1) ´e x1 = 1, x2 = 0, x3 = 1667,
x4 = 4999 com z = 55000.
Optando-se pelo estrat´egia de arredondamento, a solu¸c˜ao inteira fact´ıvel mais
pr´oxima ap´os a primeira aproxima¸c˜ao de (P1) ´e x1 = x2 = 0, x3 = 1666, x4 = 5000
com z = 54996. Neste caso, o valor ´otimo do problema inteiro, z = 55000, ´e
menos do que 0.008% superior ao produzido pelo arredondamento. 2
O algoritmo branch–and–bound para problemas de programa¸c˜ao inteira que
envolvam minimizar ao inv´es de maximizar ´e essencialmente o mesmo, com pap´eis
inversos dos limitantes: obt´em-se inicialmente um limitante inferior e, em seguida,
um limitante superior, atualizado sempre que um problema apresentar solu¸c˜ao in-
teira com valor ´otimo z menor.