• Nenhum resultado encontrado

6 Experimentos computacionais

6.1 Descrição das instâncias

6.1.2 Instâncias geradas aleatoriamente

Para uma investigação mais detalhada do desempenho e das soluções obtidas com a resolução do modelo MDSL-2E-LT e dos demais métodos de solução propostos para resolver o problema de programação da produção de bebidas à base de frutas, apresentados nos capítulos anteriores, considerou-se mais instâncias além das apresentadas na Seção 6.1. O intuito é que essas instâncias representem diversas situações para o problema de programação da produção de bebidas à base de frutas, ainda de forma realista. A partir de uma análise das informações coletadas durante as visitas às empresas do setor, foi elaborado um gerador de dados aleatórios que representa as características dos problemas resolvidos pelas empresas do setor. Cada instância será nomeada por J_M_T_-E, em que J indica o número de itens, M o número de tanques preparatórios/linhas, T o número de períodos e E o número do exemplar da classe J_M_T_. Por exemplo, a instância J10M2T4-2 é o exemplar de número 2 de uma classe com 10 itens, 2 tanques preparatórios/linhas e 4 períodos.

Na empresa em que os dados foram coletados são produzidos somente 5 itens, porém nas outras empresas que foram visitadas verificou-se que esse número pode ser maior. Assim, propõem-se que o número de itens, |J|, de uma instância varie dentro do conjunto {5, 10, 15, 20}. Nas empresas visitadas foram encontrados até 6 tanques preparatórios e linhas dedicados, logo o número de tanques preparatórios/linhas, |M| deve ser escolhido do conjunto {2, 4, 6}. Como o objetivo deste trabalho é avaliar a programação da produção em um nível operacional, o número de períodos foi escolhido do conjunto {2, 4, 6}. A partir da combinação desses parâmetros, foram determinados 6 classes para a geração das instâncias a saber:

J3M2T2 J10M2T4 J15M6T4

6.1. Descrição das instâncias 141

Para cada uma dessas classes foram geradas 3 instâncias.

A seguir é descrito como os parâmetros do modelo MDSL-2E-LT são obtidos para cada instância.

• Quantidade de bebida em cada item.De acordo com as informações coleta- das, a quantidade de bebida em um item pode variar entre 0,9 e 12 litros, pois um item é considerado um fardo com 6 frascos de determinada bebida. Assim, o parâmetro ρj é

escolhido através de uma distribuição uniforme: ρjU[0, 9; 12].

• Velocidade das máquinas de envase. A velocidade das máquinas de envase pode variar entre de 40 a 200 litros por minuto. Logo, o parâmetro Sm é obtido através de

uma distribuição uniforme: SmU[40; 200].

• Lote máximo.O lote máximo depende da capacidade dos tanques preparatórios. Foram encontrados tanques de 10.000 até 20.000 litros, logo o lote máximo é definido nesse intervalo: UBjU[10.000; 20.000].

• Lote mínimo. O lote mínimo é definido como uma porcentagem do lote máximo variando entre 20% e 60%, dependendo do sabor e da fábrica. Assim, o lote mínimo é estabelecido por LBj = θ.UBj com θ ∽ U[0, 20; 0, 60].

• Tempo para realização das limpezas temporais.Os tempos para realização das limpezas temporais nos tanques preparatórios e nas linhas são idênticos para todas as empresas visitadas. Assim, esses parâmetros são mantidos no valor original para todas as instâncias: LTI = 50 minutos e LTII = 300 minutos.

• Tempo máximo sem realização de limpeza.O tempo máximo decorrido sem a realização de uma limpeza também é fixo nas empresas que foram visitadas: T Pmax = 1445

minutos (aproximadamente 24 horas) e T Lmax = 2885 minutos (aproximadamente 48

horas).

• Tempo de preparo. O tempo de preparo gira em torno de 100 minutos (uma hora e meia), podendo ter uma variação de alguns minutos para mais ou para menos. Assim, esse parâmetro é definido por uma distribuição normal com média 100 e desvio padrão 10: T p ∽ N(100, 102).

• Estoque e Atraso iniciais. Considera-se que não existem estoques e atrasos no início dos períodos: I+

