Você está na página 1de 9

Pgina | 1

PROGRAMAO LINEAR INTEIRA



Carlos Lzaro Menco, UFSM



Resumo: O problema geral de programao
linear inteira consiste na alocao de recursos
limitados a atividades em competio, de forma
tima; atravs de variveis que s possam
assumir valores inteiros. O mtodo Branch-and-
Bound tem aplicao em diversas reas, tais
como economia, planejamento, otimizar
investimentos, etc. Com este artigo busca-se que
o engenheiro eletricista tenha uma familiaridade
maior com a formulao geral do problema e
tenha condies de modelar problemas
utilizando esta importante tcnica de
otimizao.

Palavras chaves: Programao linear inteira,
mtodo Branch-and-Bound, maximizao,
tcnica de otimizao.


I. INTRODUO.
A programao inteira surge devido a
necessidade da modelagem dos problemas
atravs de variveis inteiras (discretas), no
contnuas.

O problema geral da programao linear inteira
utilizado para otimizar (maximizar ou minimizar)
uma funo linear de variveis, chamada de
"funo objetivo", sujeita a uma srie de
equaes ou inequaes lineares, chamadas
restries.

A formulao do problema a ser resolvido por
programao linear segue alguns passos bsicos:

Deve ser definido o objetivo bsico do
problema, ou seja, a otimizao a ser
alcanada. Por exemplo, maximizao de
lucros, ou de desempenhos, ou de bem-
estar social; minimizao de custos, de
perdas, de tempo. Tal objetivo ser
representado por uma funo objetivo, a
ser maximizada ou minimizada.
________________________________________
C. A. Lzaro Menco, estudante de Ps-graduao em
Engenharia Eltrica na Universidade Federal de Santa Maria,
UFSM/RS.
Para que esta funo objetivo seja
matematicamente especificada, devem
ser definidas as variveis de deciso
envolvidas. Normalmente, assume-se
que todas estas variveis possam
assumir somente valores inteiros.

Estas variveis normalmente esto
sujeitas a uma srie de restries,
normalmente representadas por
inequaes.

Todas essas expresses, entre tanto, devem estar
de acordo com a hiptese principal da
programao linear, ou seja, todas as relaes
entre as variveis devem ser lineares. Isto implica
proporcionalidade das quantidades envolvidas.
Esta caracterstica de linearidade pode ser
interessante no tocante simplificao da
estrutura matemtica envolvida, mas prejudicial
na representao de fenmenos no lineares (por
exemplo, funes tipicamente quadrticas).


II. DEFINIO DO PROBLEMA MATEMTICO.
O problema de programao linear inteira
formado por uma funo objetivo e um conjunto
de restries que so funes das variveis de
deciso do problema. O conjunto de variveis
pode ser dividido em dois subconjuntos:

- de variveis reais contnuas:

, ,


- de variveis inteiras:

, ,



A formulao do problema dada por:

Max/min
s.a.


Onde:


inteiro

Pgina | 2

III. CONSIDERAES MATEMTICAS.
Na modelagem de um problema de programao
linear, algumas situaes especficas podem
ocorrer, o que pode levar a casos em uma forma
matemtica diferente da apresentada at o
momento.

Entretanto, alguns artifcios matemticos ajudam
a reduzir o modelo obtido forma padro
estudada.

Estes artifcios so mostrados a seguir:

a. Minimizao de uma funo:
A minimizao de uma funo z(x)
matematicamente anloga maximizao da
negativa desta funo (-z(x)).

Exemplo:
Minimizar



equivalente a:

Maximizar



Com

Essa uma das formas de se resolver os
problemas de minimizao utilizando o mesmo
algoritmo. Caso queira resolver diretamente,
devemos alterar o critrio de entrada das
variveis na base. A varivel que entra na base
passa a ser aquela que tem o maior valor positivo
na linha z-transformada. Caso todas tenham
coeficientes negativos ou nulos, a soluo obtida
tima.

b. Restries de limite inferior ():
Uma desigualdade em uma direo ( ou ) pode
ser mudada para uma desigualdade na direo
oposta, pela multiplicao de ambos os lados da
desigualdade por (-1).

