/// <summary> /// Sets the operation total, start and end period. /// </summary> /// <param name="model">SimulationOperationPlanModel</param> private void SetPeriod(SimulationOperationPlanModel model) { //TODO: System work start hour wil set. var operationStartPeriod = ((model.OperationDate.Hour - Convert.ToInt32(startTime.Split(":")[0])) * 60 / period) + (model.OperationDate.Minute / period + (model.OperationDate.Minute % period > 0 ? 1: 0)); var operationPeriod = model.OperationTime / period + (model.OperationTime % period > 0 ? 1 : 0); model.StartPeriod = operationStartPeriod; model.EndPeriod = operationStartPeriod + operationPeriod; model.OperationPeriod = model.EndPeriod - model.StartPeriod; }
private int GetDuration(SimulationOperationPlanModel simulationOperationPlanModel, int periodsInHour) { double e = simulationOperationPlanModel.ActualOperationTime / period; double sd = e * GetRandomCV(); double sigma = 0; double mean = 0; double stdNormal = 0; double normalValue = 0; double lognormalValues = 0; int duration = 0; sigma = Math.Sqrt(Math.Log10(1 + ((sd * sd) / (e * e)))); mean = Math.Log10(e) - ((sigma * sigma) / 2); stdNormal = random.NextGaussian(); normalValue = sigma * stdNormal + mean; lognormalValues = Math.Exp(normalValue); duration = (int)Math.Ceiling(periodsInHour * lognormalValues); return(duration * period); }