jt = 0 e I

jt = 0.

• Demanda. A limpeza temporal é uma característica presente nas fábricas de bebidas à base de frutas. Assim, para gerar as demandas para o problema de programação da produção é necessário considerar demandas que para serem atendidas, necessitem de limpezas temporais na programação. A geração da demanda é dada pelos seguintes passos:

142 Capítulo 6. Experimentos computacionais

minutos entre todas as linhas m:

menor= min

∀m∈M{⌈Sm.T Lmax⌉} e maior = max∀m∈M{⌈Sm.T Lmax⌉}.

2) Para cada período t ∈ T , são escolhidos aleatoriamente dois itens i e j que terão suas demandas geradas da seguinte forma:

ditU " menor ρi ; maior ρi # e djtU " maior ρj ; 2.maior ρj # .

Com isso, garante-se que, em cada período, pelos menos dois itens têm demandas que podem gerar limpezas temporais. Considere J

t o conjunto dos itens i e j que

tiveram a capacidade calculada no período t, conforme explicado acima.

3) O cálculo da demanda dos outros itens em cada período é baseado na capacidade real de produção do período (8.550 minutos) e em quanto dessa capacidade já foi utilizada pelas demandas geradas para os itens i, j ∈ J

t, como explicado acima em

2). Calcula-se o quanto do tempo disponível foi utilizado pelos itens i, j ∈ J

t: cap_dispt = X m∈M 8.550 . Sm ! − X j∈Jt ρj.djt.

Apesar da referência para o cálculo das demandas ser a capacidade real, a capacidade de cada instância é calculada mais adiante.

4) O valor de cap_dispt é dividido entre os outros itens para gerar um limite máximo

de geração de demanda:

limjt = cap_dispt

|J| − |J

t| −1

∀t ∈ T, ∀j ∈ J \ J

t.

5) As demandas dos outros itens são geradas por meio de uma distribuição uniforme:

dj,tU " 0;limjt ρj # , ∀t ∈ T j ∈ J \ Jt.

• Tempo de troca no primeiro estágio. O tempo de troca do item fantasma para qualquer item é o tempo de uma limpeza temporal, pois no início de cada período existe uma limpeza obrigatória com o mesmo tempo da limpeza temporal. Dependendo do sabor produzido anteriormente ao próximo item que será produzido, é necessário realizar uma limpeza ou simplesmente um enxágue. Assim, para os demais itens, os tempos de troca entre os itens no primeiro estágio estão em torno da metade do tempo da limpeza temporal, podendo variar em torno desse valor. Assim, esse parâmetro é definido através de uma distribuição normal com média 30 e desvio-padrão 5: T CI

ijN(30, 52).

• Tempo de troca no segundo estágio. Da mesma forma que no primeiro estágio, o tempo de troca de qualquer item para o item fantasma no segundo estágio é o

6.1. Descrição das instâncias 143

tempo de uma limpeza temporal, uma vez que a primeira limpeza do período despende o mesmo tempo que a limpeza temporal. Para os demais itens, os tempos de troca entre os itens são em torno da metade da limpeza temporal e portanto, define-se: T CII

ijN(150, 302). Ambos os tempos de troca do primeiro e segundo estágios são gerados

respeitando a desigualdade triangular.

• Custo de limpeza temporal. O custo de limpeza temporal é definido como uma unidade, ou seja, Clt = 1 . Cabe lembrar que o objetivo é penalizar as limpezas temporais apenas para garantir que a demanda seja atendida otimizando a capacidade.

• Custos de troca. Os custos de troca levam em consideração as trocas realizadas nos dois estágios de produção. Como não foi possível obter os custos reais de troca nas empresas visitadas, esses custos são gerados também com o intuito de melhor aproveita- mento da capacidade, assim como o custo da limpeza temporal. Os custos de troca são calculados por:

- Cji0 = 0, ∀j ∈ J, ou seja, o custo de troca do item fantasma para qualquer

item é sempre nulo;

- Ci0j = Clt, ∀j ∈ J, pois o custo de troca do item fantasma para o primeiro

