PyCSP3-Scheduling Documentation

PyCSP3-Scheduling is a scheduling extension for PyCSP3 that provides interval variables, sequence variables, and comprehensive scheduling constraints for modeling complex scheduling problems.

Note

This library is designed for research-grade constraint programming with emphasis on mathematical correctness and seamless pycsp3 integration.

Key Features

  • Interval Variables: Represent tasks with start, end, size, and optional presence

  • Sequence Variables: Model ordered sequences on disjunctive resources

  • Precedence Constraints: Full set of temporal constraints (before, at)

  • Grouping Constraints: span, alternative, synchronize

  • Cumulative Functions: Resource capacity modeling with pulse, step_at_*

  • State Functions: Discrete resource states with transition matrices

  • XCSP3 Compatible: Output scheduling models in XCSP3 format

  • Visualization: Gantt charts and resource profiles

Quick Example

from pycsp3 import *
from pycsp3_scheduling import *

# Create tasks
task1 = IntervalVar(size=10, name="task1")
task2 = IntervalVar(size=15, name="task2")

# task1 must finish before task2 starts
satisfy(end_before_start(task1, task2))

# Minimize makespan
minimize(Maximum(end_time(task1), end_time(task2)))

if solve() in (SAT, OPTIMUM):
    print(f"task1: {interval_value(task1)}")
    print(f"task2: {interval_value(task2)}")