protected bool TryGenerateSolution() { _shiftManager = _dataManager.ShiftManager; _jobManager = _dataManager.JobManager; _zoneManager = _dataManager.ZoneManager; _shifts = _shiftManager.GetShifts().ToArray(); var rootJobs = _jobManager.RootJobs; var jobs = _jobManager.GetJobs(); _jobs = new List <IJob>(jobs); _zones = new List <IZone>(_zoneManager.GetZones()); _jobPriorityFunction = new SlackTimeRemainingJobPriorityFunction(); _availableJobs = new JobProcessorList(_jobPriorityFunction); foreach (var job in rootJobs) { _availableJobs.Enqueue(job); } _timepoints = new Dictionary <int, List <InWorkEvent> >(); _inWorkEvents = new List <InWorkEvent>(); int iteration = InitializeNextIteration(_shifts[0]); while (_jobs.Any() && iteration < MaxIterationCount) { // check to see if we have any events expiring ProcessCompletingJobs(iteration); // check to see if we have any new jobs we can work on iteration = ProcessJobs(iteration); // increment iteration counter iteration = IncrementIteration(iteration); } return(true); }
protected bool TryGenerateSolution() { _shiftManager = _dataManager.ShiftManager; _jobManager = _dataManager.JobManager; _zoneManager = _dataManager.ZoneManager; _shifts = _shiftManager.GetShifts().ToArray(); var rootJobs = _jobManager.RootJobs; var jobs = _jobManager.GetJobs(); _jobs = new List<IJob>(jobs); _zones = new List<IZone>(_zoneManager.GetZones()); _jobPriorityFunction = new SlackTimeRemainingJobPriorityFunction(); _availableJobs = new JobProcessorList(_jobPriorityFunction); foreach (var job in rootJobs) { _availableJobs.Enqueue(job); } _timepoints = new Dictionary<int, List<InWorkEvent>>(); _inWorkEvents = new List<InWorkEvent>(); int iteration = InitializeNextIteration(_shifts[0]); while (_jobs.Any() && iteration < MaxIterationCount) { // check to see if we have any events expiring ProcessCompletingJobs(iteration); // check to see if we have any new jobs we can work on iteration = ProcessJobs(iteration); // increment iteration counter iteration = IncrementIteration(iteration); } return true; }