Você está na página 1de 20

Prof.

Geraldo Nunes Silva


(Revisado por Socorro Rangel)
Estas notas de aula são Baseadas no livro:
“Hillier, F. S. e G. J. Lieberman. Introdução à Pesquisa Operacional,
Campus, 3a ed., 1988”
Agradeço a Professora Gladys Castillo do Departamento de Matemática da
Universidade de Aveiro por ter permitido a utilização de alguns slides
preparados pelo um grupo de pessoas de seu departamento

O método Simplex Aplicado


ao Problema de Transporte
(PT).
Obtenção de uma SBF inicial.
 Método do canto N-W;
 Método do mínimo da matriz de custos;
 Método de Vogel.

 Obtenção da solução ótima.


 Simplex especializado.

1
Problema de Transporte. Exemplo Protótipo

Uns dos principais produtos da firma Lactosal é o leite.

Os pacotes de leites são empacotados


em 3 fábricas
e depois são distribuídos de caminhão
para quatro armazéns

Conhecendo os custos de transporte, a procura prevista


para cada armazém e as capacidades de produção de
cada fábrica, pretende-se:

OTIMIZAR O PROGRAMA DE DISTRIBUIÇÃO DIÁRIO DO


LEITE.

Problema de Transporte. Exemplo Protótipo

Os dados dos custos de uma carga de leite para cada combinação


fábrica-armazém e das ofertas (produção) e procuras, em cargas de
caminhão/dia, são os seguintes:

Custo por carga de


caminhão
24 cargas diárias
Armazéns
de leite devem ser
produzidas e Fábricas 1 2 3 4 Oferta
distribuídas 1 1 2 3 4 6

2 4 3 2 4 8

3 0 2 2 1 10

Procura 4 7 6 7

2
Quadro do Problema de Transporte
Custo por carga de
camião
Armazéns
Fábricas 1 2 3 4 Oferta

1 1 2 3 4 6

2 4 3 2 4 8

3 0 2 2 1 10

Procura 4 7 6 7

Destino
1 2 3 4 Oferta
Origem
1 2 3 4
1 x11 x12 x13 x14 6
4 3 2 4
2 x21 x22 x23 x24 8
0 2 2 1
3 x31 x32 x33 x34 10

Procura 4 7 6 7 24 =24

Para o exemplo protótipo a oferta total é igual


à procura total

Algoritmo para a resolução do PT.

Obtenção de uma SBF


inicial

A SBF verifica o Sim


critério de
otimalidade?
FIM !!!
a solução é
Não ótima

Obter uma SBF "melhor"

3
Algoritmo para a resolução do PT.
• Como o problema de transporte é apenas um tipo especial de
problema de programação linear, ele poderia ser resolvido aplicando
o método simplex exatamente como vimos anteriormente

• Para tanto, teríamos que acrescentar variáveis artificiais e usando o


método “big M”, por exemplo, proceder as iterações do método
simplex.

• Entretanto, é possível explorar esta estrutura especial para


obtermos um método muito mais eficiente o qual é chamado
Método Simplex para o Problema do Transporte

• Cabe observar que outros tipos de estruturas especiais podem ser


exploradas de forma a obter algoritmos eficientes (Por exemplo o
Problema da Designação)

Passo 1: Obtenção de uma SBF Inicial


• Qualquer SBF do problema de transporte tem no máximo
m+n-1 variáveis básicas
Qualquer restrição de oferta é igual à soma das restrições de demanda menos
a soma das outras restrições de oferta e, cada restrição de demanda também é
igual a soma das restrições de oferta menos a soma das outras restições de
demanda.

• Assim vamos contruir uma SBF inicial selecionando m+n–1


variáveis, uma de cada vez e vamos atribuir valores a essas
variáveis.

•Diversos métodos foram propostos para obteção de uma SBF


inicial, vejamos a seguir alguns deles.

