Exemple #1
0
        private static ShiftStructure SearchForShift(ScheduleState state)
        {
            Random random = new Random((int)DateTime.Now.Ticks);

            int dayMax  = 14;
            int lineMax = 3;
            int timeMax = 2;

            ShiftStructure shift = new ShiftStructure()
            {
                IsLast = false
            };

            shift.Day  = random.Next(0, dayMax);
            shift.Line = random.Next(0, lineMax);
            shift.Time = random.Next(0, timeMax);

            while (state.IsShiftAlreadyScheduled(shift.Day, shift.Line, shift.Time))
            {
                shift.Day  = random.Next(0, dayMax);
                shift.Line = random.Next(0, lineMax);
                shift.Time = random.Next(0, timeMax);

                if (state.IsLeftLassFiveShift())
                {
                    shift = state.GetFirstAvaliable();
                }
            }

            return(shift);
        }
Exemple #2
0
        private static ScheduleState GenerateStateCandidate(ScheduleState state)
        {
            ShiftStructure shift = SearchForShift(state);

            int day     = shift.Day;
            int time    = shift.Time;
            int lineNum = shift.Line;

            int?driver = SearchForDriver(state, day, lineNum);

            while (driver == null)
            {
                shift = SearchForShift(state);

                day     = shift.Day;
                time    = shift.Time;
                lineNum = shift.Line;

                driver = SearchForDriver(state, day, lineNum);

                if (driver == null && shift.IsLast == true)
                {
                    return(null);
                }
            }

            state.SetLineToDriver(lineNum, driver.Value, day, time);

            return(state);
        }