Example #1
0
 /// <summary>
 /// Creates a scheduler for the given system and simulation scenario
 /// </summary>
 /// <param name="scheduleEvaluator"></param>
 public Scheduler(Evaluator scheduleEvaluator)
 {
     ScheduleEvaluator = scheduleEvaluator;
     _startTime = SimParameters.SimStartSeconds;
     _endTime = SimParameters.SimEndSeconds;
     _stepLength = SchedParameters.SimStepSeconds;
     _maxNumSchedules = SchedParameters.MaxNumScheds;
     _numSchedCropTo = SchedParameters.NumSchedCropTo;
 }
Example #2
0
        /// <summary>
        /// Remove Schedules with the worst scores from the List of SystemSchedules so that there are only _maxNumSchedules.
        /// </summary>
        /// <param name="schedulesToCrop"></param>
        /// <param name="scheduleEvaluator"></param>
        /// <param name="emptySched"></param>
        public void CropSchedules(List<SystemSchedule> schedulesToCrop, Evaluator scheduleEvaluator, SystemSchedule emptySched)
        {
            // Evaluate the schedules and set their values
            foreach (SystemSchedule systemSchedule in schedulesToCrop)
                systemSchedule.ScheduleValue = scheduleEvaluator.Evaluate(systemSchedule);

            // Sort the sysScheds by their values
            schedulesToCrop.Sort((x, y) => x.ScheduleValue.CompareTo(y.ScheduleValue));

            // Delete the sysScheds that don't fit
            int numSched = schedulesToCrop.Count;
            for (int i = 0; i < numSched - _numSchedCropTo; i++)
            {
                schedulesToCrop.Remove(schedulesToCrop[0]);
            }
        }