290 likes | 411 Views
Algoritmo de Transportes. Objecto de Aprendizagem. DEIG - 2010. Manuel Pina Marques. O problema da distribuição de frigorificos.
E N D
Algoritmo de Transportes Objecto de Aprendizagem DEIG - 2010 Manuel Pina Marques
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): 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
Formulação como um Problema de Transportes Quadro para algoritmo de transportes Variáveis de decisão xij Quantidade a enviar da origem i para o destino j cij Custos unitários de transporte Quantidade disponível em cada origem Destinos (Clientes) 1 2 3 x11 x12 x13 1 20 4 3 2 2 x21 x22 x32 Origens (Fábricas) 20 1 5 2 x31 x32 x33 3 20 1 6 1 Quantidade necessária em cada destino 10 30 20 Manuel Pina Marques
Algoritmo de Transportes • Geração de uma solução inicial para o problema: • Regra do Custo Mínimo • Regra do canto NW • Melhorar a solução até se obter a solução óptima Manuel Pina Marques
Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO 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) Atribuir valores às variáveis de decisão, por ordem crescente dos respectivos custos unitários de transporte (cij) 1 2 3 Menor valor de cij 1 20 4 3 2 10 2 Há mais duas variáveis com cij =1 Escolher arbitrariamente entre as três variáveis . Vai-se escolher a variável X21 20 1 5 2 3 20 1 1 1 6 10 30 20 Manuel Pina Marques
Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO: Corrigir a quantidade disponível na origem 2 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) 1 2 3 1 20 4 3 2 10 2 20 10 1 5 2 3 20 1 1 6 Corrigir a quantidade procurada no destino 1 10 30 20 0 Manuel Pina Marques
Geração de uma solução inicial para o problema pela Regra do CUSTO MÍNIMO: 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) 1 2 3 10 10 1 20 10 0 4 3 2 10 2 10 20 10 0 1 5 2 20 3 20 0 1 1 6 Menor valor de cij 10 30 20 0 10 10 0 0 Manuel Pina Marques
Geração de uma solução inicial pela Regra do Canto NW 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 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) • 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. 1 2 3 • 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. 10 10 1 20 10 0 4 3 2 2 20 20 0 1 5 2 20 3 20 0 1 1 1 6 10 30 20 0 20 0 0 Manuel Pina Marques
Geração de uma solução inicial pela Regra do Canto NW Solução inicial obtidapela regra do Canto NW 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 Vamos, por exemplo, promover x13 a básica, de entre as variáveis possíveis (x13, x23, x31, x32) x13 0 x21 x23 É assim necessário “promover” uma variável não básica (nula) a básica 1 2 3 x31 x32 Representação das variáveis básicas através de um grafo: 10 10 1 4 3 2 origens 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) destinos x11 O1 D1 2 20 x12 x13 1 5 2 x21 x22 O2 D2 20 3 Outras variáveis que podem ser “promovidas” a básicas, em alternativa a x23 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 x31 1 1 1 6 x32 Se x23for “promovida” a básica, os vértices O3 e D3 passam a ser acessíveis a partir dos restantes vértices x23 O3 D3 x33 Manuel Pina Marques
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 vj- custo de recepção no destino j, de forma a quecij=ui+vj Obtêm-se assim 5 equações (tantas quantas as variáveis básicas): x11: 2=u1+v1 x12: 4=u1+v2 x13: 3=u1+v3 x22: 5=u2+v2 x33: 6=u3+v3 v2 v1 v3 10 10 0 u1 4 3 2 20 u2 5 equações e 6 incógnitas Pode-se arbitrar o valor de uma qualquer das incógnitas e, a partir das equações, determinar os valores das restantes incógnitas. 1 5 2 20 u3 1 1 6
Algoritmo de Transportes 1- cálculo dos custos marginais Arbitrando, por exemplo, v1 = 0 Para x11 tem-se: c11 = u1 + v1 2 = u1 + 0 u1 = 2 x11:2=u1+v1 x12: 4 = u1 + v2 x13: 3 = u1 + v3 x22: 5 = u2 + v2 x33: 6 = u3 + v3 x11: 2=u1+v1 x12: 4=u1+v2 x13: 3=u1+v3 x22: 5=u2+v2 x33: 6=u3+v3 0 v2 v1 v3 10 10 0 u1 2 4 3 2 20 u2 1 5 2 20 u3 1 1 6 Manuel Pina Marques
Algoritmo de Transportes 1- cálculo dos custos marginais Arbitrando, por exemplo, v1 = 0 Para x12 tem-se: c12 = u1 + v2 v2 v2 4 = 2 + = 2 x11: 2 = u1 + v1 x12: 4=u1+v2 x13: 3 = u1 + v3 x22: 5 = u2 + v2 x33: 6 = u3 + v3 0 v2 v1 2 v3 10 10 0 u1 2 4 3 2 20 u2 1 5 2 20 u3 1 1 6 Manuel Pina Marques
Algoritmo de Transportes 1- cálculo dos custos marginais Arbitrando, por exemplo, v1 = 0 Para x13 tem-se: c13 = u1 + v3 v3 v3 3 = 2 + = 1 x11: 2 = u1 + v1 x12: 4 = u1 + v2 x13: 3=u1+v3 x22: 5 = u2 + v2 x33: 6 = u3 + v3 0 v2 v1 2 v3 1 10 10 0 u1 2 4 3 2 20 u2 1 5 2 20 u3 1 1 6 Manuel Pina Marques
Algoritmo de Transportes 1- cálculo dos custos marginais Arbitrando, por exemplo, v1 = 0 Para x22 tem-se: c22 = u2 + v2 u2 u2 5 = + 2 = 3 x11: 2 = u1 + v1 x12: 4 = u1 + v2 x13: 3 = u1 + v3 x22: 5=u2+v2 x33: 6 = u3 + v3 0 v2 v1 2 v3 1 10 10 0 u1 2 4 3 2 20 u2 3 1 5 2 20 u3 1 1 6 Manuel Pina Marques
Algoritmo de Transportes 1- cálculo dos custos marginais Arbitrando, por exemplo, v1 = 0 Para x33 tem-se: c33 = u3 + v3 u3 u3 6 = + 1 = 5 x11: 2 = u1 + v1 x12: 4 = u1 + v2 x13: 3 = u1 + v3 x22: 5 = u2 + v2 x33: 6=u3+v3 0 v2 v1 2 v3 1 10 10 0 u1 2 4 3 2 20 3 1 5 2 20 u3 5 1 1 6 Manuel Pina Marques
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] 21=1– [3+0] = –2 x21: 21=c21 – [u2+v1] 23=2– [3+1] = –2 x23: 23=c23 – [u2+v3] 31=1– [5+0] = –4 x31: 31=c31– [u3+v1] 32=1– [5+2] = –6 x32: 32=c32– [u3+v2] 0 1 2 Osijtêm o mesmo significado dos coeficientes na função objectivo no Simplex • A solução é óptima se se verificarem as condições: • Problema de minimização • ij 0 • Problema de Maximização • ij 0 10 10 0 2 4 3 2 20 3 1 –2 5 –2 2 20 5 1 1 6 –6 –4 Manuel Pina Marques
Algoritmo de Transportes • 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 ) • A solução não é óptima, pois há ij< 0 • e o problema é de minimização • Entra para a base a variável x32( 32 = – 6 ) 0 1 2 10 10 0 2 4 3 2 20 3 1 –2 –2 5 2 x32 20 5 1 1 6 –6 –4 Manuel Pina Marques
Algoritmo de Transportes • O valor das variáveis básicas altera-se de forma a que: • 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 10 10 0 4 3 2 Não é possível subtrair a x31 (variável não básica), pois esta variável assumiria um valor negativo 20 Ao entrar na base, a variável x32 deixa de valer 0 passando a valer , positivo. Deve-se então subtrair a uma variável básica que, no exemplo, terá de ser x33 1 –2 –2 5 2 20 – + 1 1 6 –6 –4
Algoritmo de Transportes • O valor das variáveis básicas altera-se de forma a que: 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 ax23(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 contrariar (ii) 10 10 0 + 4 3 2 20 Deve-se então adicionar a uma variável básica que, no exemplo, terá de ser x13 1 –2 –2 5 2 20 – + 1 1 6 –6 –4
Algoritmo de Transportes • O valor das variáveis básicas altera-se de forma a que: 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 ax11, quando se quiser garantir que o cliente 1 recebe os 10 frigoríficos de que necessita, ter-se-á de adicionar ax21ou ax31 (o que faria com que houvesse uma segunda variável a entrar na base nesta iteração). 10 10 0 – – + 4 3 2 20 + 1 –2 Deve-se então subtrair ax12 –2 5 2 20 – + + 1 1 6 –6 –4 Manuel Pina Marques
Algoritmo de Transportes • O valor das variáveis básicas altera-se de forma a que: 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) 10 10 0 – + 4 3 2 20 • = • ? 1 –2 –2 5 2 • deverá ser igual ao menor valor das variáveis a que o vamos subtrair 20 – + 1 1 6 –6 –4 • = min (10, 20) = 10
Algoritmo de Transportes • = min (10, 20) = 10 A variável x32 na nova solução passa a ser uma variável básica x32 = = 10 A variável x12 anula-se, logo na nova solução passa a ser uma variável não básica x12 = 10 – = 10 – 10= 0 x13 = 0 + = 0 +10= 10 x33= 20 – = 20 – 10= 10 10 10 10 0 – + 4 3 2 Obtivemos assim uma nova solução alterando o valor de 4 variáveis 20 1 –2 –2 5 2 10 10 20 – + 1 1 6 –6 –4 Manuel Pina Marques
Algoritmo de Transportes Arbitrando, por exemplo, u1 = 0 • A solução não é óptima, pois há ij< 0 • Entra para a base a variável xijcomijmais negativo: • Há um empate no critério de entrada para a base; pode entrar x21oux23, ambos com ij= – 8 –2 2 3 • Vai-se escolher a variável x21 para entrar para a base (poderia ter sido x23) 10 10 0 4 3 2 6 20 7 1 –8 5 –8 2 10 10 3 1 1 6 –4 Manuel Pina Marques
Algoritmo de Transportes • 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 Definição do conjunto de variáveis cujo valor será alterado na próxima solução: 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áveis O número de variáveis cujo valor é alterado pode variar de iteração para iteração • deverá ser igual ao menor valor das variáveis a que o vamos subtrair • =min (10, 20, 10) = 10 10 20 10 – 0 + x11permanece básica 4 3 2 6 10 20 10 – + 1 –8 5 –8 2 20 10 10 + – 1 1 6 –4 Manuel Pina Marques
Algoritmo de Transportes 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 x11passa agora a ser não básica, e x12passa a ser básica 6 2 3 0 + 20 0 – 0 4 3 2 –2 10 + 10 – –1 1 5 0 2 20 –5 1 1 6 4 8 Manuel Pina Marques
Algoritmo de Transportes Arbitrando, por exemplo, v2 = 0 • A solução não é óptima, pois 23 = – 2 < 0 • =min (20,10) = 10 0 –4 –1 0 10 + 10 20 – 4 4 3 2 2 10 10 – 10 + 5 1 5 –2 2 20 1 1 1 6 4 6 Manuel Pina Marques
Algoritmo de Transportes • 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 Arbitrando, por exemplo, v3 = 0 • A solução é óptima, pois todos os ij 0 Como11 = 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 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 Destinos - (Clientes) 1 –1 0 1 2 3 10 10 1 3 4 3 2 0 2 10 10 2 Origens - (Fábricas) 1 2 5 2 20 3 0 1 1 6 2 6 Manuel Pina Marques