Skip to content

Eldeeqq/plable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📅 PLABLE

Timetable planner for FIT CTU.

What is it?

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.

How to use it?

  • 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)

Possible extensions

  • teacher (wish/black)list
  • lunch breaks
  • more strategies
  • timetable.fit.cvut.cz like timetable

Evolutionary Algorihm

Genotype

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 1 2 1 123 1 2 3
Index 0 1 0 0 0 1 2

Would produce a vector: [1, 0, 0, 2]

Mutation

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

Crossover

I used Uniform crossover.

Selection

I used Tournament selection.

Population

Initial population is 100 individuals, I run 20 generations.