- Room
- Teacher
- Class
- Student
- Time
- Subject
- ID
- Name/description
- Room types (generic, laboratory, kitchen, office)
- Room size/number of places
- Room occupancy (["xx:xx - xx:xx"])
- Additional time between the hours (switching room, break, ventilation, discussions)
- Teachers/students need breaks when it is convenient (or at a fixed time)
- Name
- Type (teacher, professor, external employee)
- Subjects
- Availability
- Name
- classes/courses
- Is the resource available? (Teacher, room, class) for a period
- Set/give priority
- Set hard/soft constraint
- Teacher + class + student can only be in one room at the same time
- Subject can only take place in a certain room
- Subjects should be in a certain order during the week
- Minimize time between the hours
- Reduce walking time between different rooms/facilities
A metaheuristic evolutionary algorithm for creating timetables
Variables (G = Generations, P = Population, T = Stop Threshold, S = Selection percentage, M = Mutation probability)
- Loads all resources
- Loads all rules and sorts them by priority
- Repeat until no improvement in performance is found after T runs or the user manually stops
- Repeat G times:
- Repeat P times:
- Starts with a random table or takes the one of the previous run
- Assigns performance 0 to this run
- Execute every rule for every resource
- If the rule is fulfilled, its priority is added to the performance
- If the rule is violated, its priority is subtracted from the service
- If the rule is violated and it is absolutely necessary, the service is set to 0 and this cycle is ended
- Repeat P times:
- Saves and sorts the results according to the performance of the runs
- Selection (S percent of the best runs are selected)
- Recombination (some entries are swapped for two of the selected runs)
- Mutation (some entries are swapped with a probability of M)
- Population (100% - S are also filled in randomly generated tables)
- Repeat G times:
[
{
"and": [
{
"or": [
{
"equals": "1==1"
},
{
"equals": "1==0"
}
]
},
{
"equals": "1==1"
}
]
}
]
{
"ressources": {
"lehrer": {}
}
}