Você está na página 1de 23

Programao Inteira Jorge P. J.

Santos
1
PROGRAMAO INTEIRA
ALGUMAS DEFINIES
Programa Inteiro Misto (MIP)
minimize z = c
T
x + d
T
y
sujeito a Ax + Dy = b
x 0, y 0
x
i
inteiros
Se o vector y no existe, o problema diz-se puro e representa-se por PIP.
Se as variveis x
i
apenas tomam os valores 0 ou 1, ento so designadas
por variveis binrias e o problema um programa binrio.
Um programa binrio diz-se puro (01 PIP) ou misto (01 MIP)
dependendo da existncia das variveis y.
As variveis y
i
dizem-se contnuas, enquanto que x
i
so denominadas
variveis discretas.
Programa Linear Relaxado (MIP)
minimize z = c
T
x + d
T
y
sujeito a Ax + Dy = b
x 0, y 0
Programao Inteira Jorge P. J. Santos
2
Conjunto de restries da relaxao linear do modelo inteiro
K = {(x,y): Ax + Dy = b, x 0, y 0}
Conjunto de restries do modelo inteiro
KI ={(x,y)K: x
i
inteiro}
Portanto KI K e
min z min z
(x,y)K (x,y)KI
Donde o programa linear relaxado fornece um limite inferior para o valor
ptimo do programa inteiro.
Alm disso pode acontecer
min z = min z
(x,y)K (x,y)KI
MTODO ENUMERATIVO COM LIMITES (BRANCH AND
BOUND) PARA PROGRAMAO BINRIA
Programa Binrio
minimize z = c
T
x + d
T
y
sujeito a Ax + Dy = b
x
i
{0,1}, i=1,2,,n
y 0
Programao Inteira Jorge P. J. Santos
3
A explorao de uma rvore binria permite obter a sua soluo ptima.
Com efeito consideremos uma permutao (i
1
, i
2
,..., i
n
) de (1, 2,..., n) e a
rvore binria
Nveis
1 1
x
i
1
=0 x
i
1
=1
2 3 2
x
i
2
=0 x
i
2
=1 x
i
2
=0 x
i
2
=1
4 5 6 7 3
x
i
3
=0 x
i
3
=1 x
i
3
=0 x
i
3
=1 x
i
3
=0 x
i
3
=1 x
i
3
=0 x
i
3
=1
8 9 10 11 12 13 14 15 4
M M M M M M M M M

Observao:
No ltimo nvel, todas as variveis x
i
satisfazem x
i
{0,1}. Se
resolvermos os programas lineares que se obtm do programa inteiro
fixando as variveis x
i
, ento a soluo ptima com menor valor de z d
lugar soluo ptima do programa inteiro.
No entanto como o nmero de variveis igual a n, h que resolver 2
n

programas lineares do ltimo nvel para obter a soluo ptima do
programa inteiro.
Felizmente alguns dos ns correspondem a solues no admissveis.
Alm disso o uso de limites inferiores e superiores permitem em geral
percorrer esta rvore de pesquisa eliminando ramificaes dessa estrutura.
Programao Inteira Jorge P. J. Santos
4
Este processo de eliminao permite uma considervel reduo no
nmero de ns a percorrer, dependendo esse processo, da qualidade dos
limites referidos, relativamente ao valor da soluo ptima do problema.
Eliminao de ns:
Considere-se um problema de minimizao, em cada n k podemos
determinar um limite inferior ao programa inteiro associado com k a partir
da resoluo do programa linear (e um vector de uns)
minimize z = c
T
x + d
T
y
sujeito a Ax + Dy = b
0 x e, y 0
x
i
j
= 0 ou 1 para j=1,...,t
com t o nvel anterior ao nvel do n k. No existe gerao de ns nas
seguintes situaes:
1. Se z
u
o valor de uma soluo admissvel para o modelo inteiro
(x
i
{0,1}), ento z
l
(k) z
u
implica que nenhum dos ns que partem de
k em nveis superiores ao nvel de k precisa de ser gerado.
2. Se a soluo do problema linear satisfizer x
i
{0,1} para todo i=1,...,n e
z
l
(k) < z
u
, ento z
l
(k) deve passar a ser o novo limite superior z
u
e todos
os ns com limites inferiores maiores ou iguais do que z
l
(k) devem ser
desprezados,
3. Se o programa linear do n k no tem soluo, ento nenhum dos ns
que partem de k em nveis superiores ao nvel de k precisa de ser
gerado.
Programao Inteira Jorge P. J. Santos
5
ALGORITMO DE PESQUISA ENUMERATIVA COM LIMITES
PARA PROGRAMAS INTEIROS 01
Passo 0 Inicializao
Resolva o Programa Linear Relaxado (PLR). Se PLR no admissvel, o
programa inteiro tambm o e termine. De outro modo seja
( )
( )


+
=
ilimitado se
do ptima soluo se
1
PLR
PLR y
~
, x
~
y
~
d x
~
c
z
T T
l

Se ( ) y
~
, x
~
satisfaz
i
x
~
{0,1}, i = 1,...,n, ento ( ) y
~
, x
~
soluo ptima do
programa inteiro e termine
Se z
l
(1) = , e o ltimo ponto extremo obtido satisfaz
i
x
~
{0,1},
i = 1,...,n, ento o programa inteiro ilimitado e termine tambm.
Determine se possvel uma soluo ( ) y , x do conjunto de restries do
programa inteiro, isto , uma soluo ( ) y , x satisfazendo
b y D x A = + ,
i
x {0,1}, i = 1,...,n, y 0
e faa y d x c z
T T u
+ = . De outro modo faa z
u
= +.
Considere a lista de ns candidatos ramificao L = {1}.
Passo 1 Seleco
Se L = , termine. Se z
u
= +, o programa inteiro inadmissvel. De
outro modo a soluo ( ) y , x correspondente a z
u
a soluo ptima do
programa inteiro (programa ilimitado se z
u
= ).
Se L , escolha um n kL.
Programao Inteira Jorge P. J. Santos
6
Passo 2 Ramificao
Gere dois ns no nvel imediatamente a seguir ao nvel do n k a partir
de
(p + 1): x
j
= 0
(p + 2): x
j
= 1
com p = | L| (| L| = nmero de elementos de L). Resolva os programas
lineares PL(p+1) e PL(p+2) associados a esses ns. Ento para cada um
desses dois programas PL(t) h trs casos possveis:
(i) Se PL(t) inadmissvel ou o seu valor ptimo z
l
(t) maior ou
igual do que z
u
, retire esse n da lista L.
(ii) Se PL(t) admissvel e a sua soluo ptima ( ) y
~
, x
~
(ou o ltimo
ponto extremo obtido no caso do PL(t) ser ilimitado) satisfaz
i
x
~
{0,1} actualize
( ) ( )
( )