Exemplo:



equivalente a:



c. Restries de igualdade:
Uma equao pode ser substituda por duas
desigualdades de direes opostas.

Exemplo:



equivalente a duas desigualdades simultneas:



IV. CARACTERISTICAS DOS MODELOS PLI.
Um problema de programao linear inteira pode
apresentar as seguintes situaes:

- Todas as variveis de decises so inteiras: so
problemas denominados Problemas de
Programao Linear Inteira Pura PLIP

- Parte das variveis de decises inteira: so
problemas denominados Problemas de
Programao Linear Inteira Mista PLIM

- Todas as variveis de decises so binrias: so
problemas denominados Problemas de
Programao Linear Inteira Binria PLIB

- Parte das varveis de decises so binrias: so
problemas denominados Problemas de
Programao Linear Inteira Binria Mista
PLIBM.


V. O MTODO BRANCH-AND-BOUND.

O mtodo Branch-and-Bound (em portugus,
ramificar e limitar) um algoritmo que apresenta
a qualidade de examinar s uma pequena parte
das solues possveis. Como os problemas de PLI
so relativamente grandes, para resolv-los
diretamente deve-se dividi-lo em sub-problemas
cada vez menores, at que estes possam ser
solucionados. Sendo assim, a ideia desenvolver
uma enumerao inteligente dos pontos
candidatos ns em busca da soluo tima
inteira do problema, por meio da partio do
espao e avaliao progressiva das solues.

A forma de diviso em problemas menores parte
do princpio da separao de uma das variveis
de deciso inteiras, em um problema relaxado,
utilizando-a em restries contraditrias, criando
uma espcie de ramificao (a partir de um n),
como em uma rvore.

Uma das formas de relaxao consiste em,
temporariamente, ignorar as restries de

Pgina | 3

integralidade do problema de PLI, tornando-o um
problema de PL, ficando, portanto, mais simples
de resolver. A partir deste, pode-se usar para
resolv-lo o mtodo Simplex. Deve-se considerar
que o conjunto de solues viveis do problema
original (PLI) esteja contido no conjunto de
solues viveis do problema relaxado (PL).

- Critrios:
Se o problema relaxado no tem soluo vivel,
ento o problema de PLI tambm no tem.

Se uma soluo tima do problema relaxado
vivel no problema de PLI, ento ela uma
soluo tima do problema de PLI.

A escolha do ponto (n) para ramificao da
rvore pode ser efetuada, pelas seguintes
tcnicas:

* Jumptracking: implementa uma busca em
largura onde um n com o mnimo limite inferior
selecionado para ser examinado. Nesta
estratgia o processo de ramificao salta de um
ramo para outro na rvore de busca.

* Backtracking: implementa a busca em
profundidade, onde os ns descendentes de um
n pai so examinados em uma ordem arbitrria
ou em ordem de limites inferiores no-
decrescentes. Nesta estratgia, primeiramente
prossegue-se at o nvel mais baixo por algum
caminho para encontrar uma soluo tentativa e
ento refazer aquele caminho para cima at o
primeiro nvel com ns ativos e assim por diante.

fcil notar que a estratgia jumptracking tende
a construir uma grande lista de ns ativos,
enquanto backtracking mantm relativamente
uns poucos ns na lista a qualquer momento.

Uma vantagem do jumptracking a qualidade de
suas solues tentativas, que so geralmente
muito mais prximas do timo do que solues
geradas por backtracking, especialmente nos
estgios iniciais da busca.

Na anlise dos pontos candidatos faz-se
necessrio determinar quais so os pontos que
devam ser examinados ou descartados para
anlises futuras. Esta anlise segue o seguinte
critrio: O problema candidato relaxado (PL) no
tem soluo vivel. Devido ao item a anterior, o
problema candidato (PLI) tambm no tem
soluo vivel.

Uma soluo tima do problema relaxado
vivel, tambm no problema candidato. Como
uma soluo vivel de qualquer dos sub-
problemas tambm uma soluo vivel do
problema, ento a soluo tambm factvel.
Caso a soluo seja melhor que a atual, a soluo
deste problema ocupar a posio de melhor
soluo atual, descartando a anterior.

