Package aima.gui.demo.search

Source Code of aima.gui.demo.search.MapColoringCSPDemo$StepCounter

package aima.gui.demo.search;

import aima.core.search.csp.Assignment;
import aima.core.search.csp.BacktrackingStrategy;
import aima.core.search.csp.CSP;
import aima.core.search.csp.CSPStateListener;
import aima.core.search.csp.ImprovedBacktrackingStrategy;
import aima.core.search.csp.MapCSP;
import aima.core.search.csp.MinConflictsStrategy;
import aima.core.search.csp.SolutionStrategy;

/**
* Demonstrates the performance of different constraint solving strategies.
* The map coloring problem from the textbook is used as CSP.
*
* @author Ruediger Lunde
*/

public class MapColoringCSPDemo {
  public static void main(String[] args) {
    CSP csp = new MapCSP();
    StepCounter stepCounter = new StepCounter();
    SolutionStrategy solver;
   
    solver = new MinConflictsStrategy(1000);
    solver.addCSPStateListener(stepCounter);
    stepCounter.reset();
    System.out.println("Map Coloring (Minimum Conflicts)");
    System.out.println(solver.solve(csp.copyDomains()));
    System.out.println(stepCounter.getResults() + "\n");
   
    solver = new ImprovedBacktrackingStrategy(true, true, true, true);
    solver.addCSPStateListener(stepCounter);
    stepCounter.reset();
    System.out.println("Map Coloring (Backtracking + MRV + DEG + AC3 + LCV)");
    System.out.println(solver.solve(csp.copyDomains()));
    System.out.println(stepCounter.getResults() + "\n");
   
    solver = new BacktrackingStrategy();
    solver.addCSPStateListener(stepCounter);
    stepCounter.reset();
    System.out.println("Map Coloring (Backtracking)");
    System.out.println(solver.solve(csp.copyDomains()));
    System.out.println(stepCounter.getResults() + "\n");
  }
 
  /** Counts assignment and domain changes during CSP solving. */
  protected static class StepCounter implements CSPStateListener {
    private int assignmentCount = 0;
    private int domainCount = 0;
   
    @Override
    public void stateChanged(Assignment assignment, CSP csp) {
      ++assignmentCount;
    }
   
    @Override
    public void stateChanged(CSP csp) {
      ++domainCount;
    }
   
    public void reset() {
      assignmentCount = 0;
      domainCount = 0;
    }
   
    public String getResults() {
      StringBuffer result = new StringBuffer();
      result.append("assignment changes: " + assignmentCount);
      if (domainCount != 0)
        result.append(", domain changes: " + domainCount);
      return result.toString();
    }
  }
}
TOP

Related Classes of aima.gui.demo.search.MapColoringCSPDemo$StepCounter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.