// // csp6 // from AR33, figure 18, page 35 // import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.solver.ContradictionException; import choco.kernel.model.variables.integer.IntegerExpressionVariable; import choco.kernel.model.variables.integer.IntegerVariable; public class CSP6 { public static void main(String[] args) throws ContradictionException { Model m = new CPModel(); System.out.println("// model, no variables, no constraints //"); System.out.println(m.pretty()); IntegerVariable v1 = makeIntVar("v1",1,5); IntegerVariable v2 = makeIntVar("v2",1,5); IntegerVariable v3 = makeIntVar("v3",1,5); IntegerVariable v4 = makeIntVar("v4",1,5); System.out.println("// model, four variables, no constraints //"); System.out.println(m.pretty()); m.addConstraint(lt(v1,v2)); // v1 < v2 m.addConstraint(lt(v4,v3)); // v4 < v3 m.addConstraint(eq(plus(v4,v2),5)); // v4 + v2 = 5 m.addConstraint(gt(plus(v2,v3),6)); // v2 + v3 > 6 m.addConstraint(leq(v1,minus(v4,1))); // v1 <= v4 - 1 System.out.println("// model, four variables, five constraints, not AC //"); System.out.println(m.pretty()); Solver s = new CPSolver(); s.read(m); s.propagate(); System.out.println("// model, four variables, five constraints, AC //"); System.out.println(m.pretty()); System.out.println("// solver, four variables, five constraints, AC //"); System.out.println(s.pretty()); System.out.println("// solutions, if any //"); if (s.solve().booleanValue()){ System.out.println("v1 = " + s.getVar(v1).getVal() + " v2 = " + s.getVar(v2).getVal() + " v3 = " + s.getVar(v3).getVal() + " v4 = " + s.getVar(v4).getVal()); while (s.nextSolution().booleanValue()) System.out.println("v1 = " + s.getVar(v1).getVal() + " v2 = " + s.getVar(v2).getVal() + " v3 = " + s.getVar(v3).getVal() + " v4 = " + s.getVar(v4).getVal()); } /* s.solve(true); System.out.println("feasible: " + s.isFeasible()); System.out.println("nbSol: " + s.getNbSolutions()); */ } }