About this project

jcsp is a Java library designed for solving Constraint Satisfaction Problems (CSPs) using modern Java (21+) principles. It reimagines constraint solving through a pure functional and immutable lens, addressing the limitations of traditional solvers that rely on global mutable state and imperative trailing stacks. Key features include deeply immutable core objects for thread safety, parallel local search that exploits multiple CPU cores, and a lazy streaming API that allows incremental processing of solutions using standard Java Stream pipelines. The library supports multiple solving strategies such as backtracking search, tree decomposition, and branch-and-bound optimization. It offers extensive consistency preprocessing with various global constraints like AllDiff, Cumulative, and GlobalCardinality, ensuring efficient domain reduction. Additionally, jcsp supports real-valued variables with interval arithmetic, set variables for combinatorial problems, and parsing of XCSP3 instance files. The solver configuration is flexible, allowing for search limits, cancellation, and nogood learning, making it suitable for cloud microservices and complex optimization tasks.