Você está na página 1de 9

O PR IMA L E O DU AL EM PR OGRAMAÇÃO L INEAR

HÉLIO BERNARDO LOPES

O tema da Programação Linear, com as suas particularizações do Problema dos Transportes e do Problema da
Afectação de Recursos, é hoje estudado em cursos diversos onde uma disciplina de Investigação Operacional esteja
presente.

Trata-se, em última análise, de um problema de cálculo de extremos condicionados, seja de máximo ou de mínimo,
que apresenta características muito particulares e de grande elegância simbólica.

Também os Problemas dos Transportes e da Afectação de Recursos se podem resolver como problemas de
Programação Linear, através do Algoritmo Simplex, embora seja preferível o recurso a algoritmos próprios, de
muitíssimo maior simplicidade: o Algoritmo dos Transportes e o Algoritmo Húngaro, respectivamente.

De molde a facilitar a compreensão do que realmente está em jogo, consideram-se aqui dois casos de
determinação de extremos e de extremos condicionados, mas ao nível do final do ensino secundário.

EXEMPLO. Pretende estudar-se a existência de extremos para a função real, de variável real, definida em [−2,1] por:

f ( x) = 1 − x 2 .

A função é constituída por um polinómio incompleto do segundo grau, pelo que é possível recorrer, em princípio, à
utilização de derivadas da função.

As condições de estacionaridade são, neste caso:

f ' ( x ) ≡ −2 x = 0 ⇔ x=0

ou seja, existe um só ponto de estacionaridade da função, x = 0.


A segunda derivada da função dada é:

f '' ( x ) = −2 < 0

que já não se anula no ponto de estacionaridade encontrado, sendo negativa em todo o seu domínio. Assim, x = 0 é um
maximizante da função dada, onde ocorre o máximo local:

f (0) = 1 − 0 2 = 1.

É fácil constatar que em [−2,0[ a função dada é crescente, uma vez que, neste intervalo, se tem:

f ' ( x) > 0

e que em ]0,1] é decrescente, dado ter-se aqui:

f ' ( x) < 0 .

Assim, em x = 0 ocorre igualmente o máximo absoluto da função, sendo x = −2 e x = 1 pontos de mínimo local,
o primeiro dos quais também de mínimo absoluto, com o valor:

f ( −2) = 1 − ( − 2) = −3. •
2
Um outro caso, que envolve a determinação de extremos condicionados de certa função, é o que se apresenta no
seguinte

EXEMPLO. Pretende determinar-se os extremos da função apresentada no exemplo anterior, mas sujeitos à condição:

x − y = 1.

Como se torna evidente, o anterior maximizante já aqui o não é, dado que é falsa a igualdade numérica:

0 − 1 = 1 ⇔ − 1 = 1.

Para achar os extremos da função:

f ( x) = 1 − x 2

condicionados por:

x− y =1

há que resolver o sistema de equações:

y = 1 − x2


x − y = 1

cujas soluções, muito fáceis de encontrar, são:

x = −2 ∨ x =1

tendo-se que:

− 2 ∈[ − 2,1] ∧ 1 ∈[ − 2,1] .

Dado que se tem:

f ( −2 ) = 1 − ( − 2 ) = −3 ∧
2
f (1) = 1 − 12 = 0

f (1) = 0 é o máximo da função:

f ( x) = 1 − x 2

sujeito à condição:

x− y =1

e ainda ao facto de:

x ∈[ − 2,1] .

De igual modo:

f ( −2 ) = −3

é o mínimo de:
f ( x) = 1 − x 2

sujeito à condição:

x− y =1

e também à condição:

x ∈[ − 2,1] .

De um modo sintético, o problema consiste em resolver os problemas de extremos condicionados:

Max f ( x) = 1 − x 2

x− y =1

x ∈[ − 2,1]

ou:

Min f ( x) = 1 − x 2

x− y =1

x ∈[ − 2,1] . •

Com estes dois exemplos pode agora entender-se melhor o Problema da Programação Linear. De um modo
puramente matemático, ele consiste na resolução do problema seguinte:

Max Z = c1 x1 + c2 x 2 + ...... + cn x n

a11 x1 + a12 x 2 + ...... + a1n x n ≤ b1


a 21 x 2 + a 22 x 2 + ...... + a 2 n x n ≤ b2
......... ... ......... ... ...... ... .......... ... .....
a m1 x1 + a m2 x 2 + ...... + a mn x n ≤ bm

xj ≥ 0

