예제 #1
0
        /// <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;
        }
예제 #2
0
        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);
        }