Inspiration
Epitime lies at the intersection of physics, biology and computer science. We model the entropy of lecture rooms, using epidemiological methods to discover the most effective interventions that could improve timetable flexibility.
What it does
Epitime provides a live model of timetable strain. This is a technical term used in epidemiological modelling to describe the \(95^{\text{th}}\) percentile of location occupancy (and therefore transmission). We use this metric to figure out how much flexibility we get added from each room in the timetable. Users can load an existing timetable or use our models to build dummy data. They then suggest changes to room availability, such as banning 8ams and seeing which rooms are too full, or suggesting repurposing an existing room for lectures and seeing what improves. Our data-driven model responds instantly with a visualization of the exact impact.
The business case
Does your university struggle with timetabling? Too many students and not enough places to put them? Everything is fine, just use Epitime!
We know you're already doing things like teaching space audits or occupancy tracking to get the data on occupancy and identify the spaces you could repurpose or improve. But what if you could target the space audits to just the most effective interventions, saving hours of staff time? What if you had a data-driven, transparent platform to evaluate the data from space audits and tell you exactly which rooms to repurpose, and how?
Epitime automatically identifies strain points in your timetabling and puts you in control by simulating different interventions, allowing you to rapidly iterate and evaluate possible solutions to your timetabling needs. You retain full control with flexible and explainable data-driven insights.
How we built it
It all started out as scribbles on a whiteboard, as all the best ideas do. We refined the mathematics, including modelling as a stack machine, and finally built it in Python.
Practically, we model room attributes as set of vectors \(\{\mathbf P\}\) and room requirements as same-shape vectors \(\{\mathbf Q\}\). We sort them together in lexicographic order and generate an approximate total order over rooms and timetabled activities. Next, we compute the number of viable permutations based on the total order. We also compute strain based on simulated optimal allocation. The actual strain values represent how much more capacity we need for a given room type: strain of 1 means the room is always completely full.
To compute strain we find consecutive runs of \((\mathbf q_1, \dots, \mathbf q_i, \mathbf p_1, \dots, \mathbf p_j)\). Strain is just \(\frac{i}{j}\). If strain is ever \(\gt 1\), we carry the leftover events into the next bunch of rooms. It's a nice explainable number while also being useful for modelling new buildings.
We report the overall flexibility of the system by calculating the number of permutations where the rooms can be scheduled successfully (on a logarithmic scale). That's computed as \(\Sigma \ln {}^j \operatorname P _i\) and represents the overall number of different possibilities for scheduling. More options means better timetable quality for students and higher KPIs for your team.
Challenges we ran into
We wanted to use real timetable data- and that works! But we can't see the number of people in each lecture, so we weren't able to actually use the data for modelling. With official integration, we could easily use historical and live data.
Accomplishments that we're proud of
We developed an accurate and efficient heuristic for computing timetable flexibility.
What we learned
The connections between random bits of science are properly starting! Everyone on our team had background in either Physics, Computer Science or Biology and now we all have all three!
What's next for Epitime
We want to add integration for iCal formats to support importing historical data from MyTimetable. This allows us to produce accurate models and simulate the impact of adding or removing rooms or times of day.
Our system can be extended to identify strain points in bookable spaces using ODEs from the SEIRS model (more epidemiology). We've focused on laying the groundwork and proving value, but the things we can do using the biology and physics are enormous!
The draft timetable produced by Epitime can be fed into a CSP solver to produce higher-quality timetables. Our drafts are viable apart from overlapping groups, which can easily be solved by hill-climbing. As well as being easy to produce a viable timetable from them, our drafts are optimal - something that is very hard to achieve with a CSP solver! This means that we guarantee everyone is put in the smallest suitable room, leaving much more flexibility for other events.
Built With
- entropy
- epidemiology
- local-first
- matplotlib
- no-llms
- python
- seirs

Log in or sign up for Devpost to join the conversation.