com j ∈ { 1,2,..., n} . Ou seja, pretende determinar-se o ponto ( x ,x


,..., x n ) ∈ D f , que torna máxima a função,
1 2

Z = f : D ⊆ R n → R, onde D é o conjunto dos pontos de R n definido pelas m inequações indicadas. As variáveis x j ,


( j = 1,..., n) , são não negativas, sendo c j ∈ R, ( j = 1,..., n) , e bi ∈ R, ( i = 1,..., m) . A este problema de
Programação Linear dá-se o nome de primal.

Pode, para já, dizer-se o seguinte:

∂ a função objectivo do primal pretende maximizar-se;

• as inequações do primal são do tipo ≤, e tomam o nome de restrições do problema;

÷ o conjunto de todas as soluções possíveis do primal, gerado pelo das restrições, é um conjunto convexo.
Neste ponto, já conhecido o que se entende em Programação Linear por primal, pode definir-se o conceito de dual
do problema apresentado, como sendo o novo problema:

Min D = b1 y1 + b2 y 2 + ...... + b1 y m
......... .. ......... .. ........ .. ..........
a11 y1 + a 21 y 2 + ...... + a m1 y m ≥ c1
a12 y1 + a 22 y 2 + ...... + a m2 y m ≥ c2
......... .. ......... .. ...... .. .......... .. ....
a1n y1 + a 2 n y 2 + ...... + a mn y m ≥ cn

yi ≥ 0

com i ∈ { 1,..., m} . Ou seja, pretende aqui determinar-se o ponto ( y1 ,..., y m ) ∈ Dg , que torna mínima a função
D = g: G ⊆ R m → R, onde G é o conjunto dos pontos de R m definido pelas n inequações - restrições - indicadas. As
variáveis yi , ( i = 1,..., m) , são não negativas, sendo c j ∈ R, ( j = 1,..., n) , e bi ∈ R, ( i = 1,..., m) . É a este problema
de Programação Linear que se dá o nome de dual (do primal).

Pode dizer-se agora o seguinte:

∂ a função objectivo do primal deve ser maximizada, enquanto que a do dual deve ser minimizada;

• as constantes dos segundos membros das restrições do primal são os coeficientes da função objectivo do dual;

÷ os coenficientes da função objectivo do primal são as constantes dos segundos membros do dual;

≠ as restrições do primal são do tipo ≤, ao passo que as do dual são do tipo ≥;

≡ o número de variáveis do primal é igual ao número de restrições do dual;

≈ o número de variáveis do dual é igual ao número de restrições do primal;

… os coeficientes dos primeiros membros das restrições do primal formam uma matriz que é transposta da dos
coeficientes dos primeiros membros das restrições do dual;

 o dual do dual é o primal;

 os conjuntos de todas as soluções possíveis, do primal ou do dual, são convexos.

Na formulação dos problemas primal e dual aceitaram-se as condições que se indicaram. Pode acontecer, porém,
que ocorram excepções.

Assim, admita-se que certa restrição do primal é uma igualdade. Neste caso, a correspondente variável do dual é
um número real. Um exemplo esclarece o que está em jogo.

EXEMPLO. Seja o problema primal de Programação Linear que se segue:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 31 x1 + a 32 x 2 + a 33 x 3 = b3
x1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0 .

Então, o respectivo dual é:

Min D = b1 y1 + b2 y 2 + b3 y 3

a11 y1 + a 21 y 2 + a 31 y 3 ≥ c1
a12 y1 + a 22 y 2 + a 32 y 3 ≥ c2
a13 y1 + a 23 y 2 + a 33 y 3 ≥ c3

y1 ≥ 0 , y 2 ≥ 0 , y 3 ∈ R. •

Veja-se, a este propósito, um outro

EXEMPLO. Seja o problema primal de Programação Linear:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 = b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 31 x1 + a 32 x 2 + a 33 x 3 = b3

x1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0.

O respectivo dual é então:

Min D = b1 y1 + b2 y 2 + b3 y 3

a11 y1 + a 21 y 2 + a 31 y 3 ≥ c1
a12 y1 + a 22 y 2 + a 32 y 3 ≥ c2
a13 y1 + a 23 y 2 + a 33 y 3 ≥ c3

y 2 ≥ 0 , y1 , y 3 ∈ R. •

Admita-se, agora, que certa variável do primal é um número real qualquer. Então, a restrição correspondente do
dual é uma igualdade, É o que se mostra no seguinte

EXEMPLO. Seja o problema primal de Programação Linear:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 31 x1 + a 32 x 2 + a 33 x 3 ≤ b3