+
=
ilimitado se
do ptima soluo se
t PL
t PL y
~
, x
~
y
~
d x
~
c
z
T T
u

Suprima de L esse n t e todos os outros ns j tais que z
l
(j) z
u
.
(iii) Se PL(t) admissvel e tem soluo ptima ( ) y , x com
i
x |0,1| e
u T T
z y d x c < + , faa y d x c z
T T l
+ = . Se PL(t) ilimitado,
faa z
l
(t) = .
Volte ao Passo 1.
Programao Inteira Jorge P. J. Santos
7
Critrios para a seleco das variveis no passo 1
1. Ordem de ramificao definida priori
2. Ordem que vamos definir na programao inteira
Critrios para a seleco dos n a ramificar no passo 2
1. Escolher-se o n k da lista L que satisfaz: z
l
(k) = min{z
l
(i): iL}
Nveis
1 z
l
(1) = 10 1




z
l
(2) = 12 2 3 z
l
(3) = 13 2




z
l
(4) = 15 4 z
l
(5) = 14 5 6 7 3

2. Escolher-se o n k da lista L que satisfaz:
z
l
(k) = min{z
l
(i): i pertence ao nvel mais elevado}
Nveis
1 z
l
(1) = 10 1




z
l
(2) = 12 2 3 z
l
(3) = 13 2




z
l
(4) = 15 4 z
l
(5) = 14 5 3




6 7 4
Programao Inteira Jorge P. J. Santos
8
MTODO ENUMERATIVO COM LIMITES PARA
PROGRAMAS INTEIROS
Transformao de programas inteiros em programas binrios
Transformao 1: Seja u
i
o maior valor inteiro que a varivel x
i
pode
tomar. Ento podemos escrever
x
i
= 1v
1
+ 2v
2
+ 3v
3
+...+ u
i
v
u
i

v
1
+ v
2
+ v
3
+...+ v
u
i
1
v
j
{0,1}, j=1,..., u
i

Exemplo
minimize z = 4x
1
+ 5x
2

sujeito a x
1
+ 4x
2
5
3x
1
+ 2x
2
7
0 x
i
2, i=1,2
x
i
inteiro, i=1,2
Substituies
x
1
= v
1
+ 2v
2

x
2
= v
3
+ 2v
4

com
v
1
+ v
2
1, v
3
+ v
4
1, v
i
{0,1}, i = 1,2,3,4
Programao Inteira Jorge P. J. Santos
9
Programa binrio equivalente
minimize z =4v
1
+ 8v
2
+ 5v
3
+ 10v
4

sujeito a v
1
+ 2v
2
+ 4v
3
+ 8v
4
5
3v
1
+ 6v
2
+ 2v
3
+ 4v
4
7
v
1
+ v
2
1
v
3
+ v
4
1
v
i
{0,1}, i=1,2,3,4
Transformao 2:
x
i
na base decimal
x
i
= v
0
+ 10v
1
+ 10
2
v
2
+...+ 10
t
v
t
, 0 v
i
9
com t o menor inteiro positivo tal que 10
t+1
> x
i
.
Exemplo
1085 = 5 + 810 + 010
2
+ 110
3

x
i
na base 2
x
i
= v
0
+ 2v
1
+ 2
2
v
2
+ 2
3
v
3
+...+ 2
t
v
t
, 0 v
i
1
com t o menor inteiro positivo tal que 2
t+1
> x
i
.
Exemplo: Como 88 < 2
7
, ento tem-se
88 = v
0
+ 2v
1
+ 2
2
v
2
+ 2
3
v
3
+ 2
4
v
4
+ 2
5
v
5
+ 2
6
v
6

Programao Inteira Jorge P. J. Santos
10
com v
0
= v
1
= v
2
= v
5
= 0 e v
3
= v
4
= v
6
= 1.
Seja ento u
i
o maior valor inteiro que a varivel x
i
pode tomar
x
i
= v
0
+ 2v
1
+...+ 2
t
v
t
, v
i
{0,1}, i = 1,...,t
com t o menor inteiro tal que 2
t+1
> u
i
. Alm disso x
i
no pode ultrapassar
o seu valor mximo
v
0
+ 2v
1
+...+ 2
t
v
t
u
i

Exemplo
minimize z = 4x
1
+ 5x
2

sujeito a x
1
+ 4x
2
5
3x
1
+ 2x
2
7
0 x
i
2, i=1,2
x
i
inteiro, i=1,2
Como 1 o menor inteiro positivo tal que 2
2
> 2 tem-se
x
1
= v
1
+ 2v
2

x
2
= v
3
+ 2v
4

Alm disso v
i
{0,1}, i = 1,2,3,4, e h que considerar as restries
v
1
+ 2v
2
2
v
3
+ 2v
4
2

Programao Inteira Jorge P. J. Santos
11
Programa binrio equivalente
Minimize z = 4v
1
+ 8v
2
+ 5v
3
+ 10v
4