VI. PROCEDIMENTO DO MTODO BRANCH-AND-
BOUND.
Passo 1 Resolver o problema original usando
programao linear, por exemplo, pelo mtodo
Simplex. Se a resposta satisfaz a restrio inteira,
esta a soluo tima. Sendo assim, pare, seno,
ir ao passo 2.

Passo 2 Encontrar uma soluo vivel que
preencha a restrio inteira para uso como um
limite superior. Usualmente para isso, arredonda-
se a varivel.

Passo 3 Ramificar pela varivel de deciso do
passo 1 que no tenha um valor inteiro. Caso
todas as variveis no sejam inteiras, iniciar a
ramificao pela de maior valor do resduo
decimal. Dividir o problema em dois sub-
problemas baseados nos valores inteiros que
esto imediatamente abaixo ou acima do valor
no inteiro. Esses limites devero ser colocados
na restrio do problema.

Passo 4 Criar ns no topo desses novos ramos
pela soluo dos novos problemas.

Passo 5 a. Se um ramo leva a uma soluo
invivel por programao linear, descarte o n
para continuidade da anlise.
b. Se um ramo leva a uma soluo vivel por
programao linear, mas no uma soluo
inteira v para o passo 6.
c. Se o ramo leva a uma soluo inteira vivel,
examine o valor da funo objetivo. Se este valor
igual ao limite inferior, uma soluo tima foi
alcanada. Se ele no igual ao limite inferior,
mas ele menor que o limite superior, adote-o
como um novo limite superior e v para o passo
6. Finalmente, se ele maior que o limite
superior, descarte esse ramo.


Pgina | 4

Passo 6 Examine ambos os ramos novamente e
adote como limite superior o valor mximo da
funo objetivo para todos os ns finais. Se o
limite inferior igual ao limite superior, pare. Se
no, volte ao passo 3.

EXERCCIO 1: Aplicao do mtodo Branch-and-
Bound para variveis de deciso binrias (PLIB).

Maximizar 9


s.a.
6

10

binrio para j= 1, 2, 3, 4.

Resolvendo pelo mtodo Branch-and-Bound,
usando o software MATLAB chega-se ao seguinte
resultado:

% Algoritmo PLIB em MATLAB.
f = [-9; -5; -6; -4];

A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1];

b = [10; 1; 0; 0];

[x,fval,exitflag,output] = bintprog(f,A,b)

x =1


fval = -14

output = iterations: 12
nodes: 5
time: 1.0608
algorithm: 'LP-based branch-and-bound'

Foi usado SIMPLEX em MATLAB para achar a
forma relaxada do problema de PL. Agora de
forma manual ns temos o seguinte:

%Algoritmo PL Simplex em MATLAB.
f=[ -9; -5; -6; -4];
A=[6 3 5 2;0 0 1 1;-1 0 1 0;0 -1 0 1], b=[10;1;0;0];
Aeq=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1], beq=[1; 1; 0; 0];
lb=zeros(4,1),ub=ones(4,1);
options=optimset('LargeScale','off','Simplex','on');
[x,fval,exitflag,output,lambda]=linprog(f,A,b,
Aeq,beq,lb,ub,[],options);
1. Simplex solution node Z.
***---Variable---***
x = 0.8333


1.0000


1.0000


***---Objetive function---***

fval = -16.5000

***---info---***

output = iterations: 5
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.'





Este o resultado relaxado, agora tomamos o
maior valor decimal e ramificamos. Neste caso

.

2. Simplex solution node

0.
***---Variable---***
x =0
1
0
1

***---Objetive function---***
fval = -9

***---info---***
output = iterations: 2
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.'

3. Simplex solution node

1.
***---Variable---***
x = 1.0000
0.8000
0
0.8000

***---Objetive function---***
fval = -16.2000

***---info---***
output = iterations: 3
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.'

Pgina | 5














De acordo com o passo 5, limitamos ao seguinte
ramo:














4. Simplex solution node

