Mapa mental
Criação do Cenário
Conteúdo do mapa
Criação do Cenário
Simulator Domain
- Seleção dos campos da base de cenário utilizada
- SimulateItem
- Analyze
- Consumo
- Lead Time
- Processo
- Fonte de informação de consumo
- Fonte de informação de Lead Time
- Organiza Nível de serviço
- Checa o tipo de simulação a usar
- Execução dos métodos de Simulação
- Caso simulationModel = SimulationTypeModel.Poisson
- -Inputs: lifeCycle, lots, leadTimes, leadTimeAverage, leadTimeDeviation, minimumBuyLot, multipleBuyLot, consumptionLot, orderCost, stockCost, unitaryPrice.
- Output: Warning, Minimum, Maximum, BuyLot (lotsRestriction), LotCoverage(Int(lotsRestriction / demandAverage)), P1, P2, SafetyStock (securityStock), AvgStock,AvgValueInStock (averageStock * unitaryPrice) e AmountOfResupply
- Validar esse uso do ConsumptionLot. Ao meu ver não faz sentido
- Define as variáveis
- Todas as variáveis criadas: -lots = itemsinOperation/ConsumptionLot-demandAverage = lots / lifeCycle-annualDemand = demandAverage * 12-lotsRestriction = Lot(annualDemand, orderCost, stockCost, minimumBuyLot, multipleBuyLot, minimumCoverage, maximumCoverage, demandAverage);-leadTimeAvg = leadTimeAverage-leadTimeStandardDeviation = leadTimeDeviation-leadTimeDemandAverage = leadTimeAvg * demandAverage
- Cálculo do ponto do pedido
- Iteração entre o requestPoint e os níveis de serviço : expectedServiceLevel1 e expectedServiceLevel2
- Explicação: Como na modelagem de poisson não há a padronização do modelo estatístico não é possível definir k usado na fórmula s = udL + k*stdevL, por esse motivo, é feito a iteração para definir o request point que atende o nível de serviço desejado.
- Resultados
- Validações e variações finais
- Caso simulationModel = SimulationTypeModel.Bernoulli
- Caso simulationModel = SimulationTypeModel.GeneralizedCompound
- Caso simulationModel = SimulationTypeModel.GeneralizedCompound2
- consumptions[],minimalLimit, averageConsumption,consumptionDeviation, consumptionRate, consumptionType, leadTimes[][], leadTimeAverage, leadTimeDeviation, minimumBuyLot, multipleBuyLot, consumptionLot, orderCost, stockCost,unitaryPrice, -wantedP1,wantedP2, minimumCoverage, maximumCoverage = 0;
- Define as variáveis
- leadTimeLength = leadTimes[1].Length
- Qntd eventos Lead time
- Variáveis zeradas(0)
- consumptionLength, nonConsumptionProbability, demandAverage, calculatedDemandAvg, demandStandardDeviation, leadTimeNonConsumptionProb
- Cálculo Média/Desvpad
- Cálculo da média e desvpad muda dependendo se foi setado fonte de informação histórica
- leadTimeLength = leadTimes[1].Length
- Cálculo do pedido
- Input inicial
- 1)calculatedLeadTimeAvg = leadTimeAverage; 2)leadTimeStandardDeviation = leadTimeDeviation; 3)leadTimeDemandDeviation = Math.Sqrt((calculatedLeadTimeAvg * Math.Pow(demandStandardDeviation(*s), 2)) + (Math.Pow(demandAverage, 2) * Math.Pow(leadTimeStandardDeviation, 2))); 4)leadTimeDemandAverage = demandAverage * calculatedLeadTimeAvg; 5)leadTimeDemandAverage = demandAverage * calculatedLeadTimeAvg; 6)annualDemand = demandAverage * 12;
- aux = requestmark
- requestMark = leadTimeDemandAverage + 1
- expectedServiceLevel1= GeneralizedCompound2LeadTimeNonStockoutProbability
- GeneralizedCompound2LeadTimeNonStockoutProbability (calculatedDemandAvg, calculatedDemandDev, leadTimes, nonConsumptionProbability, requestMark);
- expectedServiceLevel2 = GeneralizedCompound2AttendedDemandPercentage
- GeneralizedCompound2AttendedDemandPercentage(calculatedDemandAvg, calculatedDemandDev, leadTimes, nonConsumptionProbability, requestMark, lotsRestriction, expectedServiceLevel1);
- GeneralizedCompound2AttendedDemandPercentage
- -Inputs: average,deviation, leadTimes[][], nonConsumptionProbability, requestMark
- Variáveis iniciais
- leadTimeLength = leadTimes[1].Length
- result = 0.0
- Preenche o valor do desvio padrão em cada indice do vetor
- for (var l = 0; l < leadTimeLength; l++)
- aux = 0.0 & lt = leadTimes[0][l];
- for (var i = 1; i <= lt; i++)
- aux = aux + C(lt,i) * (1- nonConsumptionProbability)^i * nonConsumptionProbability^(lt - i) * deviation * Math.Sqrt(i) * normalLostValue
- standardDeviationsQty = (requestPoint - average * i) / (deviation * Sqrt(i));
- normalLostValue = MathHelpers.NormDist(standardDeviationsQty, 0, 1, false) + standardDeviationsQty * MathHelpers.NormSDist(standardDeviationsQty) - standardDeviationsQty;
- result += leadTimes[1][l] * aux;
- if (result < expectedServiceLevel1); result = expectedServiceLevel1;
- Iterações para definir o requestMark otimizado
- Ciclos de repetição igual a sequência do input inicial, contudo com loops de iteração onde altera por cada iteração o requestMark até atingir algum critério da iteração
- Iteração 1: requestMark = requestMark/ 2
- while (expectedServiceLevel1 > wantedP1 && expectedServiceLevel2 > wantedP2 && requestMark > 0)
- Iteração Condicional 1: requestMark = requestMark + 1
- -if (requestMark.Equal(0)) while (expectedServiceLevel1 < wantedP1 || expectedServiceLevel2 < wantedP2)
- -Iteração condicional finaliza o processo caso chamada
- Finaliza
- Iteração 2: requestMark = 2 * requestMark
- Redefinição de variáveis
- requestMark= (requestMark/ 2) + 1);
- multiplier = 1
- expectedServiceLevel[1,2] = 0
- Iteração 3: requestMark + (multiplier * aux)
- while (expectedServiceLevel1 < wantedP1 || expectedServiceLevel2 < wantedP2)
- Condicional 2: Redefine variáveis e Iteração condicional
- Redefine variáveis
- requestMark = requestMark - (multiplier * aux)
- multiplier = multiplier / 2;
- expectedServiceLevel[1,2] = 0
- Iteração condicional 3: requestMark = requestMark + 1
- -if (multiplier * aux < 1) while (expectedServiceLevel1 < wantedP1 || expectedServiceLevel2 < wantedP2)
- Redefine variáveis
- Input inicial
- Definição dos níveis
- Cálculo do mínimo
- min = requestMark + consumptionLot
- Minimal limit
- -if (calculatedLeadTimeAvg > 12) minimalLimit = (calculatedLeadTimeAvg / 12) * minimalLimit;
- min = minimalLimit
- Redefine LOS
- 1)expectedServiceLevel1 = GC2LNSO(**) a)if (expectedServiceLevel1 < wantedP1) -expectedServiceLevel1 = wantedP1; 2)expectedServiceLevel2 = GC2ADP(**) a)if (expectedServiceLevel2 < wantedP1)-expectedServiceLevel2 = wantedP2;
- Cálculo do máximo
- max = requestMark + lotsRestriction
- if (max < min); max = min;
- securityStock = min - consumptionLot - leadTimeDemandAverage;
- averageStock = ((max - min + consumptionLot) / 2) + securityStock;
- if (securityStock < 0) ; securityStock = 0; if (averageStock < 0) ; averageStock = 0;
- max = requestMark + lotsRestriction
- resuppliesNumber = demandAverage * 12 / (max - min + consumptionLot);
- Cálculo do mínimo
- Resultados finais e avaliações
- Caso simulationModel = SimulationTypeModel.Poisson
- Análise de resultados
- Analyze
Informações
- Descrição
- Mapa Mental sobre Criação do Cenário, criado por Eduardo Almeida em 03-09-2018.
- Criado por
- Eduardo Almeida
- Visualizações
- 0
- Avaliação