sujeito a v
1
+ 2v
2
+ 4v
3
+ 8v
4
5
3v
1
+ 6v
2
+ 2v
3
+ 4v
4
7
v
1
+ 2v
2
2
v
3
+ 2v
4
2
v
i
{0,1}, i=1,2,3,4
Observaes:
1. Para valores de u
i
maiores do que 2 a transformao 1 conduz a
programas inteiros com maior nmero de variveis. No entanto o nmero
de restries adicionais que ambas transformaes acarretam o mesmo.
2. Alm disso na transformao 1 sempre que uma varivel v
i
igual a um,
ento todas as variveis da restrio
v
1
+ v
2
+ v
3
+...+ v
r
1
tm de ser nulas. Isso pode ser explorado devidamente no algoritmo
enumerativo por limites de modo a reduzir a pesquisa na rvore. Essa
propriedade no verificada na segunda transformao
v
0
+ 2v
1
+...+ 2
t
v
t
u
i

3. A resoluo de programas inteiros a partir da sua reduo a programas
binrios tem o inconveniente de provocar o acrscimo no nmero de
restries. no entanto possvel desenvolver um algoritmo enumerativo
sem usar essa reduo.

Programao Inteira Jorge P. J. Santos
12
ALGORITMO DE PESQUISA ENUMERATIVA COM LIMITES
PARA PROGRAMAS INTEIROS
Para entender o processo de ramificao, notemos em primeiro lugar
que no caso de programas inteiros 01 a fixao de uma varivel bsica x
j

com valor f
j
entre 0 e 1 equivalente a introduzir as desigualdades x
j
0
e x
j
1, respectivamente. Alm disso 0 e 1 so os inteiros mais prximos
de f
j
que o enquadram.
O algoritmo enumerativo para a resoluo de programas inteiros
exactamente o algoritmo anterior
Processo de Seleco: O n n k da lista L escolhido de acordo com
z
l
(k) = min{z
l
(i): iL}
ou
z
l
(k) = min{z
l
(i): i pertence ao nvel mais elevado}
Processo de Ramificao:
k
x
j
| f
j
| x
j
| f
j
| + 1
p+1 p+2
onde x
j
= f
j
, f
j
um nmero real no inteiro e | f
j
| maior inteiro menor
do que f
j
.
Programao Inteira Jorge P. J. Santos
13
Processo de escolha da varivel x
i
a ramificar no Passo 2
Considere-se um n k da lista L de candidatos e seja p = | L |. Sejam ainda
z
l
(k) o valor ptimo do programa linear relaxado PL(k) nesse n e z
u
o
valor do limite superior actual. Se x
t
uma varivel inteira a ser escolhida
no processo de ramificao, ento
x
t
uma varivel bsica na soluo ptima de PL(k)
com um valor f
t
no inteiro

Ns gerados
k
x
t
| f
t
| x
t
| f
t
| + 1
p+1 p+2
com | f
t
| o inteiro imediatamente inferior a f
t
.