4
Passo 1: Obtenção de uma SBF Inicial
Método do Canto Noroeste
A variável básica escolhida é, em cada quadro, a variável
situada no canto superior esquerdo (daqui o nome do canto do
NW (NorthWest).

A primeira variável básica escolhida será sempre x11, depois que


tenha sido traçada a coluna 1 ou a linha 1,
será escolhida como variável básica x12 ou x21 respectivamente, e
assim sucessivamente até terem sido traçadas todas as linhas e todas
as colunas.

Este método é de aplicação muito fácil, mas tem como grande inconveniente o fato de
não considerar os custos na identificação da SBF inicial.

Exemplo Protótipo. Método do Canto Noroeste

1º. x11 =min (4,6 )= 4 1 2 3 4


6 2
2º. x12 =min (7,2 )= 2 4 2
4 3 2 4
8 3
3º. x22 =min (5,8 )= 5 5 3
0 2 2 1
4º. x23=min (6,3 )= 3 10 7
3 7
5º. x33=min (3,10 )= 3
4 7 6 7
6º. x34=min (7,7 )= 7
5 3

SBF inicial: X0 = ( 4 , 2, 0, 0, 0, 5, 3, 0, 0, 0, 3, 7 ) ; z0 = 42

5
Passo 1: Obtenção de uma SBF Inicial

Cuidado: Para formar uma base, as (m+n-1) células do quadro


do transporte (variáveis) escolhidas não podem formar um ciclo,
pois as colunas da matriz de restrições associadas a essas
variáveis devem ser linearmente independentes. Ver por exemplo
BAZARAA, M.J. e JARVIS, J.J. - Linear Programming and
Network Flows, J. Wiley & Sons, N.Y., 1977 (pg. 361-364).

Exemplos de Soluções básicas.

Passo 1: Obtenção de uma SBF Inicial


Método do Mínimo da Matriz dos Custos.
A variável básica escolhida é a variável que corresponde ao
menor custo (em caso de empate a escolha é arbitrária).

A primeira variável básica escolhida será sempre a de menor


custo, depois será escolhida como variável básica a de menor
custo no quadro resultante relativo ao que foi traçado, e assim
sucessivamente, até terem sido traçadas todas as linhas e
todas as colunas.

Este método, em princípio, fornece soluções iniciais mais próximas da solução ótima
que o método anterior, já que são considerados os custos na identificação da SBF
inicial.

6
Exemplo Protótipo.Método do Mínimo dos Custos

1º: min (cij )= c31= 0


 x31 =min (4,10)= 4 1 2 3 4
2º: min (cij) =c34= 1 
6 6
x34 = min ( 7, 6 )= 6 4 3 2 4
1 1 8 2 1
3º: min (ci) = c12=c23= 2 6
 x12 = min ( 7, 6 ) = 6 0 2 2 1
10 6
4º: min (cij) =c23= 2 4 6
 x23= min ( 6, 8 ) = 6
5º: min (cij)= c22= 3  4 7 6 7
x22= min ( 2, 1 ) = 1 1 1
6º: min (cij) =c24= 4 
x24=min (1, 1 ) =1

SBF inicial: X0 = ( 0 , 6, 0, 0, 0, 1, 6, 1, 4,0, 0,6) ; z = 38

Passo 1: Obtenção de uma SBA Inicial.


Método de Vogel
A variável básica escolhida é, em cada quadro, a variável que
corresponde ao menor custo da linha ou coluna associada à
maior das diferenças entre os dois menores custos de cada
linha e cada coluna(em caso de empate a escolha é arbitrária).

Este método identifica uma SBF inicial, em geral, melhor do que as obtidas pelos
métodos anteriores.

7
Exemplo Protótipo.Método de Vogel.
Quadro 1

1º: acrescentar uma linha e


uma coluna, com as 1 2 3 4 1
diferenças entre os dois 6
menores custos, em coluna e
4 3 2 4 1
em linha respectivamente.
8
2º: Selecionar a maior das
0 2 2 1 1
diferenças: max (diferenças)
7 10 3
= 3 , coluna 4.

3º: Selecionar o menor dos 1 0 0 3 mínimo


custos para esta coluna:
min (cij: j=4)= c34= 1 4 7 6 7 máximo
 x34= min ( 7, 10 ) = 7

Iteração 1: x34= 7

Exemplo Protótipo. Método de Vogel.


Quadro 2
1º: calcular as novas
diferenças relativas apenas
aos elementos não traçados
1 2 3 4
2º: Selecionar a maior das 1 6
diferenças:
4 3 2 4
max (diferenças) = 2 e
1 8
corresponde à linha 3.

0 2 2 1
3º: Selecionar o menor dos 3 7
2 3
custos para esta linha:
min (cij: i=3)= c31= 0 1 0 0
 x31= min ( 4, 3 ) = 3
4 7 6
máximo
1 mínimo

Iteração 2: x31= 3

8
Exemplo Protótipo. Método de Vogel.
Quadro 3

1º: calcular as novas mínimo


diferenças relativas
apenas aos elementos 1 2 3 4
não traçados 1 1 6 5
4 3 2 4
2º: Selecionar a maior 1 8
das diferenças :
max (diferenças) = 3
0 2 2 1
e corresponde à coluna 1.
3 7
3º: Selecionar o menor 3 1 1
dos custos para esta
coluna: 4 7 6
min (cij: j=1) = c11= 1
 x11= min ( 1, 6 ) = 1 1 máximo

Iteração 3: x11= 1

Exemplo Protótipo. Método de Vogel


Quadro 4

1º: calcular as novas


diferenças relativas
apenas aos elementos não mínimo
traçados: todas são iguais
a 1, pelo que pode ser 1 2 3 4 6 5
escolhida qualquer delas . 1 5 1
4 3 2 4 8
2º: Selecionar a coluna 2 1
e o menor dos seus custos :
min (cij: j=2) = c12= 2 2 1
0 2
 x12= min ( 7,5 ) = 5
3 7
1 1
4 7 6
1 2
Iteração 4: x12= 5

9
Exemplo Protótipo. Método de Vogel
Quadro 5

As células restantes
podem ser preenchidas
imediatamente: 1 2 3 4
x22= 2 1 5
x23= 6
4 3 2 4
2 6 8
0 2 2 1
3 7

2 6
SBF inicial: X0 = ( 1 , 5, 0, 0, 0, 2, 6, 0, 3,0, 0,7) ; z = 36

Passo 1: Obtenção de uma SBF Inicial.


Exemplo Protótipo

mais fácil Método SBF inicial f.o. "pior" SBF

Canto do NW X0 = ( 4 , 2, 0, 0, z0 = 42
0, 5, 3, 0,
0, 0, 3, 7)
Mínimo de custos z0 = 38
X0 = ( 0 , 5, 1, 0,
0, 2, 6, 0,
4, 0, 0, 6)
Voguel z0 = 36
X0 = ( 1 , 5, 0, 0,
0, 2, 6, 0,
3, 0, 0, 7) "melhor"
menos fácil
SBF

10
Passo 2: Obtenção da solução ótima
Método de Dantzig. Critério de otimalidade

Determinar a solução dual complementar


ui , vj , ( i=1,2…,m , j=1,2…,n ),
por resolução do Sistema de Dantzig:
ui + vj = cij ( i , j )  IB

A solução dual é FIM


factível: Sim a solução é
ui + vj- cij 0 , ótima !!!
( i , j )  IB ?

Não
Encontrar uma SBF melhor

Obtenção da solução ótima.Método de Dantzig.


Passo 1: Critério de otimalidade.

 O primeiro passo, que consiste em testar a otimalidade da SBF


atual pode ser executado recorrendo à Dualidade.
Para isso é necessário determinar a correspondente solução
dual.
 Devido à simplicidade da estrutura da matrix de restrições do
Problema do Transporte, é fácil determinar a solução dual.

11
Formulação do Problema Dual de Transporte.
Custo por carga de
camião
Armazéns
Fábricas 1 2 3 4 Oferta

Diagrama de Tucker
1 1 2 3 4 6

2 4 3 2 4 8

3 0 2 2 1 10

Procura 4 7 6 7 Problema primal


x110 x120 x130 x140 x210 x220 x230 x240 x310 x320 x330 x340 Max w
u1 livre 1 1 1 1 = 6
u2 livre 1 1 1 1 = 8
u3 livre 1 1 1 1 = 10
v1 livre 1 1 1 = 4
v2 livre 1 1 1 = 7
v3 livre 1 1 1 = 6
v4 livre 1 1 1 = 7












Min z 1 2 3 4 4 3 2 4 0 2 2 1
Problema dual

Formulação do Problema Dual de Transporte.


Custo por carga de
camião
Armazéns
Maximizar w = 6 u1 + 8 u2 + 10 u3 +
Fábricas

1
1

1
2

2
3

3
4

4
Oferta

6
4 v1 + 7 v2 + 6 v3 + 7 v4
2 4 3 2 4 8 sujeito a:
3 0 2 2 1 10
u1 + v1  1
Procura 4 7 6 7
u1 + v2  2
u1 + v3  3
u1 + v4  4
u2 + v1  4
u2 + v2  3
u2 + v3  2
u2 + v4  4
u3 + v1  0
u3 + v2  2
u3 + v3  2
u3 + v4  1
ui , v j livres ( i=1,2,3; j=1,2,3,4 )

12
Exemplo Protótipo. Sistema de Dantzig
Para a SBF inicial obtida pelo Método do Canto N-W
X0 = ( 4 , 2, 0, 0, 0, 5, 3, 0, 0, 0, 3, 7 ) tem-se:

De acordo com a
propriedade das folgas x11= 4 u1 + v1 = 1
complementares, a cada
variável básica do problema x12 = 2 u1 + v2 = 2
primal se encontra associada
uma restrição ativa no
problema dual (variável de
x22 = 5 u2 + v2 = 3
folga igual a zero) .
x23 = 3 u2 + v3 = 2

Sistema de Dantzig x33 = 3 u3 + v3 = 2


para a SBF atual

x34 = 7 u3 + v4 = 1

Exemplo Protótipo. Obtenção da solução ótima.


Passo 1: Critério de Otimalidade
1º. Determinar a solução dual. u1 =0

Dado que uma das (m+n) u1 + v1 = 1 v1 =1


restrições do problema primal é
redundante, este sistema de
equações é indeterminado de u1 + v2 = 2 v2 =2
grau 1, pelo que a sua resolução
é efetuada atribuindo um valor
arbitrário a qualquer das
u2 + v2 = 3 u2 =1
variáveis duais e calculando a
partir desta as restantes
u2 + v3 = 2 v3 =1
( é habitual fazer u1 =0
ou vn =0)
u3 + v3 = 2 u3 =1

u3 + v4 = 1 v4 =0

13
Obtenção da solução ótima.
Passo 1: Critério de Otimalidade
1º. Determinar a solução dual.

Esta solução para as variáveis duais pode ser obtida


diretamente no quadro de transporte correspondente à SBF
associada.
Em síntese, fixando u1 =0, desloca-se em linha através das
células correspondentes às variáveis básicas, para obter os
vj. Uma vez obtidos estes, desloca-se em coluna através das
células correspondentes às variáveis básicas
para obter os ui .

Exemplo Protótipo. Obtenção da solução ótima.


Passo 1: Critério de Otimalidade.
1º. Determinar a solução dual.
( 2 ) u + v =2 ( 4 ) u + v =2 ( 6 ) u + v =1
1 2 2 3 3 4
 0 + v2=2  1 + v3=2  1 + v4=1
(1)
u1+ v1=1
 0 + v1=1 v1=1 v2=2 v3=1 v4=0
1 2 3 4
(3)
u2+ v2=3 u1=0 6
4 2
 u2+ 2 =3
4 3 2 4
(5)
u2=1 5 3 8
u3+ v3=2
 u3+ 1=2 0 2 2 1
u3=1 10
3 7

4 7 6 7 24

14
Obtenção da solução ótima.
Passo 1: Critério de Otimalidade
Como são satisfeitas as restrições duais de igualdade do
Sistema de Dantzig que correspondem às variáveis primais
básicas, resta apenas verificar se as restantes restrições duais
de desigualdade correspondentes às variáveis primais não
básicas , são igualmente satisfeitas, o que significa que a
solução dual é factível e consequentemente
a solução primal associada é ótima.

Isto é equivalente a verificar que todos os custos reduzidos


para as variáveis não básicas sejam não positivos.
A verificação de que ui + vj  cij , ( i , j )  IB , é equivalente a cij - (ui + vj )>=0 .

Exemplo Protótipo. Obtenção da solução ótima.


Passo 1: Critério de Otimalidade
2º. Calcular os custos reduzidos para as variáveis não básicas.

v1=1 v2=2 v3=1 v4=0


1 2 3 4
u1=0 6
4 2 2 4
4 3 2 4
u2=1 5 3 8
2 3
0 2 2 1
u3=1 10
-2 -1 3 7

4 7 6 7 24

15
Exemplo Protótipo. Obtenção da solução ótima.
Passo 1: Critério de Otimalidade
3º. Existe algum cij -(ui + vj) < 0 , ( i , j )  IB ?

v1=1 v2=2 v3=1 v4=0


Esta solução não é
1 2 3 4
ótima, pois existem u1=0 6
valores negativos para 4 2 2 4
(cij - (ui + vj )) nas 4 3 2 4
células (3,1) e (3,2), o u2=1 5 3 8
2 3
que significa que as
0 2 2 1
correspondentes u3=1 10
restrições duais não -2 -1 3 7
estão satisfeitas.
4 7 6 7 24

Exemplo Protótipo. Obtenção da solução ótima.


Passo 2: Critério de Entrada
A variável a entrar na base pode ser escolhida de acordo com o
critério:
min {( cij - ui + vj )< 0 }
Em caso de empate
a escolha é
arbitrária. v1=1 v2=2 v3=1 v4=0
1 2 3 4
u1=0 6
4 2 2 4
4 3 2 4
u2=1 5 3 8
2 3
mínimo
0 2 2 1
u3=1 10
-2 -1 3 7
A variável a entrar 4 7 6 7 24
é x31

16
Obtenção da solução ótima.
Passo 3: Critério de Saída
1º. Selecionar o percurso relativo à variável que entra atribuindo às
células nele incluídas sinais de - ou + .
Ao incrementar a variável básica que entra desde zero até um valor positivo 0,
inicia-se um “processo em cadeia" que garante que as restrições de oferta e
procura continuem satisfeitas. Este processo segue um percurso no quadro a partir
da célula da variável que entra, onde são identificadas quais são as células onde
será preciso subtrair o valor 0, (com sinal -) e aquelas onde será preciso adiciona-
lo (com sinal +).
Tudo com o objetivo de as somas em cada linha e coluna permanecerem
inalteradas.

2º. Selecionar a variável que sai de acordo com o critério:

min {xij  percurso relativo à variável que entra : xij tem sinal -} = 0

Em caso de empate a escolha é arbitrária.

Exemplo Protótipo. Obtenção da solução ótima.


Passo 3: Critério de Saída

Determinar a variável que sai.

1º. Selecionar o percurso


relativo à variável x31
1 2 3 4
- 4 2+ -2 6
atribuindo às células nele
incluídas sinais de
0-4
- ou + . 4 3 2 4
- 5 3+ 8
2º. Selecionar a variável -3
que sai: 0 2 2 1
0 = min ( 4, 5, 3 ) = 3 x31 7 10
 a variável x33 sai 3 -

4 7 6 7 24
mínimo

17
Obtenção da solução ótima.
Passo 4: Obtenção de uma nova SBF

A nova SBF obtém-se adicionando e subtraindo às variáveis


que formam o ciclo o valor de 0, consoante estejam
afetadas com - ou + , respectivamente;
as restantes variáveis mantêm os seus valores inalterados.

Exemplo Protótipo.Obtenção da solução ótima.


Passo 4: Obtenção de uma nova SBF
1 2 3 4
- 4 2 +
4 3 2 4
X1 = ( 1 , 5, 0, 0, z1
= 36
0, 2, 6, 0, - 5 3 +
3, 0, 0, 7 ) 0 2 2 1
x31 3 - 7
x12=2 + 3 = 5
x23=3 +3 = 6
x11=4 -3 = 1 1 2 3 4
1 5
x22=5 -3 = 2 3 4
4 2
x23=3 -3 = 0 2 6
0 2 2 1
x13= 3
3 0 7

18
Exemplo Protótipo. Obtenção da solução ótima.
Iteração 2, Passo 1: Critério de Otimalidade.
1º. Determinar a solução dual.
(2)
u1+ v2=2 (4)
u2+ v3=2 ( 6 ) u + v =1
3 4
 0 + v2=2  1 + v3=2  -1 + v4=1
(1)
u1+ v1=1
 0 + v1=1 v1=1 v2=2 v3=1 v4=2
1 2 3 4
(3)
u2+ v2=3 u1=0 6
1 5
 u2+ 2 =3
4 3 2 4
(5)
u2=1 2 6 8
u3+ v1=0
 u3+ 1=0 0 2 2 1
u3=-1 10
3 7

4 7 6 7 24

Exemplo Protótipo. Obtenção da solução ótima.


Iteração 2, Passo 1: Critério de Otimalidade

2º. Calcular os custos reduzidos (( cij - ui + vj )) para as variáveis


não básicas.

(1) 3-u1- v3
= 3- 0-1 =2
v1=1 v2=2 v3=1 v4=2
1 2 3 4
u1=0 6
1 5 2 2
4 3 2 4
u2=1 2 6 8
2 1
0 2 2 1
u3=-1 10
3 1 2 7

4 7 6 7

19
Exemplo Protótipo. Obtenção da solução ótima.
Iteração 2, Passo 1: Critério de Otimalidade

3º. Existe algum cij -ui - vj < 0 , ( i , j )  IB ?

v1=1 v2=2 v3=1 v4=2


1 2 3 4
u1=0 6
Esta solução é 1 5 2 2
ótima, pois para 4 3 2 4
todas as variáveis u2=1 2 6 8
2 1
não básicas 0 2 2 1
cij -ui – vj >=0 u3=-1 10
3 1 2 7

4 7 6 7

Solução ótima: X1 =(1 , 5, 0, 0, 0, 2, 6, 0, 3, 0, 0, 7); z1 = 36

20

Você também pode gostar