CSP4J is a CSP solving API. It is designed to solve quickly and easily combinatorial problems that are parts of Java applications.
Example code for solving the n-queens problem:
- public class Queens implements ProblemGenerator {
- private final int size;
- private final Collection<Constraint> constraints;
- private final List<Variable> variables;
- public Queens(int size) {
- this.size = size;
- constraints = new ArrayList<Constraint>();
- variables = new ArrayList<Variable>();
- }
- @Override
- public void generate() {
- final int[] domain = new int[size];
- for (int i = 0; i < size; i++) {
- domain[i] = i;
- }
- for (int i = 0; i < size; i++) {
- variables.add(new Variable(domain));
- }
- for (int i = 0; i < size; i++) {
- for (int j = i + 1; j < size; j++) {
- constraints.add(new AbstractAC3Constraint(variables
- .get(i), variables.get(j)) {
- @Override
- public boolean check() {
- return getValue(0) != getValue(1)
- && Math
- .abs(getValue(0)
- - getValue(1)) != diff;
- }
- });
- }
- }
- }
- @Override
- public Collection<Constraint> getConstraints() {
- return constraints;
- }
- @Override
- public List<Variable> getVariables() {
- return variables;
- }
- .valueOf(args[0]));
- final Solver solver = new MGACIter(Problem.load(generator));
- solver.runSolver();
- for (Variable v : generator.getVariables()) {
- System.out
- .println(v + ": " + solver.getSolution().get(v));
- }
- }
- }
CSP for Java