Constraint Programming for WFM

From WFM Labs
(Redirected from Constraint Programming)

Constraint Programming for WFM applies constraint satisfaction and optimization techniques to workforce scheduling problems where complex combinatorial rules make traditional integer programming formulations unwieldy. CP excels at modeling labor compliance rules, roster pattern constraints, and scheduling feasibility problems that arise in regulated contact center environments.

Overview

Constraint programming (CP) approaches optimization from a fundamentally different angle than integer programming. Where IP relaxes integrality and uses branch-and-bound on a continuous relaxation, CP works directly with discrete domains and uses constraint propagation to reduce possibilities before backtracking search explores the remaining space.

For WFM practitioners, the distinction matters practically: CP handles "hard combinatorial feasibility" problems — finding any schedule that satisfies complex rules — far better than IP. When your scheduling problem has 15 labor law constraints, 8 contract rules, fairness requirements, and pattern restrictions, CP formulates these naturally while IP requires linearization tricks that obscure the model and slow the solver.

Modern hybrid solvers like Google OR-Tools CP-SAT blur the line between CP and IP, combining the best of both paradigms. This hybrid approach increasingly dominates production WFM scheduling.

Mathematical Foundation

Constraint Satisfaction Problems (CSP)

A CSP is defined by:

  • Variables: X={x1,x2,...,xn}
  • Domains: D={D1,D2,...,Dn} where Di is the set of possible values for xi
  • Constraints: C={c1,c2,...,cm} where each ck restricts the values that subsets of variables can take simultaneously

A solution assigns a value from its domain to every variable such that all constraints are satisfied.

A Constraint Optimization Problem (COP) adds an objective function to minimize/maximize over the set of feasible solutions.

Constraint Propagation

The power of CP lies in propagation — inferring domain reductions from constraints before searching:

Arc consistency: For constraint c(xi,xj), remove any value vDi for which no value in Dj satisfies c. Repeat until stable.

Example in WFM: If agent A is assigned to a 14:00-22:00 shift today, and the minimum rest constraint requires 11 hours between shifts, then propagation immediately removes all tomorrow shifts starting before 09:00 from agent A's domain — without any search.

This cascading reduction is why CP handles rule-heavy problems efficiently: each rule prunes the search space for all other rules.

Backtracking Search

After propagation, CP uses systematic search:

  1. Select an unassigned variable (heuristic: most constrained first)
  2. Try a value from its domain
  3. Propagate consequences
  4. If a domain becomes empty (failure), backtrack — undo the assignment and try another value

Modern solvers use conflict-driven clause learning (CDCL): when backtracking, analyze why the failure occurred and add a "no-good" constraint to prevent the same conflict pattern elsewhere in the search tree.

Global Constraints

Global constraints capture common combinatorial structures, enabling specialized propagation algorithms:

  • alldifferent(x1,...,xn): All variables take distinct values. Uses matching theory for propagation. WFM: no two agents in the same exclusive slot.
  • cumulative(starts, durations, demands, capacity): Resource usage never exceeds capacity. Direct model of interval staffing. WFM: total agents working in each interval <= desk capacity.
  • regular(X, automaton): Sequence of values follows a pattern defined by a finite automaton. WFM: roster patterns must follow legal day-off sequences.
  • circuit(successors): Variables form a Hamiltonian circuit. WFM: cyclic rotation patterns.
  • table(X, tuples): Combination of values must appear in an allowed set. WFM: shift+break combinations must be from the approved list.

CP vs IP: When to Choose

Characteristic Favors CP Favors IP
Objective type Feasibility / satisfaction Cost minimization
Constraint structure Complex logical, sequential Linear inequalities
Variable domains Small discrete sets Large or continuous
Problem structure Highly constrained, few feasible solutions Many feasible solutions, seek cheapest
Symmetry Symmetry-breaking natural Requires explicit cuts
Solution quality proof Harder to prove optimality Strong LP bounds

WFM Applications

Labor Compliance Enforcement

Labor regulations create complex constraint webs that CP handles naturally:

Working Time Directive (EU):

  • Maximum 48 hours per week (averaged over 17 weeks)
  • Minimum 11 consecutive hours rest between shifts
  • Maximum 8 hours for night workers (averaged)
  • Minimum 24 hours uninterrupted rest per 7 days

State-level rules (US):

  • California: overtime after 8 hours/day AND 40 hours/week
  • Predictive scheduling (Oregon, NYC): 14-day advance notice
  • Split shift premiums, reporting time pay

In CP, each rule becomes a constraint with dedicated propagation. The 11-hour rest rule propagates immediately when a shift is assigned — eliminating infeasible next-day options without waiting for branch-and-bound to discover them.

Break Scheduling with Complex Rules

Break placement in a US contact center with state compliance:

Rules:

  • 30-minute meal break within first 5 hours of work (California)
  • Two 10-minute paid rest breaks (before and after meal)
  • Minimum 2 hours work before first break
  • Minimum 1 hour between breaks
  • Maximum 15 agents on break simultaneously (break room capacity)
  • Break must not start in the last 15 minutes of an interval with < 90% coverage

CP variables: bi,k = start time of break k for agent i

