algoritmo de transportes objecto de aprendizagem manuel pina marquesdeig - 2010

28
Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina Marques DEIG - 2010

Upload: isabel-freire-fraga

Post on 07-Apr-2016

216 views

Category:

Documents


1 download

TRANSCRIPT

Algoritmo de Transportes

Objecto de Aprendizagem

Manuel Pina MarquesDEIG - 2010

O problema da distribuição de frigorificos

Um fabricante de frigoríficos tem 3 fabricas, de onde abastece 3 clientes (distribuidores). No início de cada mês recebe de cada cliente a informação sobre o numero de frigoríficos que pretende para esse mês. Esses frigoríficos terão que ser produzidos nas várias fábricas, atendendo à capacidade de produção de cada uma delas. O custo de transportar um frigorifico de cada fábrica para cada cliente é conhecido. O problema consiste em determinar que fábrica(s) deve(m) abastecer cada cliente, e em que quantidades, de forma a que, respeitando as capacidades de produção das fábricas e satisfazendo as necessidades dos clientes, o custo total de transporte seja minimizado. Formule este problema considerando que as capacidades de produção são iguais em todas as fábricas (20 frigoríficos ) e que as necessidades dos clientes são de 10, 30 e 20 frigoríficos. Os custos unitários de transporte são os indicados na tabela seguinte (em milhares de unidades monetárias):

Clientes1 2 3

1 2 4 3Fábricas 2 1 5 2

3 1 1 6

Manuel Pina Marques

Modelo de PL para Problema de Transportes

xij - quantidade de frigoríficos a transportar da fabrica i para o cliente j

min 2x11 + 4x12 + 3x13 + x21 + 5x22 + 2x23 + x31 + x32 + 6x33

sujeito a:

x11 +x12 +x13 20

x21 +x22 +x23 20

x31 +x32 +x33 20

x11 +x21 +x31 10

x12 +x22 +x32 30

x13 +x23 +x33 20

xij 0 Manuel Pina Marques

1

2

3Orig

ens (

Fábr

icas

)

1 2 3Destinos (Clientes)

2 4 3

1 5 2

1 1 6

20

20

20

Quantidade disponível em cada origem

Quantidade necessária em cada destino

10 30 20

cijCustos unitários

de transporte

x11 x12 x13

x21

x31

x22 x32

x32 x33

Variáveis de decisão xij

Quantidade a enviar da origem i

para o destino j

Formulação como um Problema de Transportes Quadro para algoritmo de transportes

Manuel Pina Marques

(i) Geração de uma solução inicial para o problema:

Regra do Custo Mínimo Regra do canto NW

(ii) Melhorar a solução até se obter a solução óptima

Algoritmo de Transportes

Manuel Pina Marques

2 4 3

1 5 2

1 1 6

20

20

20

10 30 20

Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO

Atribuir valores às variáveis de decisão, por ordem crescente dos respectivos custos unitários de transporte (cij)

Menor valor de cij

Há mais duas variáveis com

cij =1Escolher

arbitrariamente entre as três

variáveis . Vai-se escolher a variável

X21

1

Atribuir o maior valor possível à variável x21, tendo em conta a quantidade disponível na origem 2 (20 unidades) e a quantidade necessária no destino 1 (10 unidades)

10

1

2

3

1 2 3

Manuel Pina Marques

2 4 3

1 5 2

1 1 6

20

20

20

10 30 20

Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO:

10

0

10

Corrigir a quantidade

disponível na origem 2

Corrigir a quantidade

procurada no destino 1

1

2

3

1 2 3

Como está satisfeita na totalidade a quantidade necessária no destino 1, atribuir o valor zero às outras variáveis da coluna de

x21 (isto é, elas serão variáveis não básicas nesta solução)

Manuel Pina Marques

2 4 3

1 5 2

1 1 6

20

20

20

10 30 20

Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO:

10

0

10

1

2

3

1 2 3

Menor valor de cij

20 0

10

Atribuir o maior valor possível à variável x32, tendo em conta a quantidade

disponível na origem 3 (20 unidades) e a necessária no destino 2 (30 unidades)

Como fica esgotada a quantidade disponível na origem 3, atribuir o valor zero à variável x33 (isto é, ela será uma variável não básica)

10 0

10

10 10

0

10 0

0 Manuel Pina Marques

2 4 3

1 5 2

1 1 6

20

20

20

10 30 20

Geração de uma solução inicial pela Regra do Canto NW

Começando no canto superior esquerdo (canto NW), atribuir à variável x11 o maior valor possível compatível com quantidade

disponível na origem 1 (20) e da quantidade necessária no destino 1 (10)

1

1

2

3

1 2 3

10

0

10