0.
***---Variable---***
x =1.0000
0
0.8000
0

***---Objetive function---***
fval = -13.8000

***---info---***
output = iterations: 1
algorithm: 'medium scale: simplex
message: 'Optimization terminated.

5. Simplex solution node

1.
***---Variable---***
x =1.0000
1.0000
0
0.5000

***---Objetive function---***
fval = -16
***---info---***
output =iterations: 2
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.

De acordo com o passo 5, limitamos ao seguinte
ramo:


















6. Simplex solution node

0.
***---Variable---***
x = 1.0000
1.0000
0
0.5000

***---Objetive function---***
fval = -16

***---info---***
output = iterations: 1
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.'

7. Simplex solution node

1.

Exiting: The constraints are overly stringent; no
feasible point exists.
***---Variable---***
x = []

***---Objetive function---***
fval = []

***---info---***
output =iterations: 0
algorithm: 'medium scale: simplex'

Pgina | 6

De acordo com o passo 5, limitamos ao seguinte
ramo:



















8. Simplex solution node

1.

Exiting: The constraints are overly stringent; no
feasible point exists.
***---Variable---***
x = []

***---Objetive function---***
fval = []

***---info---***
output =iterations: 0
algorithm: 'medium scale: simplex'

9. Simplex solution node

0.
***---Variable---***
x =1
1
0
0

***---Objetive function---***
fval = -14

***---info---***
output =iterations: 0
algorithm: 'medium scale: simplex'
message: 'Optimization terminated.'



De acordo com o passo 5, limitamos ao seguinte
ramo:



















Ento como soluo tima em PLIB temos: fval=
14, com

1,

1,

0,

0; onde
tm um valor menor q o valor da fval relaxada.

EXERCCIO 2: Aplicao do mtodo Branch-and-
Bound para variveis de deciso inteiras (PLI).

Maximizar 5


s.a.

6
5

45

inteiro para j= 1, 2.

Foi usado SIMPLEX em MATLAB para achar a
forma relaxada do problema de PL.

1. Simplex solution node Z.
***---Variable---***
x =2.2500
3.7500

***---Objetive function---***
fval = -41.2500

***---info---***
output = iterations: 2
algorithm: 'medium scale: simplex'




Pgina | 7

Este o resultado relaxado, agora tomamos o
maior valor decimal e ramificamos. Neste caso

.

2. Simplex solution node

3.
***---Variable---***
x = 3
3

***---Objetive function---***
fval = -39

***---info---***
output = iterations: 2
algorithm: 'medium scale: simplex'

3. Simplex solution node

4.
***---Variable---***
x =1.8000
4.0000

***---Objetive function---***
fval = -41

***---info---***
output = iterations: 2
algorithm: 'medium scale: simplex'

De acordo com o passo 5, limitamos ao seguinte
ramo:












4. Simplex solution node

1.
***---Variable---***
x =1.0000
4.4444

***---Objetive function---***
fval = -40.5556

***---info---***
output = iterations: 2
algorithm: 'medium scale: simplex'
5. Simplex solution node

2.
Exiting: The constraints are overly stringent; no
feasible starting point found.

De acordo com o passo 5, limitamos ao seguinte
ramo:

















6. Simplex solution node

4.
***---Variable---***
x = 1
4

***---Objetive function---***
fval = -37

***---info---***
output =iterations: 2
algorithm: 'medium scale: simplex'

7. Simplex solution node

5.
***---Variable---***
x = 0
5

***---Objetive function---***
fval = -40

***---info---***
output =iterations: 1
algorithm: 'medium scale: simplex'








Pgina | 8

De acordo com o passo 5, limitamos ao seguinte
ramo:






















Ento como soluo tima em PLI temos: fval=
40, com

0,

5; onde tm um valor
menor q o valor da fval relaxada e o valor das
variveis de decises so inteiros.

VII. CASO DE APLICAO.
Para um dado conjunto de obras, devem-se
selecionar aquelas a serem priorizadas de tal
forma se maximizar o benefcio global,
respeitando-se uma determinada restrio
oramentria assim como relaes de excluso
ou de obrigatoriedade entre obras.

