Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina MarquesDEIG - 2010.
-
Upload
isabel-freire-fraga -
Category
Documents
-
view
216 -
download
1
Transcript of 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