- Constraint programming (CP) is a declarative paradigm for solving discrete optimization problems, contrasting imperative programming by describing desired results rather than steps.
- CP models consist of variables with domains and constraints that define relationships, with solvers finding solutions satisfying constraints and optionally optimizing objectives.
- A practical example uses CP-SAT (Google OR-Tools) in Python to schedule employee shifts, incorporating constraints like role qualifications, shift limits, and fairness objectives.
- The employee scheduling model demonstrates handling complex constraints (e.g., no consecutive restocking shifts, maximum hours) and adjusting for real-world preferences (e.g., time off).
- Solver statuses include optimal (best solution), feasible (valid but not proven optimal), infeasible (no solution), and unknown (interrupted solving).
- Objectives can optimize outcomes, such as minimizing the difference between maximum and minimum shifts to distribute work fairly among employees.