These timing and sequencing constraints with conditional logic (coverage-dependent break eligibility) are natural in CP but require big-M formulations in IP that weaken the relaxation.

Roster Pattern Generation

Generating compliant multi-week roster patterns is a pure constraint satisfaction problem:

Pattern rules:

  • Exactly 5 working days per week
  • Maximum 5 consecutive working days
  • Minimum 2 consecutive days off (one must include Saturday or Sunday every 3 weeks)
  • No "split singleton" (isolated day off between two work stretches)
  • Rotate through early/mid/late shifts with max 2 consecutive late shifts

The regular constraint models this elegantly: define a finite automaton whose states track consecutive work days, shift types, and weekend equity — then require the roster sequence to be accepted by the automaton.

Fairness and Preference Constraints

  • Weekend equity: Each agent works the same number of weekends (± 1) per quarter. The gcc (global cardinality) constraint enforces this.
  • Shift type balance: No agent gets more than 2 extra evening shifts compared to others.
  • Preference satisfaction: Soft constraints with weighted violations — CP naturally handles hierarchical objectives (first satisfy hard constraints, then optimize soft).

Google OR-Tools CP-SAT

CP-SAT is a hybrid solver combining:

  • SAT-based search (conflict-driven clause learning)
  • Linear programming relaxations for bounds
  • Constraint propagation
  • Large neighborhood search for improvement

It accepts both CP-style constraints (intervals, no-overlap, cumulative) and linear constraints — making it a practical choice for WFM problems that mix scheduling feasibility (CP-natural) with cost optimization (IP-natural). CP-SAT is free, fast, and increasingly used in production WFM systems.

Worked Example

Problem: Generate all compliant 4-week roster patterns for a 24/7 contact center with three shift types (Early: 06:00-14:00, Mid: 10:00-18:00, Late: 14:00-22:00) and Night (22:00-06:00).

Constraints:

  • 11-hour minimum rest between shifts (eliminates Late→Early, Night→Early, Night→Mid transitions)
  • Maximum 5 consecutive working days
  • Minimum 2 consecutive days off per week
  • Maximum 3 consecutive night shifts
  • At least 1 weekend off (Sat+Sun both off) per 4 weeks
  • Each 4-week pattern has exactly 20 working days and 8 days off
  • No more than 2 different shift types in any 7-day window (stability)

CP Model:

Variables: sd{E, M, L, N, Off} for d=1,...,28

Transition constraint (rest): Failed to parse (syntax error): {\displaystyle \text{table}((s_d, s_{d+1}), \text{allowed\_transitions})}

Allowed transitions exclude: L→E, N→E, N→M, N→L (11-hour rest violation).

Consecutive work: For any 6 consecutive days, at least 1 is Off

Implemented via sliding window: k=dd+5[skOff]5d

Consecutive days off: regular constraint on Off/Work pattern: no isolated Off days

Automaton states: {working, first_off, second_off+}. Transition from "working" to "first_off" allowed, but "first_off" back to "working" forbidden (forces minimum 2 consecutive off).

Night limit: For any 4 consecutive days, at most 3 are N

Weekend off: w{1,2,3,4}:s7w1=Offs7w=Off

(Assuming day 6,7 = Sat,Sun of week 1, etc.)

Shift stability: |{sd:d[w,w+6],sdOff}|2 distinct shift types per week

Solution via CP-SAT:

  • Solver finds 847 distinct feasible patterns (exhaustive enumeration in 3.2 seconds)
  • Without night limit: 2,340 patterns
  • Without shift stability: 1,580 patterns
  • The stability constraint is the most restrictive after rest rules

Pattern distribution:

  • Pure-shift patterns (all E, all M, all L, all N + off): 148 patterns
  • Two-shift patterns (E+M, M+L, etc.): 699 patterns
  • Three+ shift patterns: 0 (eliminated by stability constraint)

Practical use: These 847 patterns become the column set for a subsequent IP that assigns patterns to agents minimizing cost while meeting daily coverage. CP generates feasible patterns; IP selects the optimal combination.

Maturity Model Position

Constraint programming capabilities map to the WFM Maturity Model:

  • Level 2 (Developing): Rules enforced by manual checks or simple validations
  • Level 3 (Defined): WFM solver's built-in constraint handling (often CP internally)
  • Level 4 (Managed): Custom constraint models for organization-specific rules, pattern library generation
  • Level 5 (Optimizing): CP-IP hybrid pipelines, real-time constraint propagation for intraday decisions, automated rule extraction from labor agreements

See Also

References

  • Rossi, F., van Beek, P., & Walsh, T. (2006). Handbook of Constraint Programming. Elsevier.
  • Baptiste, P., Le Pape, C., & Nuijten, W. (2001). Constraint-Based Scheduling. Springer.
  • Demassey, S., Pesant, G., & Rousseau, L.M. (2006). "A cost-regular based hybrid column generation approach." Integration of AI and OR Techniques in Constraint Programming, Springer, 2-17.
  • Pesant, G. (2004). "A regular language membership constraint for finite sequences of variables." CP 2004, Springer, 482-495.
  • Google OR-Tools Team (2024). "CP-SAT Solver." https://developers.google.com/optimization/cp/cp_solver