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.