Na gerao dos dois ns (p+1) e (p+2) o mtodo dual simplex com limites
inferiores e superiores usado.
Programao Inteira Jorge P. J. Santos
14
N (p+1): x
t
| f
t
|
Na primeira iterao do mtodo dual simplex a varivel x
t
bsica com
um valor
t
b
~
superior ao limite superior u
t
= | f
t
|. Ento calcula-se de
acordo com o explicado anteriormente e h dois casos:
(i) Se = , ento a varivel x
t
no pode atingir o limite superior
e o n no pode ser gerado.
(ii) Se > , ento a varivel x
t
passa a no bsica com um valor
igual ao seu limite superior u
t
, por troca com a varivel no bsica
da coluna s correspondente ao valor de . Ento o valor da funo
passa para
( )
( )
(

+
+ =

rs
t rs r
s
l U
t
a
u a b
~
c k z z
com

=
L s l
U s u
s
s
se
se
.
Se fizermos
U
t
z = + no caso anterior (i), ento podemos considerar o
chamado penalty associado a x
t
:

( )
| |
t t
l U
t U
t
f f
k z z
P

=
que por definio no negativo.
Programao Inteira Jorge P. J. Santos
15
N (p+2): x
t
| f
t
|+1
Do mesmo modo na gerao do n (p+2) h dois possveis casos:
(i) Se = +, a varivel x
t
no pode atingir o limite inferior l
t
= |
f
t
| + 1 e o n no pode ser gerado.
(ii) Se < +, ento x
t
passa a no bsica com um valor igual ao
seu limite inferior l
t
, por troca com a varivel no bsica da
coluna s onde foi atingido. Se tal como anteriormente, for
definido por

=
L s l
U s u
s
s
se
se

com L e U os conjuntos de ndices das variveis no bsicas que
tem valores iguais aos limites inferiores e superiores
respectivamente, ento o valor da funo passa para
( )
( )
(

+
+ =

rs
t rs r
s
l L
t
a
l a b
~
c k z z .
Portanto e tal como anteriormente podemos considerar o segundo penalty
associado a x
t
:
( )
| | ( )
t t
l L
t L
t
f f
k z z
P
+

=
1

onde
L
t
z = + no caso (i).
Programao Inteira Jorge P. J. Santos
16
Seja I o conjunto de variveis inteiras que tm valores no inteiros na
soluo ptima associada ao n k. Ento podemos calcular a quantidade
{ } { } I t P , P min min P
U
t
L
t j
= :
A escolha da varivel x
j
a ramificar feita de acordo com esse critrio do
penalty mnimo.
Uma outra regra tem funcionado bem na prtica consiste em escolher a
varivel x
j
que satisfaz o critrio
{ } { } { } I t P , P max P , P min max P
U
t
L
t
U
t
L
t j
+ = :
onde I o conjunto das variveis inteiras que tm valores no inteiros na
soluo ptima do programa PL(k) associado ao n k e um inteiro tal
que < | I |, com | I | o nmero de elementos desse conjunto I.

Nota: O n k deve ser desprezado se
{ } { }
u U
t
L
t
z I t z , z min min :
com z
u
o limite superior existente no n k.
Programao Inteira Jorge P. J. Santos
17
PROBLEMA DA MOCHILA
Definio do Problema
Consideremos n objectos em que
- c
j
o valor de cada objecto j;
- a
j
o volume do objecto j;
- b a capacidade da mochila e
- x
j
so as variveis definidas por

=
no se 0
mochila na inserido objecto o se 1 j
x
j

Os objectos que devem ser inseridos na mochila de modo a maximizar o
valor total so dados pela soluo do programa inteiro
Maximize z =

=
n
j
j j
x c
1

sujeito a b x a
n
j
j j

=1

x
j
{0,1}, j = 1,2,...,n
Observao 1: Qualquer problema de optimizao combinatria desta
forma denominado por problema da mochila, mesmo que no envolva
qualquer insero de objectos numa mochila.
Programao Inteira Jorge P. J. Santos
18
Observao 2: sempre possvel reduzir qualquer problema da mochila a
um problema da mesma forma com todos os a
j
e c
j
positivos. Com efeito
(i) Se existe um a
s
< 0, ento fazendo a mudana de varivel
y
s
= 1 x
s

tem-se
y
s
{0,1}
a
s
x
s
a
s
a
s
y
s

x
s
c
s
c
s
y
s
+ c
s

e problema da mochila transforma-se em
maximize z =
s s
n
s j
j
j j s
y c x c c +

=1

sujeito a
s s s
n
s j
j
j j
a b y a x a

=1

x
j
, y
s
{0,1}, j s
(ii) Se existe um a
s
= 0, ento a varivel x
s
pode tomar qualquer
valor zero ou um sem influenciar a restrio. Como se pretende
maximizar, ento

>
=
0 se 0
0 se 1
s
s
s
c
c
x .
Com (i) e (ii), obtm-se um problema da mochila com todos os a
j
> 0. Se
agora existirem c
s
0, ento as variveis x
s
devero ser fixas a zero.
Assim obtemos finalmente um problema da mochila com todos os c
j
e a
j

positivos.
Programao Inteira Jorge P. J. Santos
19
Exemplo:
maximize z = x
1
3x
2
+ 3x
3
4x
4
+ x
5

sujeito a x
1
2x
2
+ 3x
3
+ x
4
3
x
i
{0,1}, i=1,2,3,4,5
(i) Como a
2
< 0, ento efectua-se a mudana de varivel y
2
= 1 x
2
e
obtm-se o problema
maximize z = 3 + x
1
+ 3y
2
+ 3x
3
4x
4
+ x
5

sujeito a x
1
+ 2y
2
+ 3x
3
+ x
4
5
x
i
{0,1}, i=1,3,4,5, y
2
{0,1}
(ii) Como a
5
= 0 e c
5
= 1, ento a varivel x
5
deve ser fixada a um e
suprimida.
(iii) Aps esta primeira fase a restrio de capacidade
x
1
+ 2y
2
+ 3x
3
+ x
4
5
e a funo objectivo dada por
z = 2 + x
1
+ 3y
2
+ 3x
3
4x
4

Mas c
4
= 4 < 0, pelo que x
4
deve ser fixada em zero e obtm-se
finalmente o problema da mochila
maximize z = 2 + x
1
+ 3x
2
+ 3x
3

sujeito a x
1
+ 2x
2
+ 3x
3
5
x
i
{0,1}, i=1,2,3
Nota: O valor da varivel x
2
original igual a 1
2
x , com
2
x o valor da
varivel x
2
na soluo ptima deste ltimo programa.
Programao Inteira Jorge P. J. Santos
20
Resoluo do Programa Linear Relaxado
Consideremos novamente o problema da mochila
Maximize z =

=
n
j
j j
x c
1

sujeito a b x a
n
j
j j

=1

x
j
{0,1}, j = 1,2,...,n
Assumamos, sem perda de generalidade, que c
i
> 0, a
i
> 0 para todo
i=1,...,n e
n
n
a
c
a
c
a
c
L
2
2
1
1
.
Este problema equivalente a
minimize z = ( )

=

n
j
j j
x c
1

sujeito a b x a
n
j
j j

=1

x
j
{0,1}, j = 1,2,...,n
Procuremos agora resolver o programa linear relaxado
miximize z = ( )

=

n
j
j j
x c
1

sujeito a b x a
n
j
j j

=1

0 x
j
1, j = 1,2,...,n
Programao Inteira Jorge P. J. Santos
21
O quadro inicial associado a esse programa tem a forma
x
1
... x
p
x
p+1
... x
n
x
n+1
z
x
1
a
1
... a
p
a
p+1
... a
n
1 0 b
z c
1
... c
p
c
p+1
... c
n
0 1 0
onde x
n+1
a varivel de desvio associada restrio de capacidade. Seja
p o primeiro inteiro tal que
b a
p
j
j
<

=1
e b a
p
j
j
>

+
=
1
1
.
Ento podemos fixar as variveis x
1
,..., x
p
a um e obter a soluo
bsica definida pelo quadro
x
1
= 1 ... x
p
= 1 x
p+1
... x
n
x
n+1
z
x
1
a
1
... a
p
a
p+1
... a
n
1 0 b
b
~
z c
1
... c
p
c
p+1
... c
n
0 1 0
z
~
com

=
=
p
j
j
a b b
~
1
,

=
=
p
j
j
c z
~
1
.
Como c
i
> 0, x
i
= 1, i=1,...,p e fixando o pivot na linha 1 e na coluna de
x
p+1
obtm-se

x
1
= 1
...
x
p
= 1 x
p+1

...
x
n
x
n+1 z
x
1

1
1
+ p
a
a

...
1 + p
p
a
a
1 ...
1 + p
n
a
a

1
1
+ p
a
1
1 + p
a
b
b
~

z
1
c ... p
c
0 ...
n
c
1 + n
c
0
z z
~

Programao Inteira Jorge P. J. Santos
22
com
1
1
+
+
=
p
p
a
b c
z ,
1
1
+
=

=
p
p
j
j
a
a b
b
~
,

=
+ =
p
j
j
c z z
~
1
.
Alm disso para todo j=1,...,p,p+2,...,n tem-se

j
c =
j
p
p
j
a
a
c
c
1
1
+
+
+
=
j
p
p
j
j
a
a
c
a
c
|
|
.
|

\
|
+
+
+
1
1

Como se verificam as desigualdades
n
n
a
c
a
c
a
c
L
2
2
1
1
, ento
j
c 0, j=1,...,p
j
c 0, j=p+2,...,n
0 0
1
1
1
> + =
+
+
+
p
p
n
a
c
c
Donde, a soluo bsica dada pelo ltimo quadro primal e dual
admissvel e portanto soluo ptima do programa linear relaxado. O
valor ptimo dessa soluo
z
~
=

=
+
p
j
j
c z
1

Programao Inteira Jorge P. J. Santos
23
=

=
+
+
+
+
|
|
.
|

\
|
+ +
p
j
j
p
p
j
p
p
a
a
c
c b
a
c
1
1
1
1
1

=
(
(

|
|
.
|

\
|
+
+
+
= =

1
1
1 1
p
p
p
j
j
p
j
j
a
c
a b c
Deste modo, a soluo ptima do programa linear relaxado obtm-se a
partir de do seguinte processo:
ALGORITMO PLR
Seja p o primeiro inteiro no negativo que satisfaz b a
p
j
j
<

=1
e
b a
p
j
j
>

+
=
1
1
. Ento a soluo ptima
x
1
= ... = x
p
= 1
x
p+1
=
1
1
+
=

p
p
j
j
a
a b

x
p+2
= ... = x
n
= 0
e o valor ptimo do PLR de maximizao
|
|
|
|
|
|
.
|

\
|

+ =
+
=
+
=

1
1
1
1
p
p
j
j
p
p
j
j
a
a b
c c z
Programao Inteira Jorge P. J. Santos
24
Exemplo:
maximize z = 60x
1
+ 60x
2
+ 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 30x
1
+ 50x
2
+ 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
100
x
i
{0,1}, i=1,2,3,4,5,6,7
Ento a
i
> 0, c
i
> 0 para todo i=1,...,7 e
1
1
+
+

i
i
i
i
a
c
a
c
para todo i=1,...,6
pelo que o programa est nas condies anteriormente definidas. Como
a
1
+ a
2
= 30 + 50 < 100, a
1
+ a
2
+ a
3
= 30 +50 + 40 > 100
ento p = 2 e a soluo ptima
x
1
= x
2
= 1, x
3
=
( )
2
1
40
50 30 100
=
+
, x
4
= x
5
= 0
e o valor ptimo
z = 60 + 60 + 40
2
1
= 140.
Programao Inteira Jorge P. J. Santos
25
Determinao de um Limite Superior Z
u

Como o problema da mochila um problema de maximizao, ento os
limites superiores esto associados a solues com alguns valores
i
x
diferentes de zero e de um, enquanto que os limites inferiores
correspondem a solues que satisfazem as restries do problema.
Portanto o programa linear relaxado fornece um limite superior
|
|
|
|
|
|
.
|

\
|

+ =
+
=
+
=

1
1
1
1
p
p
j
j
p
p
j
j
u
a
c b
c c z
onde p o primeiro inteiro que satisfaz b a
p
j
j
<

=1
e b a
p
j
j
>

+
=
1
1
.
No processo enumerativo para obter a soluo ptima do problema da
mochila, h que considerar dois casos
(i) Se x
p+1
= 0 ou 1, ento a soluo ptima do programa linear
relaxado a soluo ptima do problema da mochila (se o n for o
primeiro) ou fornece um limite inferior z
l
(k) (se o n k no for o
primeiro).
(ii) Se 0 < x
p
< 1, ento h que gerar dois ns 2 e 3 segundo o
esquema
Programao Inteira Jorge P. J. Santos
26
1
x
p+1
=0 x
p+1
=1
2 3
Dada a simplicidade de resoluo de programas lineares associadas a
problemas de mochila, ento os valores z
u
(2) e z
u
(3) so obtidos
facilmente a partir de:
u
z
0
= z
u
(2): maximize z =

+
=
n
p j
j
j j
x c
1
1

sujeito a b x a
n
p j
j
j j

+
=
1
1

x
j
{0,1}, j = 1,...,n, j p+1
u
z
1
= z
u
(3): maximize z = c
p+1
+

+
=
n
p j
j
j j
x c
1
1

sujeito a
1
1
1
+
+
=

p
n
p j
j
j j
a b x a
x
j
{0,1}, j = 1,...,n, j p+1
Portanto podemos actualizar o limite superior z
u
a partir de
z
u
= max{z
u
(2), z
u
(3)} = max{
u
z
0
,
u
z
1
}
mesmo sem considerar o processo de ramificao.
Programao Inteira Jorge P. J. Santos
27
Exemplo:
maximize z = 60x
1
+ 60x
2
+ 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 30x
1
+ 50x
2
+ 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
100
x
i
{0,1}, i=1,2,3,4,5,6,7
(i) Determinao de
u
z
0
:
Fixa-se x
3
= 0. Como
a
1
+ a
2
+ a
4
= 30 + 50 + 10 < 100 = b
a
1
+ a
2
+ a
4
+ a
5
= 30 + 50 + 10 + 40 > 100
ento a soluo ptima
x
3
= x
6
= x
7
= 0, x
1
= x
2
= x
4
= 1, x
5
=
4
1
40
90 100
=


Donde
u
z
0
= c
1
+ c
2
+ c
4
+ c
5
4
1
= 60 + 60 + 10 + 20
4
1
= 135
(ii) Determinao de
u
z
1
:
Fixa-se x
3
= 1. Como
b a
3
= 100 40, a
1
= 30 < 60, a
1
+ a
2
= 30 + 50 > 60
ento a soluo ptima
x
4
= x
5
= x
6
= x
7
= 0, x
1
= x
3
= 1, x
2
=
5
3
50
30 60
=


Donde
u
z
1
= c
1
+ c
2
5
3
+ c
3
= 60 + 60
5
3
+ 40 = 136
Portanto o novo limite superior
z
u
= max{135, 136} = 136.
Programao Inteira Jorge P. J. Santos
28
Determinao de um Limite Inferior Z
l

Se p o primeiro inteiro tal que b a
p
j
j
<

=1
e b a
p
j
j
>

+
=
1
1
verdadeira, ento
x
1
= ... = x
p
= 1
x
p+1
=
1
1
+
=

p
p
j
j
a
a b

x
p+2
= ... = x
n
= 0
soluo ptima do programa linear relaxado. Um limite inferior obtido
fazendo x
p+1
= 0 na soluo anterior e dado por
z
l
=

=
p
i
i
c
1

Assim para o problema da mochila
maximize z = 60x
1
+ 60x
2
+ 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 30x
1
+ 50x
2
+ 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
100
x
i
{0,1}, i=1,2,3,4,5,6,7
tem-se p = 2 e
z
l
= c
1
+ c
2
= 120.
Para determinar uma soluo inteira com um valor maior, h que tentar
que outras variveis x
j
, j > p sejam tambm iguais a um. Uma boa tcnica
de obter uma soluo melhor consiste em ir fixando x
j
= 1 de acordo com
Programao Inteira Jorge P. J. Santos
29
os valores decrescentes de c
j
, j > p e tendo em conta que x
s
s pode ser
igual a um se o valor de

=
p
j
j
a
1
+ a
s

for menor ou igual do que b. Para isso considera-se o seguinte processo:
(i) Seja S = a
1
+ ... + a
p
, z
l
= c
1
+ ... + c
p
.
(ii) Ordenar a
j
, c
j
, j = p+2,...,n por ordem decrescente dos c
j
.
(iii) Para cada j = p+2,...,n
Se a
j
+ S b, faa z
l
= z
l
+ c
j
, S = S + a
j
.
(iv) z
l
o limite inferior.
Consideremos problema anterior. Ento
S = a
1
+ a
2
= 80, z
l
= 120
c
5
c
4
c
6
c
7

c
j
:
20 10 10 3

a
5
a
4
a
6
a
7

a
j
:
40 10 30 10
Tem-se:
S + a
5
> b.
S + a
4
= 90 < b S = 90, z
l
= 120 + 10 = 130.
S + a
6
= 120 > b.
S + a
7
= 90 + 10 = 100 b S = 100, z
l
= 130 + 3 = 133.
e portanto o novo limite inferior igual a 133.
Programao Inteira Jorge P. J. Santos
30
Fixao de Variveis
Sejam I
0
e I
1
os conjuntos das variveis fixas em zero e um
respectivamente. O processo inicia-se com I
0
= I
1
= e considera as
quantidades

=
1
I j
j
a b b ,

+ =
1
I j
j
c z z
~

Cada varivel x
s
, s = 1,...,n investigada da seguinte forma:
(i) Fixao em zero:
Se b a
s
< 0, ento faz-se I
0
= I
0
{s}.
(ii) Fixao em um:
Resolva o PL: minimize

+
J j
j j
x c z
~

sujeito a b x a
J j
j j


0 x
j
1, jJ
com
J = {1,...,n} (I
0
I
1
{s}).
Se z* o valor ptimo desse PL e
z* z
l

ento a fixao dessa varivel x
s
a zero, no poder conduzir
a uma soluo com valor melhor do que z
l
. Ento no vale a
pena explorar essa hiptese, pelo que a varivel x
s
pode ser
fixada em um. Ento faz-se
I
1
= I
1
{s},
s
a b b = ,
s
c z
~
z
~
+ = .
Programao Inteira Jorge P. J. Santos
31
Exemplo: Consideremos novamente o Problema da Mochila
maximize z = 60x
1
+ 60x
2
+ 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 30x
1
+ 50x
2
+ 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
100
x
i
{0,1}, i=1,2,3,4,5,6,7
Ento, como vimos anteriormente, z
l
= 133 e tem-se inicialmente
z
l
= 133, I
0
= I
1
= , b = b = 100, z
~
= 0. Ento:
(i) Varivel x
1
:
b a
1
= 100 30 = 70 0
maximize 60x
2
+ 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 50x
2
+ 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
100
0 x
i
1, i = 2,...,7
tem soluo ptima
x
2
= x
3
= x
4
= 1
x
5
= x
6
= x
7
= 0
de valor z* = 110. Como 110 < z
l
, ento
I
1
= {1}, b = 100 30 = 70, z
~
= 0 + 60 = 60
Programao Inteira Jorge P. J. Santos
32
(ii) Varivel x
2
:
b a
2
= 70 50 0
maximize 60 + 40x
3
+ 10x
4
+ 20x
5
+ 10x
6
+ 3x
7

sujeito a 40x
3
+ 10x
4
+ 40x
5
+ 30x
6
+ 10x
7
70
0 x
i
1, i = 3,...,7
tem soluo ptima
x
3
= x
4
= 1,
x
5
=
2
1
,
x
6
= x
7
= 0
de valor z* = 60 + 40 + 10 + 10 = 120 < z
l
, ento
I
1
= {1,2}, b = 70 50 = 20, z
~
= 60 + 60 = 120
(iii) Variveis x
3
, x
5
, x
6
:
b a
j
= 20 a
j
< 0
ento
I
0
= {3,5,6}
Programao Inteira Jorge P. J. Santos
33
(iv) Varivel x
4
:
b a
4
= 20 10 = 10 0
maximize 120 + 3x
7

sujeito a 10x
7
20
0 x
7
1
tem soluo ptima
x
7
= 1
de valor z* = 123 < z
l
. Ento
I
1
= {1,2,4}, b = 20 10 = 10, z
~
= 120 + 10 = 130
(v) Varivel x
7
:
Como x
7
pode tomar o valor um (10x
7
10) e a nica varivel
no fixada em zero ou um, ento x
7
deve tomar o valor um.
Donde
I
1
= {1,2,4,7}, I
0
= {3,5,6}, z
~
= 133 = z
l

Portanto no h quaisquer variveis livres pelo que o algoritmo
enumerativo no tem possibilidade de prosseguir. Portanto a soluo
ptima do problema da mochila foi determinado sem ramificao
x
i
= 1, i = 1,2,4,7
x
j
= 0, j = 3,5,6
e o valor ptimo 133.
Programao Inteira Jorge P. J. Santos
34
PROBLEMA DE AFECTAO
Definio do Problema
Este problema consiste em afectar n indivduos a n tarefas de modo a
minimizar o custo total envolvido no plano de afectao
Formulao Matemtica do Problema
Parmetros
c
ij
(i,j=1,2,,n) o custo a afectar ao indivduo i a tarefa j
Variveis:

=
j i
j i
x
ij
tarefa afecto for no indivduo o se 0
tarefa afecto for indivduo o se 1

Funo objectivo
minimize z =

= =
n
i
n
j
ij ij
x c
1 1

Restries
1. Cada indivduo i executa apenas uma tarefa
1
1
=

=
n
j
ij
x , i = 1,2,...,n
2. Cada tarefa j executada por apenas um indivduo
1
1
=

=
n
i
ij
x , j = 1,2,...,n
Programao Inteira Jorge P. J. Santos
35
Programa Binrio
minimize z =

= =
n
i
n
j
ij ij
x c
1 1

sujeito a 1
1

=
=
n
i
ij
x , j = 1,2,...,n
1
1

=
=
n
j
ij
x , i = 1,2,...,n
x
ij
{0,1}, i, j = 1,2,...,n


Prova-se que este problema equivalente a:
minimize z =

= =
n
i
n
j
ij ij
x c
1 1

sujeito a 1
1

=
=
n
i
ij
x , j = 1,2,...,n
1
1

=
=
n
j
ij
x , i = 1,2,...,n
x
ij
0, i, j = 1,2,...,n
Programao Inteira Jorge P. J. Santos
36
Algoritmo Hngaro
Passo 0: Passo Inicial
Constri-se um quadro de valores a partir da matriz de custos
subtraindo a cada linha o seu valor mnimo. De seguida
actualiza-se este quadro subtraindo a cada coluna o seu valor
mnimo.
Passo 1: Processo de enquadramento de zeros (um e um s em cada
linha e coluna)
Escolhe-se a linha ou a coluna com menor nmero de zeros e
enquadra-se um desses zeros. De seguida elimina-se a linha e a
coluna correspondente a esse zero e escolhe-se a linha ou a coluna
que tenha menor nmero de zeros, enquadrando-se um desses
zeros. Este processo repetido at no haver mais zeros para
enquadrar.
Se o nmero de zeros enquadrados inferior dimenso do
problema, passa-se ao passo seguinte. Caso contrrio, o algoritmo
termina e a soluo ptima corresponde ao enquadramento obtido

=
contrrio caso 0
, posio no enquadrado zero um exite se 1 j i
x
ij

Passo 2: Processo de cobertura de zeros (com um menor nmero de
traos)
Escolhe-se a linha ou coluna com maior nmero de zeros e
cobrimos essa linha ou coluna com um trao. Deixamos de
considerar essa linha ou coluna e escolhemos uma outra linha ou
coluna com maior nmero de zeros e eliminamos essa outra linha
ou coluna. Este processo repetido at no haver mais zeros para
cobrir com traos. De seguida passamos ao passo 1, actualizando
o quadro do seguinte modo

ij
c

ij
c + ,
ij
c
ij
c
ij
c
ij
c
ij
c
ij
c
onde o menor valor entre os valores no cobertos por traos.
Programao Inteira Jorge P. J. Santos
37
PROBLEMA DO CAIXEIRO VIAJANTE

Definio do Problema
Este problema consiste em determinar o percurso de um caixeiro que tem
de partir de uma cidade, visitar (n1) cidades e voltar ao ponto de partida,
estando apenas uma vez em cada cidade e de modo a reduzir o custo total
da viagem

Formulao Matemtica do Problema
Parmetros
c
ij
o custo da viagem da cidade i para a cidade j
Variveis:

=
no se 0
efectuada para de viagem a se 1 j i
x
ij

Funo objectivo
minimize z =

=
n
i
n
i j
j
ij ij
x c
1 1

Programao Inteira Jorge P. J. Santos
38
Restries
1. De cada cidade i s se efectua uma viagem
1
1
=

=
n
i j
j
ij
x , i = 1,2,...,n
2. S efectuada uma viajem at cidade j
1
1
=

=
n
j i
i
ij
x , j = 1,2,...,n
3. No podem haver subpercursos do tipo






S i S j
ij
S x 1
para qualquer conjunto S{1,2,,n} com cardinal |S| tal que
2 |S| n 1
S = {1,2,3} x
12
+ x
13
+ x
21
+ x
23
+ x
31
+ x
32
2
S = {4,5} x
45
+ x
54
1
Seja S ={1,2,,n}S, uma outra forma de evitar percursos



S i S j
ij
x 1, S: 2 | S | n 2
1 4 2
3 5
Programao Inteira Jorge P. J. Santos
39
Programa Binrio
minimize z =

= =
n
i
n
j
ij ij
x c
1 1

sujeito a 1
1
=

=
n
j
ij
x , i = 1,2,...,n
1
1
=

=
n
i
ij
x , j = 1,2,...,n




S i S j
ij
S x 1, S: 2 | S | n 1 (*)




S i S j
ij
x 1, S: 2 | S | n 2 (**)
x
ij
{0,1}, i, j = 1,2,...,n
com c
ii
= M para todo i=1,2,,n, em que M um nmero muito grande
de tal modo que x
ii
= 0.
Observaes:
1. Nmero de variveis do problema do caixeiro viajante
n
2

2. Nmero de restries do problema do caixeiro viajante com (*)
m =
|
|
.
|

\
|

+ +
|
|
.
|

\
|
+
|
|
.
|

\
|
+ + =
1 3 2 n
n n n
n n L
( ) = +
|
|
.
|

\
|
+
|
|
.
|

\
|

+ +
|
|
.
|

\
|
+
|
|
.
|

\
|
+
|
|
.
|

\
|
+
|
|
.
|

\
|
= 2
1 3 2 1 0
n
n
n
n
n n n n n
L
2 2 + = n
n

ou
Programao Inteira Jorge P. J. Santos
40
Algoritmo de Ramificao por Limites
O algoritmo tira partido das restries de afectao
minimize z =

= =
n
i
n
j
ij ij
x c
1 1

sujeito a 1
1
=

=
n
j
ij
x , i = 1,2,...,n
1
1
=

=
n
i
ij
x , j = 1,2,...,n
x
ij
{0,1}, i, j = 1,2,...,n
e das restries



S i S j
ij
S x 1, S: 2 | S | n 1


Determinao de um limite inferior z
l
e um limite superior z
u

Em cada n k obtido um limite inferior z
l
(k) resolvendo um problema de
afectao. Sempre que a soluo ptima do problema de afectao satisfaz
as restries que impedem os subpercursos, obtido um limite superior z
u

e todos os ns t tais que z
l
(t) z
u
so desprezados de futuras
investigaes. O algoritmo termina quando no houver ns para explorar.
Programao Inteira Jorge P. J. Santos
41
Processo de ramificao
Seja k 1 o n corrente e seja x
rs
a varivel escolhida para gerar os dois
ns (t+1) e (t+2) da figura a seguir

k
x
rs
=0 x
rs
=1
t+1 t+2

Ento tem-se
(i) Gerar n (t+1):
Fazer c
rs
= M, com M um nmero muito grande e calcular
z
l
(t+1) resolvendo o respectivo problema de afectao.
(ii) Gerar n (t+2):
Como x
rs
= 1, ento as restries
1
1
=

=
n
j
rj
x e 1
1
=

=
n
i
is
x
esto satisfeitas e devem ser por isso suprimidas. Portanto z
l
(t+2)
obtm-se resolvendo um problema de afectao com menos uma
restrio i e uma restrio j.
Programao Inteira Jorge P. J. Santos
42
Problema de afectao a resolver no n k
Seja:
E o conjunto de arcos (i,j) para os quais x
ij
= 0 em nveis anteriores
(caminhos excludos)
I o conjunto dos arcos (i,j) tais que x
ij
= 1 em nveis anteriores
(caminhos a serem percorridos)
Ento o problema de afectao a resolver no n k
minimize z =


+
R i S j
ij ij
I j , i
ij
x c
~
c
) (

sujeito a 1 =

S j
ij
x , iR
1 =

R i
ij
x , jS
x
ij
{0,1}, iR, jS
onde
R = {i: (i,j)I para todo o j}
S = {j: (i,j)I para todo o i}

=
E j , i M
E j , i c
c
~
ij
ij
) ( se
) ( se

M um nmero positivo muito grande
Programao Inteira Jorge P. J. Santos
43
Escolha do n a ramificar
k pertencente ao maior nvel com menor limite inferior z
l
(k).

Escolha da varivel a ramificar
A escolha da varivel x
rs
para ramificar feita de acordo com o processo
de penalidades semelhante ao discutido para programas inteiros gerais.
Seja t o nmero de elementos dos conjuntos R e S do programa associado
ao n k e suponhamos sem perda de generalidade que R = S = {1,...,t}.
Como o algoritmo hngaro resolveu o problema de afectao, ento
terminou com um quadro da forma
j
i
1 2 ... t
1
11
c
12
c ...
t
c
1

2
21
c
22
c ...
t
c
2

M M M

M
t
1 t
c
2 t
c
...
tt
c
onde
ij
c so os coeficientes de custo reduzidos. Notar que
ij
c 0 e para
cada linha i e coluna j existe pelo menos um
ij
c = 0. A chamada afectao
consiste em fazer x
ij
= 1 para alguns desses
ij
c = 0.
Programao Inteira Jorge P. J. Santos
44
A penalidade P
ij
o menor valor que poder provocar uma alterao do
valor da varivel x
ij
de um para zero e dada por
P
ij
= { } { } {} { } i R h c min j S h c min
hj ih
+ : : .
Aps calcular as vrias penalidades P
ij
associadas com as linhas i e
colunas j com
ij
c = 0, ento a varivel x
rs
escolhida como sendo a de
mxima penalidade, isto , (r,s) satisfaz
P
rs
= { } 0 , , : =
ij ij
c S j R i P max



Variveis a fixar quando se gera o n (t+1) associado a x
rs
= 1. Assim
tem-se:
(i) A varivel x
sr
deve ser fixada em zero, isto , deve-se modificar
c
sr
para um valor M muito grande
x
rs
= 1
r s
no pode ser,
ou seja x
sr
= 0
Programao Inteira Jorge P. J. Santos
45
N
(ii) Se
x
i
1
i
2
= x
i
2
i
3
= = x
i
q
r
= 1
ento as variveis
x
si
1
, x
si
2
, , x
si
q

devem ser fixadas em zero (isto , fazer c
si
1
=c
si
2
==c
si
q
=M)
i
1
i
2

s M
r i
q

no pode ser
(iii) Se
x
si
1
= x
i
1
i
2
= = x
i
q1
i
q
= 1
ento as variveis
x
i
1
r
, x
i
2
r
, , x
i
q
r

devem ser fixadas em zero (isto , deve-se fazer
c
i
1
r
=c
i
2
r
==c
i
q
r
=M)
s i
1

r i
2

i
q
i
q1

no pode ser

Você também pode gostar