Package aima.gui.demo.search

Source Code of aima.gui.demo.search.EightPuzzleDemo

package aima.gui.demo.search;

import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import aima.core.agent.Action;
import aima.core.environment.eightpuzzle.EightPuzzleBoard;
import aima.core.environment.eightpuzzle.EightPuzzleFunctionFactory;
import aima.core.environment.eightpuzzle.EightPuzzleGoalTest;
import aima.core.environment.eightpuzzle.ManhattanHeuristicFunction;
import aima.core.environment.eightpuzzle.MisplacedTilleHeuristicFunction;
import aima.core.search.framework.GraphSearch;
import aima.core.search.framework.Problem;
import aima.core.search.framework.Search;
import aima.core.search.framework.SearchAgent;
import aima.core.search.informed.AStarSearch;
import aima.core.search.informed.GreedyBestFirstSearch;
import aima.core.search.local.SimulatedAnnealingSearch;
import aima.core.search.uninformed.DepthLimitedSearch;
import aima.core.search.uninformed.IterativeDeepeningSearch;

/**
* @author Ravi Mohan
*
*/

public class EightPuzzleDemo {
  static EightPuzzleBoard boardWithThreeMoveSolution = new EightPuzzleBoard(
      new int[] { 1, 2, 5, 3, 4, 0, 6, 7, 8 });;

  static EightPuzzleBoard random1 = new EightPuzzleBoard(new int[] { 1, 4, 2,
      7, 5, 8, 3, 0, 6 });

  static EightPuzzleBoard extreme = new EightPuzzleBoard(new int[] { 0, 8, 7,
      6, 5, 4, 3, 2, 1 });

  public static void main(String[] args) {
    eightPuzzleDLSDemo();
    eightPuzzleIDLSDemo();
    eightPuzzleGreedyBestFirstDemo();
    eightPuzzleGreedyBestFirstManhattanDemo();
    eightPuzzleAStarDemo();
    eightPuzzleAStarManhattanDemo();
    eightPuzzleSimulatedAnnealingDemo();
  }

  private static void eightPuzzleDLSDemo() {
    System.out.println("\nEightPuzzleDemo recursive DLS (9) -->");
    try {
      Problem problem = new Problem(boardWithThreeMoveSolution, EightPuzzleFunctionFactory
          .getActionsFunction(), EightPuzzleFunctionFactory
          .getResultFunction(), new EightPuzzleGoalTest());
      Search search = new DepthLimitedSearch(9);
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void eightPuzzleIDLSDemo() {
    System.out.println("\nEightPuzzleDemo Iterative DLS -->");
    try {
      Problem problem = new Problem(random1, EightPuzzleFunctionFactory
          .getActionsFunction(), EightPuzzleFunctionFactory
          .getResultFunction(), new EightPuzzleGoalTest());
      Search search = new IterativeDeepeningSearch();
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void eightPuzzleGreedyBestFirstDemo() {
    System.out
        .println("\nEightPuzzleDemo Greedy Best First Search (MisplacedTileHeursitic)-->");
    try {
      Problem problem = new Problem(boardWithThreeMoveSolution,
          EightPuzzleFunctionFactory.getActionsFunction(),
          EightPuzzleFunctionFactory.getResultFunction(),
          new EightPuzzleGoalTest());
      Search search = new GreedyBestFirstSearch(new GraphSearch(),
          new MisplacedTilleHeuristicFunction());
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void eightPuzzleGreedyBestFirstManhattanDemo() {
    System.out
        .println("\nEightPuzzleDemo Greedy Best First Search (ManhattanHeursitic)-->");
    try {
      Problem problem = new Problem(boardWithThreeMoveSolution,
          EightPuzzleFunctionFactory.getActionsFunction(),
          EightPuzzleFunctionFactory.getResultFunction(),
          new EightPuzzleGoalTest());
      Search search = new GreedyBestFirstSearch(new GraphSearch(),
          new ManhattanHeuristicFunction());
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void eightPuzzleAStarDemo() {
    System.out
        .println("\nEightPuzzleDemo AStar Search (MisplacedTileHeursitic)-->");
    try {
      Problem problem = new Problem(random1, EightPuzzleFunctionFactory
          .getActionsFunction(), EightPuzzleFunctionFactory
          .getResultFunction(), new EightPuzzleGoalTest());
      Search search = new AStarSearch(new GraphSearch(),
          new MisplacedTilleHeuristicFunction());
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void eightPuzzleSimulatedAnnealingDemo() {
    System.out.println("\nEightPuzzleDemo Simulated Annealing  Search -->");
    try {
      Problem problem = new Problem(random1, EightPuzzleFunctionFactory
          .getActionsFunction(), EightPuzzleFunctionFactory
          .getResultFunction(), new EightPuzzleGoalTest());
      SimulatedAnnealingSearch search = new SimulatedAnnealingSearch(
          new ManhattanHeuristicFunction());
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      System.out.println("Search Outcome=" + search.getOutcome());
      System.out.println("Final State=\n" + search.getLastSearchState());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static void eightPuzzleAStarManhattanDemo() {
    System.out
        .println("\nEightPuzzleDemo AStar Search (ManhattanHeursitic)-->");
    try {
      Problem problem = new Problem(random1, EightPuzzleFunctionFactory
          .getActionsFunction(), EightPuzzleFunctionFactory
          .getResultFunction(), new EightPuzzleGoalTest());
      Search search = new AStarSearch(new GraphSearch(),
          new ManhattanHeuristicFunction());
      SearchAgent agent = new SearchAgent(problem, search);
      printActions(agent.getActions());
      printInstrumentation(agent.getInstrumentation());
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  private static void printInstrumentation(Properties properties) {
    Iterator<Object> keys = properties.keySet().iterator();
    while (keys.hasNext()) {
      String key = (String) keys.next();
      String property = properties.getProperty(key);
      System.out.println(key + " : " + property);
    }

  }

  private static void printActions(List<Action> actions) {
    for (int i = 0; i < actions.size(); i++) {
      String action = actions.get(i).toString();
      System.out.println(action);
    }
  }

}
TOP

Related Classes of aima.gui.demo.search.EightPuzzleDemo

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.