Material de Apoio
Pesquisa Operacional
Parte 5
Prof. Antônio Carlos de Lima
2011
4. Problemas de Rede
De forma geral, modelos de rede são utilizados em casos especiais de problemas de programação linear, que são mais bem analisados por meio de uma representação gráfica.
Importantes problemas de otimização, como os de distribuição logística e de energia, produção e outros, são eficientemente resolvidos se modelados como problemas de rede.
Modelos de rede facilitam a visualização das relações entre os componentes do sistema, melhorando o entendimento do problema e de seus possíveis resultados. Devido a essas vantagens, a modelagem de rede está sendo cada vez mais utilizada nas mais diferentes áreas, incluindo o mundo dos negócios.
Redes são diagramas compostos por uma coleção de vértices ou nós ligados entre si por um conjunto de arcos (Figura 4.1). Os nós são simbolizados por círculos e representam os pontos de junção que conectam os arcos. Os arcos são representados por setas, que conectam os nós e revelam a direção do fluxo de um ponto a outro.
Figura 4.1 – Componente de uma rede
Os problemas modelados como redes geralmente apresentam números associados aos nós e aos arcos (Figura 4.2). O significado de cada valor varia de acordo com o tipo de problema com o qual estamos lidando. Em problemas de transportes modelados como redes, por exemplo, os números associados aos nós podem representar a quantidade de produtos ofertada ou demandada pelo nó, ao passo que os valores associados aos arcos podem refletir o custo de transporte, o tempo ou a distância, entre um nó e outro.
Figura 4.2 – Exemplo de problemas de transporte
Diversos problemas de tomada de decisão no mundo real estão categorizados como problemas de rede. Entre eles, podemos citar:
• Transporte.
• Escala de produção.
• Rede de distribuição.
• Menor caminho.
• Fluxo máximo.
• Caminho crítico.
4.1 Transporte
Um tipo de problema real muito especial e comum de aplicação de programação linear é conhecido como problema de transporte. Essa classe de problemas recebeu tal nome porque seu método de resolução, denominado método de transporte, foi inicialmente utilizado para determinar o menor custo de transporte entre diversas fábricas de um produto e vários centros consumidores. O método simplex de transporte resolve esse tipo de problema de programação linear de uma maneira mais eficiente que o simplex tradicional.
O método de transporte foi especialmente utilizado antes da era da microcomputação. Com o advento dos computadores pessoais, cada vez mais rápidos e com maior capacidade de processamento, diversos sistemas automatizados de resolução de problemas de programação linear têm sido lançados, e eles tornam dispensável a aplicação do método de transporte em sua forma original. No entanto, a maneira como o problema pode ser equacionado permanece a mesma.
O problema de transporte básico é aquele em que queremos determinar, dentre as diversas maneiras de distribuição de um produto, a que resultará no menor custo de transporte entre as fábricas e os centros de distribuição. Por se tratar de um problema de programação linear, devemos considerar a hipótese de que o custo unitário de transporte de cada fábrica para cada destino é constante, independentemente da quantidade transportada.
Matematicamente, queremos a minimização do custo total de transporte, que é dada por:
onde:
• xij é a quantidade de itens transportados da fábrica i para o destino j (variáveis de decisão)
• cij é o custo unitário de transporte da fábrica i para o destino j (constantes)
• m é o número de fábricas
• n é o número de destinos (centros de consumidores) As restrições desse tipo de problema são:
• As fábricas não podem produzir mais do que suas capacidades instaladas.
• Os centros consumidores não desejam receber volumes acima de suas demandas.
Existem duas maneiras para que essas restrições sejam implementadas. Na primeira, o montante ofertado (somatório das capacidades das fábricas) deve ser igualado ao total demandado (somatório das demandas dos centros consumidores). Para operacionalizar essas restrições de igualdade, as seguintes regras devem ser seguidas:
• No caso de a oferta ser maior que a demanda, devemos introduzir um destino fantasma (dummy) que tenha os custos de transporte unitários de todas as fábricas para esse destino iguais a zero. A demanda desse centro consumidor deve ser igual à diferença entre o total ofertado e o total demandado.
• No caso de a demanda ser maior que a oferta, devemos introduzir uma fonte de oferta fantasma (dummy) que tenha os custos de transporte unitários para todos os destinos iguais a zero e uma capacidade igual à diferença entre o total demandado e o total ofertado.
Min Z=
∑
i=1
m
∑
j=1 n
cijxij
Ao inserir uma demanda ou uma oferta fantasma, garantimos que todas as restrições do problema serão dadas por igualdades. Em outras palavras, o total fabricado será igual à demanda dos centros consumidores e vice-versa.
Matematicamente, essas restrições serão representadas pelas equações abaixo:
Restrição das capacidades das fábricas
∑
j=1 nxij= fi (para i= 1,2,..., m)
O somatório das quantidades enviadas de cada fábrica i para os n destinos deve ser igual ao total ofertado por aquela fábrica (fi).
Restrição dos centros consumidores
∑
i=1 mxij=di (para j= 1,2,..., n)
O somatório das quantidades recebidas pelo centro consumidor das m fábricas deve ser igual ao total demandado por aquele destino (dj).
Somando todos os lados de todas as restrições, temos:
e
Como os lados esquerdos das duas equações representam o somatório dos custos de todos os itens transportados das fábricas para os destinos, podemos concluir que os lados direitos das equações também devem ser iguais, isto é:
Essa última igualdade é uma condição necessária e suficiente para que qualquer problema de transporte tenha solução ótima quando modelado utilizando variáveis dummy.
A segunda forma de implementar as restrições varia de acordo com o total da capacidade das fábricas e o total demandado pêlos centros consumidores. No caso de a oferta total ser maior do que a demanda total, nem todas as fábricas produzirão em plena capacidade, porém os centros consumidores receberão as quantidades que desejam.
Matematicamente, isso pode ser representado por:
Restrição das capacidades das fábricas
∑
j=1 nxijfi (para i = 1,2,..., m)
Restrição dos centros consumidores
∑
i=1 mxij=dj (para j = 1,2,..., n)
∑
i=1m
∑
j=1 n
xij=
∑
i=1 m
fi
∑
j=1
n
∑
i=1 m
xij=
∑
j=1 n
dj
∑
i=1 mfi=
∑
j=1 n
dj
No caso de a demanda total ser maior do que a oferta total, nem todos os centros consumidores receberão toda a quantidade que desejam, porém as fábricas produzirão tudo o que puderem, ou seja, trabalharão em plena capacidade. Matematicamente:
Restrição das capacidades das fábricas
∑
j=1 nxij=fi (para i = l, 2,..., m) Restrição dos centros consumidores
∑
i=1 mxijdj (para j = 1,2,..., n)
Como vimos, a inserção de variáveis do tipo dummy não é obrigatória, mas facilita a interpretação do resultado da otimização. Quando existe um desequilíbrio entre oferta e demanda, podemos ter as seguintes ações e interpretações (Tabela 4.1) para as variáveis dummy:
Tabela 4.1
Ações e interpretações para as variáveis dummy Capacidade > Demanda Demanda > Capacidade Ação: busca de novos centros consumidores Ação: criação de nova fábrica
Interpretação: capacidade ociosa das fábricas Interpretação: demanda não atendida Mostraremos agora a resolução de um problema de transporte pelas duas formas apresentadas no item anterior.
A LCL Bicicletas Ltda. é uma empresa fabricante de bicicletas que possui três fábricas localizadas no Rio de Janeiro, em São Paulo e em Belo Horizonte. A produção da empresa deve ser entregue em Recife, Salvador e Manaus. Considerando os custos de transporte unitários, a capacidade de produção das fábricas e a demanda dos centros consumidores da Tabela 4.2,
determine quanto deve ser produzido e entregue por fábrica em cada centro consumidor, de forma a minimizar os custos de transporte.
Tabela 4.2
Dados do caso LCL Bicicletas Ltda.
Fábrica/Centro consumidor Recife (1)
Salvador (2)
Manaus (3)
Capacidade
Rio de Janeiro (1) 25 20 30 2.000
São Paulo (2) 30 25 25 3.000
B. Horizonte (3) 20 15 23 1.500
Demanda 2.000 2.000 1.000
Solução utilizando variáveis dummy— Alternativa A
O primeiro passo para a resolução de um problema de otimização é a determinação das variáveis de decisão. Nos problemas de transporte, essas variáveis são as quantidades que devem ser enviadas de cada fábrica para cada centro consumidor (destino), mais as variáveis dummy, caso estejamos resolvendo o problema usando o primeiro método apresentado. No nosso problema, o total ofertado (6.500 unidades) é superior ao total demandado (5.000 unidades), de forma que um centro consumidor dummy deve ser criado com uma demanda de 1.500 unidades (6.500-5.000). Assim, as variáveis do problema são as quantidade de bicicletas remetidas de uma fábrica para um centro distribuidor.
Variáveis de decisão
• x11—quantidade enviada do Rio de Janeiro para Recife
• x12— quantidade enviada do Rio de Janeiro para Salvador
• x13— quantidade enviada do Rio de Janeiro para Manaus
• x14— quantidade enviada do Rio de Janeiro para dummy
• x21— quantidade enviada de São Paulo para Recife
• x22— quantidade enviada de São Paulo para Salvador
• x23— quantidade enviada de São Paulo para Manaus
• x24— quantidade enviada de São Paulo para dummy
• x31— quantidade enviada de Belo Horizonte para Recife
• x32— quantidade enviada de Belo Horizonte para Salvador
• x33— quantidade enviada de Belo Horizonte para Manaus
• x34— quantidade enviada de Belo Horizonte para dummy
A função-objetivo desse problema será a minimiza cão do custo total de transporte, o que matematicamente pode ser representado por:
ou na forma estendida:
Min Z= 25x11 + 20x12 + 30x13 + 30x21 + 25x22 + 25x23 + 20x31+15x32+23x33
Vale ressaltar que as variáveis relativas ao centro consumidor dummy não aparecem na função-objetivo, já que o custo unitário de transporte de qualquer fábrica até o centro é igual a zero. Matematicamente, isso resulta em um custo total de transporte igual a zero para esse centro consumidor, de acordo com a realidade do problema, uma vez que nenhuma fábrica remeteria mercadorias para um centro consumidor inexistente.
Restrições de oferta (fábricas)
Com a inserção da variável dummy, todas as restrições são de igualdade. A capacidade de cada fábrica que não for utilizada será virtualmente enviada para o centro consumidor dummy. Portanto, as restrições de oferta são:
∑
j=1 n1xij=fi (para i = 1,2 e 3) ou seja:
Min Z=
∑
i=1
3
∑
j=1 3
cijxij
{
xxx112131xxx123222xxx132333xxx142434=2000==15003000Restrições de demanda (consumidores)
Seguindo uma lógica similar à aplicada nas restrições de oferta, igualaremos a demanda de cada centro consumidor, inclusive o dummy, ao total remetido por fábrica para aquele destino. As restrições de demanda, portanto, serão:
∑
j=1 mxij=dj (para j=l, 2,3 e 4) ou seja,
Restrições de não-negatividade
Já que não faz sentido transportar quantidades negativas, temos de incluir uma restrição para que todas as quantidades transportadas sejam maiores ou iguais a zero:
xij ≥ 0, para i= 1, 2 e 3 e j=1, 2, 3 e 4
Solução sem utilizar variáveis dummy— Alternativa B
Conforme vimos anteriormente, a segunda alternativa para resolver um problema de transporte em que a oferta é maior do que a demanda é modelar o problema de forma que as demandas sejam plenamente atendidas e que as fábricas possam operar abaixo de suas capacidades instaladas. Nessa modelagem alternativa (Figura 4.6) não é necessária a inclusão de variáveis dummy, de maneira que as variáveis de decisão do problema serão o número de bicicletas remetidas de uma fábrica para um distribuidor.
Variáveis de decisão
• x11— quantidade remetida do Rio de Janeiro para Recife.
• x12— quantidade remetida do Rio de Janeiro para Salvador.
• x13— quantidade remetida do Rio de Janeiro para Manaus.
• x21— quantidade remetida de São Paulo para Recife.
• x22— quantidade remetida de São Paulo para Salvador.
• x23— quantidade remetida de São Paulo para Manaus.
• x31— quantidade remetida de Belo Horizonte para Recife.
• x32— quantidade remetida de Belo Horizonte para Salvador.
• x33— quantidade remetida de Belo Horizonte para Manaus.
A função-objetivo, nessa segunda forma de resolução, é igual à primeira, pois nesta as variáveis dummy apresentavam custo de transporte igual a zero e, portanto, não apareciam na função-objetivo. Sendo assim, a função-objetivo é:
ou seja:
Min Z= 25x11 + 20x12 + 30x13 + 30x21 + 25x22 + 25x23 + 20x31+15x32+23x33
{
xxxx11121314xxxx21222324xxxx31323334==1000=2000=15002000Min Z=
∑
i=1
3
∑
j=1 3
cijxij
Restrições de oferta
Como a oferta é maior do que a demanda, as restrições de oferta serão todas do tipo menor ou igual. Essas restrições representam a condição de que as fábricas podem produzir quantidades menores ou iguais às suas capacidades instaladas. São elas:
∑
j=1 3xijfi (para i = 1,2 e 3) restrições da fábrica ou
Restrições de demanda
Como as fábricas possuem capacidade excedente, toda a demanda pode ser atendida. Sendo assim, as restrições de demanda serão todas igualdades:
∑
j=1 3xij=di (i = 1,2, 3) restrições de destino ou
Restrições de não-negatividade
De forma análoga à resolução pelo método anterior, temos de incluir uma restrição para que todas as quantidades transportadas sejam maiores ou iguais a zero, ou seja:
xij ≥ 0, para i= 1, 2 e 3 e j=1, 2, 3
Vale ressaltar que os resultados apresentados pelas duas modelagens do problema de transporte chegaram ao mesmo valor ótimo da função-objetivo, porém com soluções ótimas distintas (compare as tabelas 4.3 e 4.4). Isso ocorreu porque o problema possui soluções ótimas múltiplas.
Tabela 4.3 – Solução pelo Método A (Custo total = 110000) Fábrica/Centro
consumidor Recife
(1) Salvador
(2) Manaus
(3) Dummy
Rio de Janeiro (1) 0 2000 0 0
São Paulo (2) 500 0 1000 1500
B. Horizonte (3) 1500 0 0 0
Demanda 2.000 2.000 1.000
{
xxx112131xxx123222xxx132333200015003000{
xxx111213xxx212223xxx313233==1000=20002000Tabela 4.4 – Solução pelo Método B (Custo total = 110000) Fábrica/Centr
o consumidor
Recife (1)
Salvador (2)
Manaus (3) Rio de Janeiro
(1) 1500 500 0
São Paulo (2) 500 0 1000
B. Horizonte (3)
0 1500 0
Demanda 2.000 2.000 1.000
Problema de transporte como uma rede
O problema em questão pode ser visualizado como uma rede que une fábricas e revendas. Utilizando as terminologias mostradas no início deste capítulo, a Figura 4.3 representa graficamente o caso. Em uma primeira e rápida análise, concluímos com facilidade que as variáveis de decisão do modelo serão as quantidades de bicicletas enviadas de cada fábrica para cada distribuidor, e a função-objetivo será a minimização do custo total desses envios. No entanto, o problema apresenta um detalhe especial: o número de bicicletas demandadas é menor que a capacidade de produção da empresa.
Figura 4.3 - Diagrama de rede do caso LCL Bicicletas sem dummy
Existem duas maneiras básicas de resolver esse tipo de problema. A primeira consiste em inserir uma unidade dummy que iguale a oferta e a demanda totais e que esteja ligada a todas as unidades da demanda ou da oferta. Se a oferta for maior que a demanda, a variável dummy será colocada como uma unidade de demanda ligada às unidades de oferta. De forma inversa, se a demanda for maior que a oferta, a variável dummy representará um novo ponto de oferta para atender à demanda excedente. Em ambos os casos, todas as restrições serão consideradas igualdades. No nosso caso, como a oferta é maior que a demanda, devemos introduzir uma unidade dummy com demanda de 1.500 (diferença entre o total de oferta, 6.500 bicicletas, e o total de demanda, 5.000 bicicletas). A Figura 4.4 representa essa rede.
Figura 4.4 - Diagrama de rede do caso LCL Bicicletas com dummy
A segunda forma de resolver problemas de distribuição é seguir a regra do fluxo balanceado para cada nó (unidade) da rede: seis no caso sem dummy e sete no caso com dummy. Por essa regra, não há necessidade de inserção de variáveis do tipo dummy; o desequilíbrio entre a oferta total e a demanda total é tratado por meio de restrições de maior ou igual ou de menor ou igual. Vale ressaltar que, mesmo não sendo necessária a inclusão de variáveis dummy, elas podem facilitar a interpretação do problema (capacidade ociosa ou demanda não atendida). A Tabela 4.5 resume a forma de aplicação da regra do fluxo balanceado.
Tabela 4.5 Regra do fluxo balanceado Hipótese do problema Tipo de restrição para cada nó
Oferta > Demanda Entradas - Saídas > Oferta ou demanda Oferta < Demanda Entradas - Saídas < Oferta ou demanda Oferta = Demanda Entradas - Saídas = Oferta ou demanda
Resolveremos o problema utilizando a regra do fluxo balanceado com a introdução da variável dummy. A Figura 4.4 evidencia o valor do descompasso entre a capacidade de produção da empresa e o número de bicicletas requerido pêlos centros consumidores: há uma oferta de 6.500 e uma demanda de 5.000 bicicletas. Vale ressaltar que, com a introdução do nó dummy (7), igualamos a oferta total à demanda total. Portanto, devemos utilizar restrições de igualdade para todos os nós.
De acordo com esse primeiro método de modelagem, o problema tem as seguintes variáveis de decisão, que representam o total de bicicletas enviadas de uma fábrica para um distribuidor.
Variáveis de decisão
• x11 — quantidade remetida do Rio de Janeiro para Recife.
• x12 — quantidade remetida do Rio de Janeiro para Salvador.
• x13 — quantidade remetida do Rio de Janeiro para Manaus.
• x14 — quantidade remetida do Rio de Janeiro para dummy.
• x21 — quantidade remetida de São Paulo para Recife.
• x22 — quantidade remetida de São Paulo para Salvador.
• x23 — quantidade remetida de São Paulo para Manaus.
• x24 — quantidade remetida de São Paulo para dummy.
• x31 — quantidade remetida de B. Horizonte para Recife.
• x32 — quantidade remetida de B. Horizonte para Salvador.
• x33 — quantidade remetida de B. Horizonte para Manaus,
• x34 — quantidade remetida de B. Horizonte para dummy.
A função-objetivo desse problema será a minimização do custo total de transporte, o que matematicamente pode ser representado por:
ou na forma estendida:
Min Z= 25x11+20x12+30x13+30x21+25x22+25x23+20x31+15x32+23x33
Vale ressaltar que as variáveis relativas ao centro consumidor dummy não aparecem na função-objetivo, já que o custo unitário de transporte de qualquer fábrica até o centro é igual a zero. Matematicamente, isso resulta em um custo total de transporte igual a zero para esse centro consumidor, de acordo com a realidade do problema, uma vez que nenhuma fábrica remeteria mercadorias para um centro consumidor inexistente.
Montaremos as restrições de acordo com a seguinte lógica: o número de bicicletas que chegam ao nó menos o montante que sai deve ser igual à oferta (negativa) ou à demanda (positiva) do nó.
Restrições de fluxo
Vale ressaltar que essas restrições são idênticas às da forma tradicional (as três primeiras devem ser multiplicadas por -1, o que não altera a identidade).
Min Z=
∑
i=1
3
∑
j=1 4
cijxij
{
−−−xxxx11121314xxxxxxx112131−−−21222324xxxxx122232−−−xx31333234xxx=2000=2000=1000=1500132333−−−xxx143424=−2000=−1500=−3000Os coeficientes acima podem ser vistos também da seguinte forma:
Figura 4.5 – Tabela dos coeficientes das restrições para o problema de transporte
A figura 4.5 resume como serão as restrições em qualquer problema de transporte.
Todos os dados de entrada podem ser resumidos convenientemente na tabela de custos e requisições apresentada abaixo.
Tabela 4.6 - Tabela de custos e requisições para o problema de transporte Destino
1 2 … n Oferta
Fonte
1 c11 c12 … c1n f1
2 c21 c22 … c2n f2
... ... ... … ... ...
m cm1 cm2 … cmn fm
Demanda d1 d2 ... dn
4.2 Um método Simplex simplificado para o problema de transporte
Como o problema de transporte é apenas um tipo especial de problema de programação linear, ele pode ser resolvido aplicando-se o método simplex exatamente como descrito anteriormente. Entretanto, dada a estrutura particular de problema, ver figura 4.5, pode-se obter alguns caminhos extremamente mais curtos para este método.
Vamos nos referir a este procedimento simplificado como o método simplex de transporte.
Estabelecimento do Método Simplex de Transporte
Vamos estabelecer um algoritmo e este pode ser executado realizando operações sobre uma tabela com a seguinte forma:
Restrições de oferta
Restrições de demanda x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34
A=
[
1100000 1010000 1001000 1000100 0100010 0011000 0100100 0100010 0100001 0001001 0001010 0010001]
Tabela 4.7 - Tabela para o algoritmo do problema de transporte Destino
1 2 … n Oferta
Fonte
1 c11 c12 … c1n
f1
x11 x12 … x1n
2 c21 c22 … c2n
f2
x21 x22 … x2n
… … … … …
… … … … …
m cm1 cm2 … cmn
fm
xm1 xm2 … xmn
Demanda d1 d2 ... dn
cij é o custo de transporte da origem i para o destino j;
xij é a quantidade transportada da origem i para o destino j;
dj é a demanda do destino j;
fi é a oferta da origem i;
m é o número de origens e n é o número de destinos.
Exemplo
Considere a tabela 4.8 abaixo:
Destino
1 2 3 Oferta
Fonte
1 6 5 8
10
2 13 12 1
20
3 7 9 5
12
4 10 6 4
13
Demanda 8 32 15
Passo de inicialização
Lembre-se que o objetivo do passo de inicialização é obter uma solução básica viável inicial. Como todas as restrições funcionais no problema de transporte são restrições de igualdade, isso poderia ser feito introduzindo-se variáveis artificiais e usando-as como variáveis básicas iniciais, como visto no Método do Grande M. Isto nos daria uma solução básica que na verdade é viável somente para uma versão revisada do problema, e, então, seriam necessárias diversas iterações para conduzir estas variáveis a zero para se alcançarem as verdadeiras soluções básicas viáveis. O método simplex de transporte passa por cima de tudo isso usando, alternativamente, um procedimento mais simples para construir diretamente uma solução básica viável real num quadro simplex de transporte.
Antes de esboçarmos este procedimento, precisamos apontar que existirão m+n-1 variáveis básicas. Isto porque todas as restrições são de igualdade e qualquer uma das restrições é automaticamente satisfeita sempre que as outras m+n-1 restrições forem satisfeitas.
Procedimento Geral para a Construção de Solução Básica Viável Inicial
Para começar. Todas as linhas das fontes e colunas dos destinos do quadro simplex de transporte estão inicialmente sob consideração para fornecer uma variável básica(alocação).
Passo 1. Dentre as linhas e colunas ainda sob consideração, selecione a próxima variável básica(alocação) de acordo com algum critério (vide abaixo).
Passo 2. Faça aquela alocação grande o bastante para usar exatamente a oferta restante em sua linha, ou a de manda restante em sua coluna (qualquer que seja a menor).
Passo 3. Deixe aquela linha ou coluna (qualquer uma que tenha a menor oferta ou demanda restante) fora da consideração. (Se a linha e a coluna têm a mesma oferta e demanda restantes, selecione, então, arbitrariamente, a linha a ser eliminada. A coluna será usada mais tarde para fornecer uma variável básica degenerada, i. e., uma alocação de zero circunscrita.)
Passo 4. Se somente uma linha ou somente uma coluna permanece sob consideração, então o procedimento é completado selecionando-se cada variável restante (i. e., aquelas variáveis que nem foram selecionadas previamente para serem básicas, nem foram deixadas fora de consideração pela eliminação de sua linha ou coluna), associada àquela linha ou coluna, para ser básica, com a única alocação viável. Do contrário, volte ao passo 1.
Critérios Alternativos para o Passo 1
1. Regra do canto superior esquerdo (ou Canto Noroeste). Comece por selecionar x11. Depois disso, se x11 foi a última variável básica selecionada, então, a seguir, selecione xi, j+1
se a fonte i tem qualquer oferta restando. Do contrário, selecione a seguir xi+1, j.
Exemplo
Voltando a tabela 4.8 vista acima:
Destino
1 2 3 Oferta
Fonte
1 6 5 8
2 10
2 13 12 1
20 20
3 7 9 5
10 2 12
4 10 6 4
13 13
Demanda 8 32 15
É importante marcar as variáveis básicas com Variáveis básicas={x11, x12, x22, x32, x33, x43} Variáveis não-básicas={x13, x21, x23, x31, x41, x42}
Custo = 8*6 + 2*5 + 20*12 + 10*9 + 2*5 + 13*4 = 450
2. Método de aproximação de Vogel.
1. Para cada linha e coluna que permanecem em consideração, calcule sua diferença, a qual é definida como a diferença aritmética entre o menor e o seguinte menor custo unitário (cij) que ainda restam naquela linha ou coluna.
2. Na linha ou coluna que tenha a maior diferença, selecione a variável que tenha o menor custo unitário restante. (os empates na maior diferença podem ser resolvidos arbitrariarmente.)
3. Coloque a maior quantidade possível na célula de menor custo na linha ou coluna identificada na etapa 2.
4. Elimine a linha ou coluna esgotada. No caso em que uma linha e uma coluna são esgotadas ao mesmo tempo, só podemos esgotar uma delas ficando a outra com zero, mas não esgotada.
5. Voltar a etapa 1.
8 2
20
10 2
13
Exemplo: Achar a solução básica inicial. Começamos achando a diferença entre os dois menores custos de cada linha e cada coluna, obtendo:
Destino
1 2 3 Oferta Diferenças
Fonte
1 6 5 8
10 1
2 13 12 1
20 11
3 7 9 5
12 2
4 10 6 4
13 2
Demanda 8 32 15 x23=min{15, 20}=15
eliminar a coluna 3
Diferenças 1 1 3
Na 2a linha temos a maior diferença (11). Nesta linha escolhemos a célula com o menor custo, ou seja, a célula x23 que tem custo igual a 1. Agora temos que atribuir a maior quantidade possível a x21, lembrando que a soma da linha 2 tem que dar 20 e a soma da coluna 3 tem que dar 15. Assim o maior valor que pode ser atribuído a x21 é o mínimo(15,20)=15.
Ao se atribuir 15 a x23, a coluna 3 fica esgotada, ou seja, nada pode ser atribuído às outras variáveis da coluna(serão variáveis não básicas iguais a 0) pois a soma já deu 15. Temos que recalcular as diferenças entre os dois menores custos de cada linha e cada coluna, sem considerar a coluna três que está eliminada. Como a última eliminação foi de uma coluna, as diferenças nas colunas, obviamente, não se alteraram. Basta calcular as diferenças nas linhas, obtendo-se:
Destino
1 2 3 Oferta Diferenças
Fonte
1 6 5 8
10 1
2 13 12 1
5 1
3 7 9 5
12 2
4 10 6 4
13 4
Demanda 8 32 0 x42=min{32, 13}=13
eliminar a linha 4
Diferenças 1 1
A maior diferença (4) está na linha 4. Nesta linha escolhemos a célula com o menor custo, ou seja, a célula x42 que tem custo igual a 6. Agora temos que atribuir a maior quantidade possível a x42, lembrando que a soma da linha 2 tem que dar 13 e a soma da coluna 2 tem que dar 32. Assim o maior valor que pode ser atribuído a x42 é o mínimo(13,32)=13.
Ao se atribuir 13 a x42, a linha 4 fica esgotada, ou seja, nada pode ser atribuído às outras variáveis da linha(serão variáveis não básicas iguais a 0) pois a soma já deu 13. Temos que recalcular as diferenças entre os dois menores custos de cada linha e cada coluna, sem considerar a linha quatro que está eliminada.
Destino
1 2 3 Oferta Diferenças
Fonte
1 6 5 8
10 1
2 13 12 1
5 1
3 7 9 5
12 2
4 10 6 4
0
Demanda 8 19 0 x12=min{10, 19}=10
eliminar a linha 1
Diferenças 1 4
A maior diferença (4) está na coluna 2. Nesta linha escolhemos a célula com o menor custo, ou seja, a célula x12 que tem custo igual a 5. Agora temos que atribuir a maior quantidade possível a x12, lembrando que a soma da linha 1 tem que dar 10 e a soma da coluna 2 tem que dar 19. Assim o maior valor que pode ser atribuído a x12 é o mínimo(10,19)=10.
Ao se atribuir 10 a x12, a linha 1 fica esgotada, ou seja, nada pode ser atribuído às outras variáveis da linha(serão variáveis não básicas iguais a 0) pois a soma já deu 10. Temos que recalcular as diferenças entre os dois menores custos de cada linha e cada coluna, sem considerar a linha quatro que está eliminada.
Destino
1 2 3 Oferta Diferenças
Fonte
1 6 5 8
0
2 13 12 1
5 1
3 7 9 5
12 2
4 0
Demanda 8 9 0 x31=min{8, 12}=8
eliminar a coluna 1
Diferenças 6 3
A maior diferença (6) está na coluna 1. Nesta coluna escolhemos a célula com o menor custo, ou seja, a célula x31 que tem custo igual a 7. Agora temos que atribuir a maior quantidade possível a x31, lembrando que a soma da linha 3 tem que dar 12 e a soma da coluna 2 tem que dar 8. Assim o maior valor que pode ser atribuído a x12 é o mínimo (8,12)=8.
Ao se atribuir 8 a x31, a coluna 1 fica esgotada, ou seja, nada pode ser atribuído às outras variáveis da coluna(serão variáveis não básicas iguais a 0) pois a soma já deu 8.
Destino
1 2 3 Oferta Diferenças
Fonte
1 6 5 8
0
2 13 12 1
5
3 7 9 5
4
4 10 6 4
0
Demanda 0 9 0 x22=5 x32=4
Diferenças
Agora temos apenas uma coluna e assim podemos atribuir a x22=5 a x32=4.
Em resumo, temos o seguinte:
Destino
1 2 3 Oferta
Fonte
1 6 5 8
10
2 13 12 1
20
3 7 9 5
12
4 10 6 4
13
Demanda 8 32 15
5 8 4
10
15
13
É importante marcar as variáveis básicas com Variáveis básicas={x12, x22, x23, x31, x32,x42} Variáveis não-básicas={x11, x13, x22, x33, x41, x43}
Custo = 10*5 + 5*12 + 15*1 + 8*7 + 4*9 + 13*6 = 284
Obtendo uma solução Ótima. Método Stepping-Stone
Sempre chega à uma solução ótima. Parte de uma solução inicial e pesquisa se alguma melhor solução pode ser obtida. Partindo-se, por exemplo, da solução obtida pelo
“Canto Noroeste” ou Vogel.
Vejamos como funciona este método com o exemplo abaixo Destino
1 2 3 Oferta
Fonte
1 8 5 6
120
2 15 10 12
80
3 3 9 10
80
Demanda 150 70 60
Custo = 8*120 + 15*30 + 10 * 30 + 9*20 + 10*60 = 2490
Cada célula vazia (no caso, 9-(m+n-1) células) representa uma variável não-básica que poderia entrar na base (para entrar, a contribuição específica da variável não-básica deve implicar a redução do custo total).
Calculando essas contribuições para a célula x12:
1. Aloque 1 unidade a x12. Assim, não é mais 70, mas 71 o total de unidades da coluna 2.
2. Para não violar a restrição da coluna 2, uma unidade deverá ser subtraída ou de x22(50) ou de x32(20). Subtraia 1 de x22, que passa a ter 49 unidades, e a coluna 2 com um total de 70, novamente.
3. Agora, a linha 2 totaliza 79 unidades e não mais 80, o que pode ser corrigido com a adição de uma unidade a x21 (30 → 31).
4. A coluna 1 fica então com total de 151, o que pode ser corrigido com a subtração de uma unidade de x11.
5. A linha 1 é automaticamente corrigida em função do passo anterior.
Em outras palavras, deve-se determinar para cada variável não-básica um
“caminho fechado” (closed-loop) para se obter a eventual contribuição específica à função-objetivo.
50
20 60
120
30 Base={x11, x21, x22,
x32, x33}
Para determinar-se o caminho:
a) adote um sentido (ou horário ou anti-horário);
b) há somente um caminho fechado para cada célula vazia;
c) os extremos do caminho(a menos da variável não-básica) devem ser células ocupadas;
d) células ocupadas podem ser “puladas”, assim como um caminho pode apresentar
“cruzamentos”;
e) exatamente uma adição e uma subtração deve aparecer em cada linha e coluna do caminho traçado.
Assim, para a avariável x12:
x12 → x22 → x21 → x11 → x12
+1 -1 +1 -1
Atribuindo os valores de custo pertinentes:
c*12 = c12 – c22 + c21 – c11
= 5 – 10 + 15 – 8 = 2
Realizando os cálculos devidos para todos as células vazias:
Variável Caminho fechado Contribuição
x12 x12 → x22 → x21 → x11 → x12 2 x13 x13 → x23 → x32 → x22 → x21 → x11 → x23 2 x23 x23 → x33 → x32 → x22 → x23 1 x31 x31 → x21 → x22 → x32 → x31 -11
Assim a variável que entra será aquela que contribui com a menor redução no valor da função-objetivo, que no caso diz respeito à variável x31. O valor a ser alocado a esta célula deverá ser o máximo, de tal forma que nenhuma célula do caminho fechado fique com valores negativos.
Já para a variável que sai, está deverá ser aquela, com sinal negativo no caminho fechado, com alocação inicial de menor valor valor absoluto. No caso, para o caminho referente a x31:
x31 → x21 → x22 → x32
Sinal no caminho fechado + - + - Alocação inicial 0 30 50 20
Portanto, x32 deverá ser a variável que sai. Assim sendo, deverá realocar-se o valor da variável que sai pelo “caminho fechado” da variável que entra:
x31 = 0 + 20 = 20 x21 = 30 – 20 = 10 x22 = 50 + 20 = 70 x32 = 20 – 20 = 0
A nova tabela resultante é apresentada a seguir:
Destino
1 2 3 Oferta
Fonte
1 8 5 6
120
2 15 10 12
80
3 3 9 10
*(1) 80
Demanda 150 70 60
(1) O símbolo * é usado para marcar uma variável que já pertenceu à base.
Custo = 8*120+15*10+10*70+3*20+10*60=2470
Para verificar a possibilidade de existência de melhores soluções, calcule novamente, a partir dos novos caminhos fechados, os valores das contribuições das variáveis não-básicas. Se todas essas contribuições forem positivas, a solução ótima foi encontrada.
Exercícios
1. Dada a tabela inicial de um problema de transporte, obter uma solução inicial usando o método do Canto Noroeste. E com Vogel?
1 2 3 4 5 Destino
Fonte
1 3 4 6 8 9 30
2 2 2 4 5 5 80
3 2 2 2 3 2 10
4 3 3 2 4 2 60
10 50 20 80 20
70
20 60
120
10
22
2. Uma empresa produz determinados produtos em 4 fábricas(I, II, III e IV) e os envia para 3 centros de distribuição (A, B e C). A fábrica I pode produzir, por mês, 100 unidades do produto, a fábrica II, 300 unidades, a fábrica III, 400 unidades e a fábrica IV, 600 unidades. Por sua vez, cada centro de distribuição que 400 unidades do produto, por mês.
Fábrica Centro Dist. A Centro Dist. B Centro Dist. C
I 7 3 6
II 11 8 2
III 9 7 8
IV 3 4 -
O custo de transportar 1 unidade do produto entre cada fábrica e cada centro de distribuição está na tabela abaixo;
Nada pode ser transportado da fábrica IV para o centro C. Considerando que o objetivo é minimizar o custo total de transporte, como o produto deve ser enviado de cada fábrica para o Centro de Distribuição e qual será o custo total?
3. Uma empresa tem capacidade de produzir, em 3 fábricas(I, II e III), determinado produto que é enviado para 4 lojas de vendas (A, B, C e D).
Semanalment5e, a fábrica I pode produzir 1000 unidades do produto, a fábrica II pode produzir 2000 unidades e a fábrica III, 3000 unidades.
Cada loja tem capacidade de vender semanalmente 1500 unidades do produto. O custo de transportar cada unidade de cada fábrica para cada armazém está dado na tabela abaixo:
Fábrica Loja A Loja B Loja C Loja D
I 5 3 6 1
II 3 2 - 5
III 5 5 6 2