// // Find and display all solutions to a trivial problem // // (1) Problem has 3 variables, x, y, and z // (2) A variable ordering heuristic is used (see VarOrder.java) // (3) Only the first 2 of these variables are used as decision variables! // (4) all variables have to be assigned different values // import choco.Constraint; import choco.ContradictionException; import choco.Problem; import choco.integer.*; import choco.search.*; import choco.Solver; import choco.Solution; public class Sample2 { public static void main(String[] args) { int n = 3; Problem pb = new Problem(); IntDomainVar x = pb.makeEnumIntVar("X",1,3); IntDomainVar y = pb.makeEnumIntVar("Y",1,3); IntDomainVar z = pb.makeEnumIntVar("Z",1,6); Constraint c1 = pb.neq(x,y); Constraint c2 = pb.neq(y,z); Constraint c3 = pb.neq(z,x); pb.post(c1);pb.post(c2);pb.post(c3); IntDomainVar v[] = new IntDomainVar[2]; v[0] = x; v[1] = y; Solver s = pb.getSolver(); //s.setVarSelector(new MinDomain(pb)); s.setVarSelector(new VarOrder(v)); //s.setValIterator(new DecreasingDomain()); if (pb.solve().booleanValue()){ System.out.println(pb.pretty()); while (pb.nextSolution().booleanValue()) System.out.println(pb.pretty()); } /* pb.solve(true); System.out.println("feasible: " + pb.isFeasible()); System.out.println("nbSol: " + s.getNbSolutions()); */ } }