item do período é o custo de uma limpeza temporal; - Cij = 10 ∗    T CI ij + T CijII max ∀i,j∈J\i0 {(T CI ij + T CijII)}  

, ou seja, esse valor normaliza a soma

dos tempos de troca dos dois estágios pelo maior tempo de troca, e é multiplicado por 10 para ser um pouco maior do que o custo de uma limpeza temporal.

• Custos de estoque e atraso. Para os exemplares baseados em dados reais, usou-se custo de atraso igual a 100 e custo de estoque igual a 10. Seguindo a mesma lógica, porém com o intuito de variar um pouco os custos entre os itens, os custos de estoque e atraso são gerados da seguinte forma: h+

jU[10; 20] e hj = 10 ∗ hj , ∀j ∈ J.

• Capacidade. O cálculo da capacidade para cada tanque preparatório/linha m em cada período t foi baseado nos trabalhos de Toledo e Armentano (2006) e Baldo et al. (2014). Inicialmente, estima-se em quanto tempo a linha m envasa determinada parte da demanda do período. A esse valor é somado o maior tempo de troca entre todos os itens multiplicado pelo número de itens, exceto o item fantasma, ou seja, trata-se de uma estimativa dos tempos de troca nessa linha. Soma-se ainda o tempo de uma limpeza temporal, que é o tempo da primeira limpeza do período. Obtém-se então:

Capmt =  X j∈J djt ρj P m∈MSm  + (|J| − 1) ∗ max ∀i,j∈J\i0 {T CII ij }+ LT II. Ao valor Cap

144 Capítulo 6. Experimentos computacionais

que podem acontecer ao longo do período e assim, obtém-se o valor final da capacidade:

Capmt= Capmt+ $ Capmt T Lmax % LTII.

Note que para o cálculo das capacidades disponíveis de produção usou-se somente os tempos de troca e de limpeza temporal referentes as linhas, pois conforme explicado no Capítulo 4, se as linhas respeitam a capacidade disponível (em tempo) os tanques preparatórios também respeitam, uma vez que eles estão dedicados e a produção termina na linha.

6.2 Critérios de avaliação dos resultados

Para avaliar os resultados obtidos com os experimentos computacionais, são uti- lizados dois critérios: o tempo computacional medido em segundos, e a qualidade da solução medida pelo valor da função objetivo e/ou gap. Nas estratégias heurísticas, o gap é calculado por:

gap= F Oest− Limitante_Inferior

F Oest , (6.1)

em que F Oest é o valor da função objetivo da melhor solução factível da estratégia corrente

e Limitante_Inferior é um limitante inferior para o problema que pode ser obtido com a resolução do modelo MDSL-2E-LT, ou com o valor da relaxação linear desse modelo.

Para fazer a comparação entre várias estratégias de solução, utiliza-se os perfis de desempenho deDolan e Moré (2002). Esses perfis são baseados na função de distribuição de probabilidade cumulativa P (f, q) : R → [0, 1] da estratégia de solução f. A função

P(f, q) é definida por:

P(f, q) = |{p ∈ P : log2(v(p, f)) ≤ q}|

nP , q ≥0, (6.2)

em que P é o conjunto de instâncias, com p = 1, . . . , |P |, nP = |P | é o número total de

instâncias, o conjunto das estratégias testadas é F , com f = 1, . . . , |F |, e v(p, f) é a razão de melhoria, definida como a razão entre o valor da função objetivo (ou tempo, ou gap) obtido quando a instância p é resolvida pela estratégia f sobre a estratégia com o melhor desempenho. Seja T Cp,f o valor da função objetivo (ou tempo, ou gap) da solução da

instância p resolvida pela estratégia f, então:

v(p, f) = T Cp,f

min{T Cp,f : f ∈ F }

. (6.3)

A função P (f, q) indica a probabilidade da estratégia f estar dentro de um fator

q ∈ R da melhor razão possível. Esta ferramenta mede, assim, a robustez da estratégia. As

melhores estratégias são aquelas obtidas com o menor valor de q para P (f, q) = 1, ou seja, as estratégias em que o valor de P (f, q) se aproxima mais rapidamente do valor máximo 1.