Using a good scheduling app can surely save you enough money for a trip to Hawaii, but that’s not what I’m getting at in this blog post. The subject this time is how to search for an optimal schedule. We know that this type of search is much too challenging for a person, so you need to consider how a computer might do it. It turns out that the search for an optimal schedule is similar to a search on the Hawaiian landscape. It has mountains and cliffs and even many islands.

Let me explain it this way: Suppose you were very near-sighted or in a dense fog, where you could only see a few feet from where you were standing. Now suppose you were trying to find the highest spot in Hawaii–without Googling it. Your best bet would be to determine which way was rising fastest from your current standpoint and take a step or two in that direction. If you repeated the process over and over, you eventually would find a point that is down in all directions. (Your math teacher called this a local maximum. Remember?)

Are you now at the highest point in Hawaii? What if you had started from a different point? What if you had stated on another island? How would you jump to another starting point? How many different starting points should you try?

The search for an optimal schedule is very similar. You find a combination of resources (machines, people, locations, etc.) and you find the best solution with this combination. Then you find another set of feasible resources and search again. Each different set of resources is like a different Hawaiian island, so to speak.

Now, you can skip the next two paragraphs if you don’t want a brief brush with theory. If you’re still reading, the math gurus call this the “mixed integer programming” problem. Some of the variables (like the activity start times) are continuous and some (like the resource selections are discrete). You either use the resource or you don’t–yes or no. On or off. When the scheduling problem involves selecting resources as well as assigning start times, both discrete and continuous variables are involved. And without getting too far into the math weeds, the two types of variables are tightly coupled.

Furthermore, most realistic scheduling environments involve a lot of possible combinations of resources to get an activity done. Remember, a schedule involves a lot of activities. It is not uncommon to see tens of thousands of combinations that must be considered. You can’t try that many starting points in Hawaii and find the highest point in your lifetime. The nerds call this the “combinatorial explosion.” and the scheduling problem “NP-Hard.” The rigorous definition of that term is beyond the scope of anything you want to read here, but it’s okay to disbelieve any vendors who claim to find *the* optimal schedule–at least for your own realistic scenario.

Okay! All of you who are still in mental Hawaii, is there a way to find really good (near optimal) schedules? Here’s what you need from a good scheduler:

- A clever way to sample the starting points;
- A really fast way to find the highest point attainable from that starting point; and
- A good way to compare the highest points

Scheduling apps built on these principles do exist! Do you have one? If you do, you are the company hero–valuable enough that your boss should give you a bonus–like a trip to Hawaii.