internal static SimulationTimeSpan Intersection(SimulationTimeSpan a, SimulationTimeSpan b) { Hour start = Hour.Max(a.Start, b.Start); Hour end = Hour.Min(a.End, b.End); if (start > end) { return(null); } return(new SimulationTimeSpan(start, end)); }
private static Dictionary <Hour, int> __scheduleArrivals(int arrivalsPerMonth, int lengthInHours) { Dictionary <Hour, int> schedule = new Dictionary <Hour, int>(); SimulationTimeSpan timespan = new SimulationTimeSpan(new Hour(0), new Hour(lengthInHours - 1)); Hour hour = new Hour(0); while (hour <= timespan.End) { schedule[hour] = arrivalsPerMonth; hour = hour.FirstHourOfNextMonth(); } return(schedule); }
internal Simulation( int lengthInHours, BoardParameters boardParameters, int minimumDaysBetweenOP, int initialCaseCount, Dictionary <Hour, int> arriving) { OPSchedule opSchedule = new SimpleOPScheduler(minimumDaysBetweenOP); Registrar registrar = new Registrar(opSchedule); _board = boardParameters.MakeBoard(registrar); _timeSpan = new SimulationTimeSpan(new Hour(0), new Hour(lengthInHours - 1)); _reports = new HourlyReports(); _arrivingCases = arriving; _assembleInitialCases(initialCaseCount); }