Exemplo n.º 1
0
        public override List <OutcomeSummary> ExecuteSimulate(InputData input)
        {
            var list = new List <OutcomeSummary>();

            var date      = new DateTime(1800, 1, 1);
            var rowNumber = 0;

            while (date < DateTime.Now.AddMonths(1))
            {
                date = date.AddMonths(1);

                //Exclude all years filtered by start year/month.
                if (input.StartYear > date.Year)
                {
                    continue;
                }
                if (input.StartYear == date.Year && input.StartMonth > date.Month)
                {
                    continue;
                }
                if (input.LastYearOfDataUsed < date.Year)
                {
                    continue;
                }

                var tmpInput = CloneInputData(input);

                tmpInput.StartMonth = date.Month;
                tmpInput.StartYear  = date.Year;

                var outcome = new AllYearsSimulation().Run(tmpInput);
                rowNumber++;
                var summary = new OutcomeSummary()
                {
                    Outcomes = outcome, RowNumber = rowNumber,
                };
                summary.ProcessOutcomes(tmpInput);
                lock (list)
                {
                    list.Add(summary);
                }
            }

            PrintSummaryData(list, input);

            return(list);
        }
Exemplo n.º 2
0
        public override List <OutcomeSummary> ExecuteSimulate(InputData input)
        {
            var list = new List <OutcomeSummary>();

            Parallel.For(0, input.NumberOfSimulations, index =>
            {
                var outcome = new RandomOrderSimulation().Run(input.GetClone());
                var summary = new OutcomeSummary()
                {
                    Outcomes  = outcome,
                    RowNumber = index
                };
                summary.ProcessOutcomes(input);
                lock (list)
                {
                    list.Add(summary);
                }
            });

            PrintSummaryData(list, input);

            return(list);
        }