* Definio das obras, com custos e benefcios
correspondentes:
ITEM OBRA CUSTO BENEFCIO
1 Poda 5000 500
2 Recondutoramento 20000 1000
3 Circuito novo 40000 1500
4 Expanso SE 50000 1000
5 SE nova 80000 1000

* Definio de obras excludentes:
ITEM OBRA OBRA EXCLUDENTE
1 Recondutoramento Circuito novo
2 Expanso SE SE nova
* Definio de obras dependentes:

ITEM OBRA OBRA DEPENDENTE
1 Recondutoramento Poda

Ento o problema pode ser formulado da
seguinte forma:
Maximizar


s.a.

0,1 1, ,
: nmero total de obras.

: benefcio da obra i, em R$.

: varivel de deciso referente obra i.

: oramento total disponvel, em R$



% Algoritmo PLIB no Matlab
Max Z = 500x_1+1000x_2+1500x_3+ 1000x_4+...
...+1000x_5
% s.a
% --restries do oramento--
5000x_1+20000x_2+40000x_3+50000x_4+...
...+80000x_5 =< 100000
% --restries de obras excludentes--
x_2+x_3 =< 1
x_3+x_4 =< 1
% --restries de obras interdependentes--
x_2+x_1 >= 0
% Onde: x_j binrio para j= 1, 2, 3, 4.

f = [-500; -1000; -1500; -1000; -1000];
A = [5000 20000 40000 50000 80000; 0 1 1 0 0;...
...0 0 0 1 1; -1 1 0 0 0];
b = [100000; 1; 1; 0];

[x,fval,exitflag,output] = bintprog(f,A,b)

Optimization terminated.

x = [1 0 1 1 0]

fval = -3000

algorithm: 'LP-based branch-and-bound'




Pgina | 9

VIII. RESULTADOS.
A tabela ilustra o resultado da otimizao obtido
pelo mtodo branch-and-bound:

# OBRA CUSTO BENEFCIO
1 Poda 5000 500
3 Circuito novo 40000 1500
4 Expanso SE 50000 1000
TOTAL 95000 3000

As obras priorizadas so expanso SE, circuito
novo e poda; com um custo total de R$ 95000 e
benefcio total de R$ 3000.

IX. CONCLUSES.
Esta tcnica de otimizao uma ferramenta til
para obter um maior aproveitamento dos
recursos disponveis, satisfazendo restries e
alcanando uma soluo tima ao problema
proposto. O Mtodo Branch-and-Bound
determina os valores desses recursos como
inteiro, ele tambm serve para resolver
problemas de planejamento, no qual desejamos
otimizar investimentos (realizar ou no um
investimento), etc.; sendo utilizado em muitas
reas, tais como: engenharia, nutrio,
planejamento, economia, farmcia, etc.; j que
com esta tcnica conseguimos maximizar o lucro,
ou minimizar os custos, ou um certo ndice de
qualidade.

Atualmente a maioria dos softwares matemticos
incluem este mtodo para sua utilizao de forma
fcil y rpida, como por exemplo o MATLAB e o
OTIMIZA.

X. REFERNCIAS.
[1] N. Kagan, C.C.B. Oliveira, H. P. Schmidt, H.
Kagan. Metodos de otimizao aplicados a
sistemas eltricos de potncia.
[2] Silva, Ana Cristina Giro Programao Linear
Inteira Branch-and-Bound, Pesquisa Operacional
II, Universidade Federal do Rio Grande do Norte.
[3]Silva, Arlindo Programao Linear Inteira
Introduo, Mtodos de Apoio Deciso,
Instituto Politcnico de Castelo Branco, Escola
Superior de Tecnologia, Portugal, 2001.
[4] Leon S. Lasdon. Optimization Theory for large
systems.Collier-Macmillan, London 1972.
[5] G. B. Dantzing. Linear programming and
extensions, Princeton University Press, Princeton,
New Jersey, 1963.
[6] J. P. Ignizio, T. M. Cvalier. Linear
programming, Prentice-Hall, 1994.