# Workforce scheduling MIP formulation

I am working on a large scale workforce scheduling problem with a large number of hard and soft constraints. The soft constraints are modeled as objectives with penalties for violating them. So my question is regarding choosing the penalty weights. Is there a way we can come up with an optimal set of weights for those objectives (solving it as a multiobjective problem is not an option yet). Right now, the weights are chosen randomly and they range between 0.01 to 1000 and it feels like they are too random.

• A soft constraint implies that violations of the constraints are acceptable. Constraint violations are punished harsher with higher penalties. Why do you select penalties randomly? These typically come from business rules, e.g. "if you violate capacity we need to hire external capacity and the penalty is equal to the cost of external capacity". There's no such thing as 'optimal set of penalties' for soft constraints. May 18, 2023 at 17:54
• Does this post on a hierarchical objective function help? May 18, 2023 at 17:58
• I am not sure if cost for all the soft constraint violations can be computed as you described. But I think the approach described in the post you shared seems to be close to what is followed in our model. May 18, 2023 at 18:08
• @ORProfessional, would you say, what you mean by The soft constraints are modeled as objectives with penalties for violating them? Is it meaning as you dualized these constraints by adding them to the objective function? May 19, 2023 at 20:50

There is no "optimal" way to weight competing objectives. In some cases, you can ask the decision maker for tradeoffs -- "How much delay would you be willing to incur on this in order to save \$100 on that?" -- and use it to infer weights. That can get difficult when the things being traded are not directly comparable (say, cost v. "fairness"), and it also presumes that tradeoffs are constant regardless of magnitude (if it's worth \$100 to cut my work day from 15 hours to 14 hours then it's worth \\$100 to cut it from 6 hours to 5 hours).

If you are willing to solve the problem multiple times, you can pick some weights, solve, show the solution to the decision maker, ask them if they are happy and, if not, what they would be willing to sacrifice to improve something bugging them (in non-numerical terms, just "more of this for less of that"), tweak the weights accordingly, and repeat ad nauseum.

• I agree that there is no "optimal" way to weigh competing objectives. Maybe I should have said standard way of blending multiple objectives into a single objective functions. In our model the priorities are correct but the actual weight values seem to be random (1000 for the highest priority objective and then 200, 100, 20, 10, 1, 0.01). Also, does it not need any scaling for the objectives prior to applying the weights? May 18, 2023 at 18:12
• If you are using "dimensionless" weights (e.g., "I'm just going to make this twice as important as that"), then you probably do want to scale. If you can prioritize in terms of units ("a dollar here is more important than an hour there"), then scaling is probably not important.
– prubin
May 18, 2023 at 20:13
• I am not sure if I understood what you mean by "dimensionless" correctly. We have converted all the objectives to be in dollar amounts (e.g., cost for 2 hour over coverage is 2 * max worker rate for that demand and so on). But other than that the weights are coming from the business stakeholders (they deem some objective to have the highest priority so give it the highest wt and so on). May 18, 2023 at 20:25
• If everything is in dollars, then the best way to derive the weights is to ask the stakeholders how many dollars of one thing they are willing to eat (higher cost, reduced profit, budget overrun, ...) for each dollar of another thing they gain (higher profit, reduced cost, ...).
– prubin
May 18, 2023 at 21:40
• Sounds like a good strategy, thanks a lot. May 18, 2023 at 22:14