Ejemplo n.º 1
0
    def test_system2(self):
        # Test building correct schedule
        t1 = time.time()
        data = [Lesson(time=1, lecture_name=(1, TUTORIAL), group=3, day=2, auditorium=1, faculty=3),
                Lesson(time=1, lecture_name=(1, LAB), group=3, day=2, auditorium=1, faculty=2),
                Lesson(time=1, lecture_name=(1, LECTURE), group=3, day=2, auditorium=1, faculty=1),
                Lesson(time=1, lecture_name=(4, TUTORIAL), group=3, day=2, auditorium=1, faculty=3),
                Lesson(time=1, lecture_name=(4, LAB), group=3, day=2, auditorium=1, faculty=2),
                Lesson(time=1, lecture_name=(4, LECTURE), group=3, day=2, auditorium=1, faculty=1),
                Lesson(time=1, lecture_name=(2, TUTORIAL), group=2, day=2, auditorium=1, faculty=3),
                Lesson(time=1, lecture_name=(2, LAB), group=2, day=2, auditorium=1, faculty=2),
                Lesson(time=1, lecture_name=(2, LECTURE), group=2, day=2, auditorium=1, faculty=1),
                Lesson(time=1, lecture_name=(3, TUTORIAL), group=1, day=2, auditorium=1, faculty=4),
                Lesson(time=1, lecture_name=(3, LECTURE), group=1, day=2, auditorium=1, faculty=1),
                Lesson(time=1, lecture_name=(3, LAB), group=1, day=2, auditorium=1, faculty=4),
                ]
        uniconf = {"auditorium_size": [30, 30, 30, 30, 30, 30],
                   "group_size": [10, 20, 15, 20],
                   "number_of_auditoriums": 5,
                   "number_of_timeslots": 5,
                   "number_of_days": 2,
                   }
        set_uniconf(uniconf)
        pop = GeneticSchedule.create_initial(lessons=data)

        best = GeneticSchedule.run(pop, uniconf)
        self.assertEqual(best.fitness, 0)
        self.assert_no_intersections(best)
Ejemplo n.º 2
0
 def test_benchmark(self):
     print(len(test_data2['lessons']))
     test_data2['lessons'] = test_data2['lessons'][::2]
     print(len(test_data2['lessons']))
     init, uniconf = GeneticSchedule.get_initial_population(test_data2)
     t1 = time.time()
     sch = DataProcessor.denumerate_data(GeneticSchedule.run(init, uniconf))
     print('Running time:', time.time() - t1)
Ejemplo n.º 3
0
    def test_dict_import2(self):
        # Check import from dictionary
        pop, uniconf = GeneticSchedule.get_initial_population({
            "lessons": [["DSA", "Lecture", "BS17", "Adil"], ["DML", "Lecture", "BS17", "Nikolay"]],
            "days": [["Monday"], ["Tuesday"], ["Wednesday"]],
            "time_slots": [["09:00-10:30"], ["10:35-12:05"], ["12:10-13:40"], ["14:10-15:40"]],
            "auditoriums": [["101", "20"], ["102", "20"], ["103", "20"], ["104", "20"], ["105", "150"], ["106", "100"]],
            "student_groups": [["BS18", "150"], ["BS17", "150"], ["B16", "60"], ["B16-DS", "25"]]
        }
        )

        sch = GeneticSchedule.run(pop, uniconf)
        self.assert_no_intersections(sch)
Ejemplo n.º 4
0
 def test_denumerate_schedule(self):
     # Test that data denumeration do not crash
     pop, uni_conf = GeneticSchedule.get_initial_population(data={
         "lessons": [["DSA", "Lecture", "BS17", "Adil"], ["DML", "Lecture", "BS17", "Nikolay"]],
         "days": [["Monday"], ["Tuesday"], ["Wednesday"]],
         "time_slots": [["09:00-10:30"], ["10:35-12:05"], ["12:10-13:40"], ["14:10-15:40"]],
         "auditoriums": [["101", "20"], ["102", "20"], ["103", "20"], ["104", "20"], ["105", "150"], ["106", "100"]],
         "student_groups": [["BS18", "150"], ["BS17", "150"], ["B16", "60"], ["B16-DS", "25"]]
     }
     )
     best = GeneticSchedule.run(pop, uni_conf)
     schedule = DataProcessor.denumerate_data(best)
     self.assertEqual(len(best), len(schedule))
Ejemplo n.º 5
0
 def test_initial_population1(self):
     # Test that created population has given size
     set_run_info(size_of_population=10, exchange_format=ExchangeFormat.CSV)
     population, uni_conf = GeneticSchedule.get_initial_population()
     self.assertEqual(10, len(population))