x1 , x 2 ∈ R , x 3 ≥ 0.
O dual deste problema é, nos termos do que se disse:

Min D = b1 y1 + b2 y 2 b3 y 3

a11 y1 + a 21 y 2 a 31 y 3 = c1
a12 y1 + a 22 y 2 a 32 y 3 = c2
a13 y1 + a 23 y 2 a 33 y 3 ≥ c3

y1 ≥ 0 , y 2 ≥ 0 , y 3 ≥ 0. •

Veja-se, ainda, este novo

EXEMPLO. Seja o problema primal de Programação Linear:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 = b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 31 x1 + a 32 x 2 + a 33 x 3 ≤ b3

x1 ≥ 0 , x 2 , x 3 ∈ R.

Neste caso, como já se percebe facilmente, o respectivo dual é:

Min D = b1 y1 + b2 y 2 + b3 y 3

a11 y1 + a 21 y 2 + a 31 y 3 ≥ c1
a12 y1 + a 22 y 2 + a 32 y 3 = c2
a13 y1 + a 23 y 2 + a 33 y 3 = c3

x1 ∈ R , x 2 ≥ 0 , x 3 ≥ 0. •

Nos casos em que se está perante uma variável sem restrição de sinal, seja x j ∈ R, ( j = 1,..., n) , basta escrever
a variável em causa na forma:

x j = x 'j − x ''j

'
já com x j ≥ 0 e x ''j ≥ 0 , uma vez que qualquer número real pode sempre escrever-se como a diferença de dois outros
não negativos. Assim se cai, pois, nas condições inicialmente apresentadas, para o primal e para o dual, no respeitante
à respectivas variáveis.

De igual modo, no sentido de se ser conduzido à situação inicial, quando surge uma igualdade em certa condição, a
mesma pode ser substituída por duas desigualdades, uma do tipo ≥, outra do tipo ≤. É o que se mostra com o seguinte

EXEMPLO. Seja o seguinte problema de Programação Linear:


Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 = b2
a 31 x1 + a 23 x 2 + a 33 x 3 ≤ b3

x1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0.

Este problema pode escrever-se na forma equivalente:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 21 x1 + a 22 x 2 + a 23 x 3 ≥ b2
a 31 x1 + a 32 x 2 + a 33 x 3 ≤ b3

x1 ≥ 0 , x 2 ∈ R, x 3 ≥ 0

ou, ainda:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
− a 21 x1 − a 22 x 2 − a 23 x 3 ≤ − b2
a 31 x1 + a 32 x 2 + a 33 x 3 ≤ b3

x1 ≥ 0 , x 2 ∈ R, x 3 ≥ 0

Admita-se, agora, que certa variável do primal é não positiva. Neste caso, a correspondente restrição do dual é do
tipo ≤. Do mesmo modo, se certa restrição do primal é do tipo ≥, a correspondente variável do dual é não positiva. É o
que se mostra com o novo

EXEMPLO. Seja o problema primal de Programação Linear:

Max Z = c1 x1 + c2 x 2 + c3 x 3

a11 x1 + a12 x 2 + a13 x 3 ≤ b1


a 21 x1 + a 22 x 2 + a 23 x 3 ≤ b2
a 31 x1 + a 32 x 2 + a 33 x 3 ≥ b3

x1 ≥ 0 , x 2 ≤ 0 , x 3 ≥ 0 .

Então, o dual deste problema, nos termos do que antes se referiu, é:


Min D = b1 y1 + b2 y 2 + b3 y 3

a11 y1 + a 21 y 2 + a 31 y 3 ≥ c1
a12 y1 + a 22 y 2 + a 32 y 3 ≤ c2
a13 y1 + a 23 y 2 + a 33 y 3 ≥ c3

x1 ≥ 0 , x2 ≥ 0 , x 3 ≤ 0. •

Para um dado problema de Programação Linear, no caso de existir o óptimo do primal, também existe o do dual e
são iguais. Mas para soluções possíveis do primal inferiores ao seu óptimo, existirão soluções possíveis do dual
superiores ao seu óptimo, e portanto soluções não óptimas do primal serão menores que as correspondentes - não
óptimas - do dual.

Finalmente, se a solução do primal crescer positivamente para infinito, o dual não tem qualquer solução possível.
Em contrapartida, se a solução do dual decrescer negativamente para infinito, também o primal não terá qualquer
solução possível. Para lá destes casos, podem mesmo não existir soluções possíveis para ambos os problemas, primal
e dual.