Das variáveis com valor ainda não atribuído, considera-se a do canto NW.

Atribuir a essa variável (no exemplo será x12) o maior valor possível.

10 0

20

20

Como a atribuição do valor 20 à variável x22 esgota simultaneamente a oferta da origem 2 e a

necessidade do destino 2 (e existem variáveis a que ainda não foram atribuídos valores) a solução inicial

que se irá obter será degenerada

Das variáveis com valor ainda não atribuído, considera-se a do canto NW. Atribuir a essa

variável (no exemplo será x22) o maior

valor possível.

0

0

20 0

0Manuel Pina Marques

Geração de uma solução inicial pela Regra do Canto NW

2 4 3

1 5 2

1 1 61

1

2

3

1 2 3

10 10

20

20

A solução encontrada é admissível, mas não é básica (só tem 4 variáveis básicas)

Para ser básica é necessário de o número de variáveis básicas seja igual a (n + m – 1)

No exemplo, 3 (origens) + 3 (destinos) – 1 = 5 variáveis básicas

É assim necessário “promover” uma variável não básica (nula) a básica

Representação das variáveis básicas através de um grafo:

O1origens destinosx11

x12

x22

x33

A selecção da variável a “promover” a básica deverá garantir que o grafo representativo das variáveis básicas seja uma árvore e conexo(qualquer vértice do grafo deve ser acessível a partir de qualquer outro vértice) x21

x21

x21 não pode ser “promovida” a básica, pois os vértices O3 e D3 continuam a não serem acessíveis a partir dos restantes vértices

O2

O3

D1

D2

D3x23Se x23 for “promovida” a básica, os vértices O3 e D3

passam a ser acessíveis a partir dos restantes vértices

x23

Outras variáveis que podem ser “promovidas” a básicas, em alternativa a x23

x13

x31 x32

x13

x31 x32

Vamos, por exemplo, promover x13 a básica, de entre as variáveis possíveis (x13, x23, x31, x32)

0

Solução inicial obtida pela regra do Canto NW

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

0

Algoritmo de Transportes 1- cálculo dos custos marginais

Para cada variável básica xij, definir dois custos (custos marginais):

ui - custo de despacho na origem i

u1

u2

u3

v1 v2 v3

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

5 equações e 6 incógnitasPode-se arbitrar o valor de uma qualquer das incógnitas e, a partir das equações, determinar os valores das restantes incógnitas.

vj - custo de recepção no destino j, de forma a que

cij = ui + vj Obtêm-se assim 5 equações (tantas quantas as variáveis básicas):

2 4 3

1 5 2

1 61

10 10

20

20

0u1

u2

u3

v1 v2 v3

Para x11 tem-se: c11 = u1 + v1 2 = u1

Arbitrando, por exemplo, v1 = 0

0x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

+ 0 u1 = 2

2

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

Algoritmo de Transportes 1- cálculo dos custos marginais

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

0u1

u2

u3

v1 v2 v3

Para x12 tem-se: c12 = u1 + v2 4 = 2

Arbitrando, por exemplo, v1 = 0

0

+ v2 = 2

2

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

v2

2

Algoritmo de Transportes 1- cálculo dos custos marginais

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

0u1

u2

u3

v1 v2 v3

Para x13 tem-se: c13 = u1 + v3 3 = 2

Arbitrando, por exemplo, v1 = 0

0

+ v3 = 1

2

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

v3

2 1

Algoritmo de Transportes 1- cálculo dos custos marginais

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

0u1

u2

u3

v1 v2 v3

Para x22 tem-se: c22 = u2 + v2 5 = u2

Arbitrando, por exemplo, v1 = 0

0

+ 2 = 3

2

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

2 1

u2

3

Algoritmo de Transportes 1- cálculo dos custos marginais

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

0u1

u3

v1 v2 v3

Para x33 tem-se: c33 = u3 + v3 6 = u3

Arbitrando, por exemplo, v1 = 0

0

+ 1 = 5

2

x11: 2 = u1 + v1

x12: 4 = u1 + v2

x13: 3 = u1 + v3

x22: 5 = u2 + v2

x33: 6 = u3 + v3

2 1

u3

3

5

Algoritmo de Transportes 1- cálculo dos custos marginais

Manuel Pina Marques

2 4 3

1 5 2

1 61

10 10

20

20

00

2

2 1

3

5

Algoritmo de Transportes 2 - cálculo das diferenças

Para cada variável não básica xij, calcular a diferença i j = cij – [ui + vj]

x23: 23 = c23 – [u2 + v3]

21 = 1 – [3 + 0] = –2

–2

23 = 2 – [3 + 1] = –2

x21: 21 = c21 – [u2 + v1]

