• Nenhum resultado encontrado

Nesta seção a implementação computacional do modelo de simulação é explicada através da apresentação de uma série de algoritmos. O modelo de simulação é utilizado, primeiramente, junto a um algoritmo de otimização de simulação (abordado na seção 3.8) para a otimização dos parâmetros iniciais dos SCPP (s e c) para cada cenário de flexibilidade experimentado; em seguida, o modelo de simulação é utilizado para a obtenção dos resultados do trabalho, de acordo com o objetivo específico d).

O modelo de simulação deste trabalho recebe parâmetros de entrada de diversas fontes: o valor fixo de λA, definido durante a modelagem do sistema de produção (ver seção 3.4); os valores experimentais que variam a cada cenário e dependem dos níveis dos fatores de flexibilidade M e ti (ver seção 3.5); os valores dos parâmetros dos SCPP representados pelas variáveis s e c (ver seção 3.6); além dos parâmetros específicos da simulação: tempo de simulação T, e período de

warm-up do modelo de simulação l. Variáveis como ρ e μi já estão contempladas no cálculo de ti para cada tipo de produto. Como funções desses valores de entrada, o modelo de simulação retorna os indicadores de desempenho de estoques e nível de serviço.

A FIGURA 27 elucida todos os diferentes tipos de parâmetros de entrada do modelo de simulação estudado.

FIGURA 27 – ENTRADAS E SAÍDAS DO MODELO DE SIMULAÇÃO

Fonte: o autor (2019).

A execução da simulação ocorre através de uma série de algoritmos. Os algoritmos, aqui representados em formato de pseudocódigo, foram programados na linguagem Python 3.6. O código original utilizado para programar os algoritmos de simulação pode ser encontrado no APÊNDICE 2. O autor observou duas vantagens principais da implementação do modelo de simulação por meio de uma linguagem de programação, quando comparada ao uso de softwares dedicados. Em primeiro lugar, há maior facilidade em construir a simulação como uma função que possa ser chamada nas diferentes configurações apresentadas no planejamento de experimentos, sem que haja necessidade de programar cada um dos cenários. Em segundo lugar, há maior flexibilidade para a construção de lógicas complexas de operação como as encontradas no SCKE, por exemplo.

A simulação é considerada de eventos discretos, de modo que o estado do sistema se altera somente em pontos discretos onde um evento ocorre (BANKS, 1998). O funcionamento da simulação ocorre através de uma rotina principal e de uma

série de funções de suporte. Uma representação visual dessa lógica pode ser observada na FIGURA 28.

FIGURA 28 – LÓGICA DE FUNCIONAMENTO DA SIMULAÇÃO

Fonte: O autor (2019).

A rotina principal chama a função Processo Poisson para obter os instantes de chegadas e os tipos de todos os pedidos. O algoritmo para esta função é apresentado no QUADRO 8. As funções denominadas aleatório exponencial e ordenar são consideradas funções internas e não têm seus algoritmos apresentados, dado que podem ser automaticamente chamadas pela biblioteca numpy dentro do Python 3.6.

Uma distribuição exponencial para a geração de intervalos de chegada com parâmetro 1/ λ é utilizada no algoritmo para a obtenção dos instantes de chegada, limitados superiormente por T, de M processos Poisson com uma mesma taxa λ.

QUADRO 8 – ALGORITMO PROCESSO POISSON

Fonte: O autor (2019).

As condições iniciais para o início da simulação são parametrizadas através da chamada de uma função de inicialização. Em seguida, a simulação opera através de um laço até que a condição de parada seja identificada (laço principal). Cada iteração do laço se inicia com a chamada da função de agendamento para verificar qual o próximo evento que deve ocorrer, obter suas informações e avançar o relógio para o momento de ocorrência. Essa abordagem de avanço do relógio é a mais popularmente utilizada em softwares e frameworks de simulação (LAW, 2014).

No algoritmo que se encontra no QUADRO 9, é apresentada a função de agendamento. Através da comparação entre o instante da próxima chegada de um pedido, o instante do próximo término de processamento e o limite de tempo da simulação, a função avança o relógio e fornece as informações do próximo evento à função principal. O algoritmo utiliza as funções internas mínimo, índice e deletar.

QUADRO 9 – ALGORITMO AGENDAMENTO

Fonte: O autor (2019).

No caso do evento “fim de simulação”, a função principal aborta o laço principal.

No caso de um evento de chegada de pedido, as filas de demanda são atualizadas e a função de liberação produto é chamada para disponibilizar o produto ou registrar backorder, além de atualizar as filas de estoques, Kanbans e - no caso de uma estratégia SCK - a lista de prioridades, a qual prioriza a produção em um estágio a partir de uma lógica de “primeiro que chega, primeiro a ser servido” (a lista de prioridades do restante das estratégias é atualizada na função principal, visto que todos os processos de manufatura recebem diretamente informações de demanda em suas filas D). O histórico de backorders é utilizado posteriormente para o cálculo do nível de serviço, portanto só há atualização do histórico após o período de warm-up l.

O algoritmo para a função liberação produto é apresentado no QUADRO 10.

QUADRO 10 – ALGORITMO LIBERAÇÃO PRODUTO

Fonte: O autor (2019).

Já no caso de um evento de término de processamento em algum estágio de manufatura, a função saída processo é chamada para atualizar as filas I e PM, além de alterar o status de ociosidade do estágio e resetar o horário de término de processamento. Ainda, se o término de processamento ocorreu na última estação e há backorder, a função liberação produto é chamada para imediatamente repassar o produto finalizado para um dos clientes em espera. O algoritmo da função saída processo se encontra no QUADRO 11.

Após a ocorrência do evento que iniciou a iteração, deve ser verificado ainda se algum dos 2 PM pode iniciar a produção de alguma peça, de acordo com as regras de autorização de produção do SCPP simulado. Os algoritmos para esta etapa foram desenvolvidos na seção 3.6. A autorização de produção não é um evento indicado pela função de agendamento justamente porque a estratégia de controle de produção é puxada, de modo que o início de produção em um estágio ocorre imediatamente em resposta a algum evento que ocorre previamente.

QUADRO 11 – ALGORITMO SAÍDA PROCESSO

Fonte: O autor (2019).

Todos as peças que possuem autorização de produção são enviadas ao PM do estágio correspondente. A função entrada processo, apresentada no QUADRO 12, é chamada ao final do laço para colocar peças que foram autorizadas nos processos de manufatura de cada estágio j, de acordo com a disponibilidade do processo e seguindo a regra de priorização “primeiro que chega, primeiro a ser servido”.

QUADRO 12 – ALGORITMO ENTRADA PROCESSO

Fonte: O autor (2019).

Após a ocorrência de qualquer evento ao longo do laço, uma função de relatório guarda os principais dados da simulação para retornar ao usuário. Ao sair do laço principal, há ainda o cálculo dos indicadores de estoque médio e nível de serviço, não

considerando o período de warm-up l. Um relatório de todos os eventos, e os dois indicadores de desempenho são retornados ao usuário.

Após a finalização da implementação computacional, as seguintes etapas de verificação e validação foram realizadas em uma rodada de simulações teste para cada sistema puxado, com T = 1/6 hora, M = 2 produtos e parâmetros de heterogeneidade em 10%. Para a validação da modelagem conceitual, foi observado se as informações de demanda e movimentação de cartões ocorreram de maneira coerente com as regras estabelecidas na literatura. Para verificar a implementação computacional, a mudança no valor das filas D, A, I e PM foi conferida, para uma interação completa do laço principal, a partir do cálculo manual das filas. O relatório desta rodada de testes pode ser conferido no APÊNDICE 3.