Skip to main content

Scheduling - A School's Heuristic Problem

Students learn about algorithms in Computer Science to solve complex problems in reasonable times. Some issues are too complex even for the best algorithms to perfectly solve, and those are known as heuristics. The example commonly used is the traveling salesman. While a little outdated, and I have updated the example to be the logistics of UPS delivering packages, the story goes like this. 

A traveling salesman arrives in a new town intending to get to each house in the most efficient path possible. They get a road map of all the homes they will visit and their hotel room and start mapping out paths. The math works out to show the following:

Let's nerd out for a moment. Each number of possible paths is the mathematical factorial of the number of homes on the path. So 3 homes means 3*2*1 = 6 paths. 7 homes means 7*6*5*4*3*2*1 = 5040 homes. Just 10 homes, and we are at 10 factorial or 3,682,800 pathways! How can one possibly solve for the best route with that many choices? It is too complex to be solved in a reasonable amount of time, so instead, the answer is to find a path that is practical enough.

Building a school's master schedule is a lot like this. My current high school has 1300 students choosing any variation of 5 to 8 classes for their schedule from a list of nearly 100 courses. I asked Google Sheets to find me the factorial of 1300, and it told me 170 is its maximum value for factorials. The number is too large for a spreadsheet to make sense of! The permutations of each child having 6 choices make 720 possible outcomes per child (6 factorial).

Once each child has chosen their courses, decisions must be made on what courses to run or not run and how many sections of each course we can run. We get a total number of teaching sections for the building, so we have to cut our sections into that total. Sometimes, we can run a section with fewer students; sometimes, we have to cut sections high to make it in our allotted staff. Then, we have to build the schedule. Teachers get assigned courses based on their certifications, qualifications, and, ideally, strengths and preferences.

When we start to lay out the courses during the day, we have 9 periods to fill. We want balance throughout the day of how many classes we run, and we know specific courses have to run at certain times based on staff or room availability. Everything else fits around until we have a schedule that meets the kids' needs and wants, the teacher's abilities, and honors all contractual stipulations for course load. Then, the next heuristic comes into play - we want every kid to get every course they want. 

We run what is called a conflict matrix to see, for each course, how many students who want the course will not be able to take it because it runs at the same time as another of their courses. For example, we may have one section of Percussion Studies and one section of Anatomy and Physiology. If a kid picks those two classes and we run them both during 3rd period, that kid has to decide which of those two high-interest courses they will take. So, we now have to determine if we will move one of those two classes, and if so, which one to which period. If we move Percussion to fourth period, we no longer conflict with Anatomy, but what else does that conflict with?

Each year's goal is to be 100% conflict-free, but this is nearly impossible. In fact, the smaller the school, the more likely the conflicts are to happen. Less kids means more singleton courses (classes that only run once per day), and less opportunities for students. Rather than finding the perfect 100%, we must settle for optimization and get as close to that as possible. 97% is a really high bar to achieve, which means that 3% make unwanted choices of courses to drop. 

I'm off for my second round of conflict matrix work now and hoping for almost 100%! 

Comments

Popular posts from this blog

Vulnerability

I cannot claim to be an expert on vulnerability, that title belongs to Brene Brown. Through her work, I have learned that being vulnerable is key to major breakthroughs in life. The opposite of this is true as well. Being unwilling to take risks, fearing failure or embarrassment, leads to stilted growth and eventual regression. The unwillingness to struggle in the short term leads to eventual major disappointment. That struggle is unpleasant, painful, draining, aggravating, defeating, and necessary. As a teacher, vulnerability arises when teaching a new grade level or content area. It happens when a re-designed lesson is taught for the first time, a new resource is used, and when being observed. Leaders face vulnerability when launching a new initiative and taking questions from stakeholders. Coaches face vulnerability when they meet with a new client or a client who operates outside the coach's wheelhouse of knowledge or skills. Humans are adept at procrastinating, which is a phys...

Navigating Uncertainty

One thing most people can agree on in early April 2024 is that no one knows what to expect right now. Federal agencies are being closed at a record pace, tariffs are rocking global finances, AI is changing faster than most people can keep up with, everyone has an opinion on this, and no one can anticipate what might happen next. The stock market is a prime example of the uncertainty, and on the day I started writing this the Dow Jones surged by 800 points and ultimately fell by 600. Today as I continue writing, it rose by nearly 3000 points. There are countless ways to reach when life becomes chaotic. Some people "don't look up" as the movie's title states, because as long as you can't see the asteroid heading straight towards you it does not exist. Some like to lean into the chaos, acting like Loki, the Norse god of mischief and disruption. Others protest through marches, speeches, and boycotts. All of these are human reactions on which I place no judgment. Based...