WordPress has an interesting feature that shows searches that have lead to your blog. Recently I saw a search for “what if the correct answer isn’t the right answer?” This search resonated with me because I have recently run into the same problem with a scheduling MIP model I am developing for a client. The model’s objective is to schedule as many of the available tasks as possible to minimize total cost while staying within resource constraints.
The basic functionality of the model is complete and we have started user testing with a power user to help us fine-tune the results. The model is generating good results using production-quality data, but one complaint we keep hearing is that certain task sequences desirable to the users are not found in the optimal schedule. So while the model is generating the correct answer based on its objective, constraints, and input data, the users are not 100% happy with the results. So what’s an Operation Researcher to do?
My first instinct was to try to prove to the users that the model’s globally-optimum solution is better than a schedule built around the desired task sequences. After all, if these sequences were really the best way to schedule these tasks, the model would choose them. Maybe I could show how far from optimality a schedule containing the desired sequences could be. I might even be able to show the effect each sequence has on the overall schedule. But this type of analysis is difficult to perform and even more difficult to present to users.
And even though they are presented with facts and data, users may still find it difficult to accept the model’s solution. This is a key issue because the success of a new model often comes down to one thing: Do the users accept the solution? If they don’t, no matter how fast, optimal, or cutting-edge the model is, the users are likely to work around it rather than with it.
Rather than trying to beat a square model into the users’ round hole, I decided to take a step back and reconsider some of the key aspects of the model, like the objective function and the constraints. Over the next few posts I’ll walk through a few of these keys areas that I took another look at as I continued to fine-tune my model towards my users’ needs. Hopefully I’ll find some ways to generate an optimal solution that will be more acceptable to the users.