I have a scheduling queue that can be split between walk-ins and online booking appointments. In order to serve these queues I have a limited number of resources available. What is the optimal way to split the available hours of my resources between these two queues. My objective would be to be able to serve as much of the queue as possible.
- both queues can cancel / not show up
- there can be walk-ins who wait a long time to be seen (FIFO with priority)
- appointments can be booked up to a week ahead
- there isn't an explicit prioritization between the two queues, both are treated equally important, I may have some latent variables to analyze that can help me find out if the walk-in group should be treated with more importance or vice-versa
I have several years of visitor level data including timestamps of when the walk-in or appointment was created, when the actual visit started, whether the visit occurred or was cancelled, what the earliest availability was at the time of online-booking, whether some online booking visitors browsed but decided not to book.
Some models considered:
- linear optimization: how to setup the LP in this case tying up the objective function (maximize visitors) and some of the metrics like waiting time and earliest availability
- reinforcement learning: not sure I can build a simulation of the scheduling system, wouldn't rely on any of the historical data then
- supervised learning: what would my labels be? I'm not sure my historical choices of the queue allocation was any good, I just know some of the outcomes - a lot of the outcomes aren't the fault of my allocation, but visitor behavior (making appointment then not showing up, etc.), unexpected high demand, lack of resource availability