|
|
|
|
|
by philip1209
3415 days ago
|
|
Check out slides 43-46 here from a talk I previously gave: https://speakerdeck.com/philipithomas/decision-algorithms-in... In the old days, everything was a hard constraint. However, free trial users don't always put in problems that are solvable. I would get paged at 4AM about infeasible models, only to discover things like "this employee has zero availability but a minimum of 40 hours per week of work". So, we turned into more of a "scoring" system where all minimums were soft constraints (e.g. minimum hours per week) whose violations caused a large point decrease [1]. Maximums were a hard constraint. The system made it impossible to input an infeasible model, and worked fairly well. Splitting the scheduling problem into separate steps (forecast->unassigned shifts, then unassigned->assigned shifts) also sped up the algorithms (and allowed for people to create unassigned shift templates). [1] https://en.wikipedia.org/wiki/Big_M_method |
|