package aima.gui.fx.applications.search; import aima.core.search.csp.*; import aima.core.search.csp.examples.NQueensCSP; public class NQueensCspDemo { public static void main(String[] args) { int size = 64; CSP<Variable, Integer> csp = new NQueensCSP(size); CspListener.StepCounter<Variable, Integer> stepCounter = new CspListener.StepCounter<>(); CspSolver<Variable, Integer> solver; System.out.println(size + "-Queens (Min-Conflicts)"); solver = new MinConflictsSolver<>(1000); solver.addCspListener(stepCounter); stepCounter.reset(); Assignment<Variable, Integer> sol = solver.solve(csp); System.out.println((sol.isSolution(csp) ? ":-) " : ":-( ") + sol); System.out.println(stepCounter.getResults() + "\n"); System.out.println(size + "-Queens (Backtracking + MRV & DEG + LCV + AC3)"); solver = new FlexibleBacktrackingSolver<Variable, Integer>().setAll(); solver.addCspListener(stepCounter); stepCounter.reset(); System.out.println(solver.solve(csp)); System.out.println(stepCounter.getResults() + "\n"); size = 16; csp = new NQueensCSP(size); System.out.println(size + "-Queens (Backtracking)"); solver = new FlexibleBacktrackingSolver<>(); solver.addCspListener(stepCounter); stepCounter.reset(); System.out.println(solver.solve(csp)); System.out.println(stepCounter.getResults() + "\n"); } }