Boy_Scouts_Scheduler.Algorithm.Score.ScoreSchedule C# (CSharp) Метод

ScoreSchedule() публичный статический Метод

public static ScoreSchedule ( IEnumerable schedule, IEnumerable groups, IEnumerable stations, IEnumerable constraints, IEnumerable timeSlots ) : long
schedule IEnumerable
groups IEnumerable
stations IEnumerable
constraints IEnumerable
timeSlots IEnumerable
Результат long
        public static long ScoreSchedule(
           IEnumerable<Models.Activity> schedule, IEnumerable<Models.Group> groups,
           IEnumerable<Models.Station> stations, IEnumerable<Models.SchedulingConstraint> constraints,
           IEnumerable<Models.TimeSlot> timeSlots)
        {
            return ScoreTopPicks(schedule, groups) + deductConstraintsViolatedScore(schedule, constraints)
                + deductStationRevisitedOnSameDayScore(schedule, groups, stations, timeSlots) +
                scoreScheduleDiversity(schedule);
        }

Usage Example

Пример #1
0
        public static IEnumerable <Models.Activity> Schedule(IEnumerable <Models.Group> groups, IEnumerable <Models.Station> stations, IEnumerable <Models.SchedulingConstraint> constraints,
                                                             IEnumerable <Models.TimeSlot> slots, IEnumerable <Models.Activity> oldSchedule, Models.TimeSlot startingTimeSlot)
        {
            IEnumerable <Models.Activity> Greedy       = new List <Models.Activity>();
            IEnumerable <Models.Activity> HillClimbing = new List <Models.Activity>();

            long GreedyScore       = 0;
            long HillClimbingScore = 0;

            Greedy = GreedyAlgorithm.GreedyScheduler.getSchedule(groups, stations, constraints, slots, oldSchedule, startingTimeSlot);

            // A schedule needs to be generated from scratch
            if (slots.First().ID == startingTimeSlot.ID)
            {
                HillClimbing = HillClimbingAlgorithm.GenerateSchedule(groups, stations, constraints, slots);

                GreedyScore       = Score.ScoreSchedule(Greedy, groups, stations, constraints, slots);
                HillClimbingScore = Score.ScoreSchedule(HillClimbing, groups, stations, constraints, slots);

                // compare scores
                if (GreedyScore >= HillClimbingScore)
                {
                    return(Greedy);
                }

                return(HillClimbing);
            }

            return(Greedy);
        }