Timetable planner for FIT CTU.
This app is written in Python 3(.8) and streamlit. It uses Evolutionary algorithm to create a timetable that satisfies some strategy.
Possible bugs submit via github issues.
- Simply write a list of courses you want to attend and select semester and strategy
for example:
BI-DBS, BI-SAP, BI-LIN, BI-PA2
- Select a criteria based on which the timetable will be planned
currently the only strategy is
Least collisions, however, I plan to add some more in the future (f. e.Least time in school,Time between classes,...)
- Hit generate button
- If the algorithm will be able to produce some solutions, you can prewiew them (currently max. 10)
- teacher (wish/black)list
- lunch breaks
- more strategies
- timetable.fit.cvut.cz like timetable
Based on provided list of courses, the application gets the information about lectures, tutorials and labs of each course (if present).
These informations are then encoded as a vector of numbers corresponding to an index of lecture/tutorial/lab of specific course.
| Course name | course a | course b | course c | ||||
| Parallel type | Lecture | Tutorial | Tutorial | Lecture | |||
| Parallel no |
|
2 | 1 | 123 |
|
|
3 |
| Index | 0 | 1 | 0 | 0 | 0 | 1 | 2 |
Would produce a vector: [1, 0, 0, 2]
Basically with probability p for each number in genotype a value from range [0, len-1] is added and then result % len is the final mutated gene. This is due to fact that each lab/lecture/tutoroial has finite number of parallels and this w
I used Uniform crossover.
I used Tournament selection.
Initial population is 100 individuals, I run 20 generations.