x31: 31 = c31 – [u3 + v1]

x32: 32 = c32 – [u3 + v2]

–2

31 = 1 – [5 + 0] = –4

–4

–6 32 = 1 – [5 + 2] =

–6

A solução é óptima se se verificarem as condições:

Problema de minimizaçãoij 0

Problema de Maximizaçãoij 0

Os ij têm o mesmo significado dos coeficientes

na função objectivo no Simplex

Manuel Pina Marques

Algoritmo de Transportes

A solução não é óptima, pois há ij < 0e o problema é de minimização

Num problema de minimização entra para a base a variável não básica que tiver associado um ij mais negativo(quando o problema é de Maximização, entra para a base a variável com ij positivo, de maior valor )

Entra para a base a variável x32 ( 32 = – 6 )

2 4 3

1 5 2

1 61

10 10

20

20

00

2

2 1

3

5

–2 –2

–4 –6 x32

Manuel Pina Marques

Algoritmo de Transportes

2 4 3

1 5 2

1 61

10 10

20

20

0

–2 –2

–4 –6

Ao entrar na base, a variável x32 deixa de valer 0 passando a valer , positivo.

O valor das variáveis básicas altera-se de forma a que:

• Sejam respeitadas disponibilidades e necessidades (restrições do problema)(i)• só uma variável não básica passe a básica (e vice-versa);(ii)• o valor de garanta que nenhuma variável tome um valor negativo(iii)

+ –

A disponibilidade de frigoríficos na fábrica 3 é de 20 frigoríficos.A solução actual, x31 = x32 = 0 e x33 = 20 respeita essa disponibilidade (linha 3 da tabela).

Como x32 vai entrar para a base (por adição do valor ), esta restrição deixa de ser respeitada:

x31 + (x32 + ) + x33 = 20 0 + (0 + ) + 20 = 20 + 20 = 20

Na nova solução, a fábrica 3 teria de fornecer (20 + ) frigoríficos, mas só dispõe de 20.

Para que esta restrição se volte a verificar, tem que se subtrair, a outra variável da linha 3, o mesmo valor que foi adicionado a x32

Não é possível subtrair a x31 (variável não básica), pois esta variável assumiria um valor negativo

Deve-se então subtrair a uma variável básica que, no exemplo, terá de ser x33

Algoritmo de Transportes

2 4 3

1 5 2

1 61

10 10

20

20

0

–2 –2

–4 –6

O valor das variáveis básicas altera-se de forma a que:

• Sejam respeitadas disponibilidades e necessidades (restrições do problema)(i)• só uma variável não básica passe a básica (e vice-versa);(ii)• o valor de garanta que nenhuma variável tome um valor negativo(iii)

+ –

+

Subtrair à variável x33 faz com que deixe de ser respeitada a necessidade do cliente 3. Este deixa de receber os 20 frigoríficos que necessita e passa a receber (20 – )

Para que esta restrição se volte a verificar, tem que se adicionar, a outra variável da coluna 3, o mesmo valor que foi subtraído a x33

Não é possível adicionar a x23 (variável não básica), senão haveria uma segunda variável não básica a entrar para a base na mesma iteração, o que iria co ntrariar (ii)

Deve-se então adicionar a uma variável básica que, no exemplo, terá de ser x13

Algoritmo de Transportes

2 4 3

1 5 2

1 61

10 10

20

20

0

–2 –2

–4 –6

O valor das variáveis básicas altera-se de forma a que:

• Sejam respeitadas disponibilidades e necessidades (restrições do problema)(i)• só uma variável não básica passe a básica (e vice-versa);(ii)• o valor de garanta que nenhuma variável tome um valor negativo(iii)

+ –

– +

Adicionar à variável x13 faz com que deixe de ser respeitada a disponibilidade da fábrica 1. Esta deixa de fornecer os 20 frigoríficos de que dispõe, e passa a fornecer (20 + )

Para que esta restrição se volte a verificar, tem que se subtrair, a outra variável básica da linha 1, o mesmo valor que foi adicionado a x13

Caso se subtraia a x11, quando se quiser garantir que o cliente 1 recebe os 10 frigoríficos de que necessita, ter-se-á de adicionar a x21 ou a x31 (o que faria com que houvesse uma segunda variável a entrar na base nesta iteração).

Deve-se então subtrair a x12

+

+ Manuel Pina Marques

Algoritmo de Transportes

2 4 3

1 5 2

1 61

10 10

20

20

0

–2 –2

–4 –6

O valor das variáveis básicas altera-se de forma a que:

• Sejam respeitadas disponibilidades e necessidades (restrições do problema)(i)• só uma variável não básica passe a básica (e vice-versa);(ii)• o valor de garanta que nenhuma variável tome um valor negativo(iii)

