Hard constraints vs. soft constraints
What is the difference between "hard" and "soft" constraints?
Hard constraints
Hard constraints are constraints that are absolutely non-negotiable. The scheduling engine will always respect every hard constraint that you give it. When you specify a hard constraint, you're effectively telling the scheduler that "If I can't have this constraint met, then I don't want any schedule at all."
In many cases, hard constraints also make the scheduler run slower, which also decreases the likelihood that it will find any schedules for you within the its computation window.
Soft constraints
Soft constraints, on the other hand, are constraints that could be negotiated once in awhile. The scheduling engine still works hard to respect every soft constraint that you give it, but will make an exception on the constraint in the rare case that something must give. When you specify a soft constraint, you're effectively telling the scheduler that "If I can't have this constraint met, I suppose it's okay--just do the best you can. I'd rather have a near-perfect schedule than no schedule at all."
Soft constraints *never* slow the scheduler down, which also increases the likelihood that it will find schedules for you within its computation window.
Which type should I use, and when?
Try to minimize the number of hard constraints that you use. Hard constraints usually make the scheduler run slower, which also decreases the likelihood that it will find any schedules for you within the its computation window.
You're encouraged to use as many soft constraints as you like. There is no computational penalty for using more of them.
Comparison
Hard constraints | Soft constraints |
---|---|
Absolutely non-negotiable | Negotiable if necessary |
Always respected by the scheduler | Usually respected by the scheduler |
Exceptions are never made | Exceptions are made if it's the difference between generating a schedule and not generating one |
Usually make the scheduler run slower |
No impact on scheduler speed |
Decrease likelihood that the scheduler will find any schedules |
Likelihood of finding schedules not affected |
Too many hard constraints may mean not getting any schedules | No penalty for having lots and lots of soft constraints |
Examples:
|
Examples:
|
Customer support service by UserEcho