Overall Plan
Get my class information to automatically optimize and select my uni class timetable
Overall Algorithm
- Logon to the website using its Enterprise Sign On Engine login
- Find my current semester and its related subjects (pre setup)
- Navigate to the right page and get the data from each related subject (lecture, practical and workshop times)
- Strip the data of useless information
- Rank the classes which are closer to each other higher, the ones on random days lower
- Solve a best time table solution
- Output me a detailed list of the BEST CASE information
- Output me a detailed list of the possible class information (some might be full for example)
- Get the program to select the best classes automatically
- Keep checking to see if we can achieve 7.
6 in detail Get all the classes, using the lectures as a focus point, would be highest ranked (only one per subject), and try to arrange the classes around that.
Questions
Can anyone supply me with links to something that might be similar to this hopefully written in python? In regards to 6.: what data structure would you recommend to store this information in? A linked list where each object of uniclass? Should i write all information to a text file?
I am thinking uniclass to be setup like the following attributes:
- Subject
- Rank
- Time
- Type
- Teacher
I am hardly experienced in Python and thought this would be a good learning project to try to accomplish. Thanks for any help and links provided to help get me started, open to edits to tag appropriately or what ever is necessary (not sure what this falls under other than programming and python?)
EDIT: can’t really get the proper formatting i want for this SO post ><
Depending on how far you plan on taking #6, and how big the dataset is, it may be non-trivial; it certainly smacks of NP-hard global optimisation to me…
Still, if you’re talking about tens (rather than hundreds) of nodes, a fairly dumb algorithm should give good enough performance.
So, you have two constraints:
What I mean by flexible is that you can go to more spaced out classes (with lower scores), but you cannot be in two classes at once. Interestingly, there’s likely to be a positive correlation between score and clashes; higher scoring classes are more likely to clash.
My first pass at an algorithm:
Working out clashes might be awkward if classes are of uneven lengths, start at strange times and so on. Mapping start and end times into a simplified representation of ‘blocks’ of time (every 15 minutes / 30 minutes or whatever you need) would make it easier to look for overlaps between the start and end of different classes.