+ –

– +

Foram definidas as variáveis que, na próxima solução, irão ver o seu valor alterado (as variáveis a que adicionamos, ou subtraímos, )

Para definirmos o valor de , temos de atender a que:• o valor de tem de garantir que

nenhuma variável tome um valor negativo;

• uma das variáveis básicas tem de passar a não básica (isto é, tem de se anular)

= ?

= min (10, 20) = 10

deverá ser igual ao menor valor das variáveis a que o

vamos subtrair

Algoritmo de Transportes

2 4 3

1 5 2

1 61

10 10

20

20

0

–2 –2

–4 –6 + –

– +

= min (10, 20) = 10

x12 = 10 – = 10 – 10 = 0

x13 = 0 + = 0 +10 = 10

x32 = = 10

x33 = 20 – = 20 – 10 = 10

A variável x12 anula-se, logo na nova solução passa a ser uma variável não básica

10

A variável x32 na nova solução passa a ser uma variável básica

10 10

Obtivemos assim uma nova solução alterando o valor de 4 variáveis

Manuel Pina Marques

Algoritmo de Transportes

10

20

10

10 10

Arbitrando, por exemplo, u1 = 0

0 2

1

1

4

5

1

3

2

6

2 3

3

–2

7 –8

6

–8

–4

A solução não é óptima, pois há ij < 0

Entra para a base a variável xij com ij mais negativo:

Há um empate no critério de entrada para a base; pode entrar x21 ou x23,

ambos com ij = – 8

Vai-se escolher a variável x21 para

entrar para a base (poderia ter sido x23 )

Manuel Pina Marques

Algoritmo de Transportes

10

20

10

10 10

Definição do conjunto de variáveis cujo valor será alterado na próxima solução:

2

1

1

4

5

1

3

2

6

–8

6

–8

–4

+

+

– +

A solução seguinte será obtida alterando o valor actual de 6 variáveis Note-se que na iteração anterior alteramos somente o valor de 4 variáveisO número de variáveis cujo valor é alterado pode variar de iteração para iteração

= min (10, 20, 10) = 10

deverá ser igual ao menor valor das variáveis a que o vamos subtrair

10

20

Terá de sair da base (ou seja, terá se se anular) uma e uma só variável.

No caso presente, ao subtrair = 10 às variáveis x11 e x33 (que tomam ambas actualmente o valor de 10), os valores de ambas as variáveis anulam-se.

Mas só uma delas pode passar a não básica. Por isso, vamos admitir que a variável x11 permanece como básica e que x33 passa a básica.(podíamos ter feito ao contrário: x33 permanecia como básica e que x11 passava) a básica

0x11 permanece básica

20

10

Manuel Pina Marques

Algoritmo de Transportes

10

20

2

1

1

4

5

1

3

2

68

–2

0

4

10

2000

–5

–1

2 36

Arbitrando, por exemplo, u1 = 0 A solução não é óptima, pois 12 < 0

+–

+ –

= min (0,10) = 0 Em termos numéricos a solução não se vai alterar nesta iteração; no entanto, o conjunto das variáveis básicas altera-se, pois a variável x11 passa agora a ser não básica, e x12 passa a ser básica

0

Manuel Pina Marques

Algoritmo de Transportes

10

20

2

1

1

4

5

1

3

2

66

2

–2

4

10

204

1

5

–4 –10

Arbitrando, por exemplo, v2 = 0 A solução não é óptima, pois 23 = – 2 < 0

+

–+

= min (20,10) = 10

0

10

1010

Manuel Pina Marques

Algoritmo de Transportes

20

2

1

1

4

5

1

3

2

66

0

2

2

10

3

0

2

–1 01

Arbitrando, por exemplo, v3 = 0 A solução é óptima, pois todos os ij 0

10

1010

A solução óptima será então• Enviar da Fábrica 1, 10 frigoríficos para o Cliente 2, e 10 frigoríficos para o Cliente 3;• Enviar da Fábrica 2, 10 frigoríficos para o Cliente 1, e 10 frigoríficos para o Cliente 3;• Enviar da Fábrica 3, 20 frigoríficos para o Cliente 2

1

2

3Orig

ens -

(Fáb

ricas

)1 2 3

Destinos - (Clientes)

O custo total de transporte (valor da função objectivo) associado à solução óptima:CT = 4 x 10 + 3 x 10 + 1 x 10 + 2 x 10 + 1 x 20 = 120

Como 11 = 0, o problema tem uma solução óptima alternativa à que aqui foi obtida.

Caso se desejasse conhecer essa solução óptima alternativa teríamos de fazer entrar para a base a variável x11

Manuel Pina Marques