Advertisement
Guest User

CodigoNrainhas

a guest
Nov 18th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. package aima.gui.demo.search;
  2.  
  3. import aima.core.environment.nqueens.NQueensBoard;
  4. import aima.core.environment.nqueens.NQueensBoard.Config;
  5. import aima.core.environment.nqueens.NQueensFunctions;
  6. import aima.core.environment.nqueens.NQueensGenAlgoUtil;
  7. import aima.core.environment.nqueens.QueenAction;
  8. import aima.core.search.framework.SearchForActions;
  9. import aima.core.search.framework.problem.Problem;
  10. import aima.core.search.framework.qsearch.GraphSearch;
  11. import aima.core.search.framework.qsearch.GraphSearch4e;
  12. import aima.core.search.framework.qsearch.TreeSearch;
  13. import aima.core.search.informed.AStarSearch;
  14. import aima.core.search.local.*;
  15. import aima.core.search.uninformed.BreadthFirstSearch;
  16. import aima.core.search.uninformed.DepthFirstSearch;
  17. import aima.core.search.uninformed.DepthLimitedSearch;
  18. import aima.core.search.uninformed.IterativeDeepeningSearch;
  19. import aima.core.search.uninformed.UniformCostSearch;
  20.  
  21. import java.math.BigDecimal;
  22. import java.util.*;
  23. import java.util.function.Predicate;
  24.  
  25. /**
  26. * Demonsrates how different search algorithms perform on the NQueens problem.
  27. * @author Ruediger Lunde
  28. * @author Ravi Mohan
  29. */
  30.  
  31. public class NQueensDemo {
  32.  
  33. private static final int boardSize = 8;
  34.  
  35. public static void main(String[] args) {
  36. startNQueensDemo();
  37. }
  38.  
  39. private static void startNQueensDemo() {
  40. solveNQueensWithDepthFirstSearch();
  41. //solveNQueensWithBreadthFirstSearch();
  42. //solveNQueensWithIterativeDeepeningSearch();
  43. //solveNQueensWithDepthLimitedSearch();
  44. //solveNQueensWithUniformSearch();
  45.  
  46.  
  47.  
  48.  
  49. }
  50.  
  51. private static void solveNQueensWithDepthFirstSearch() {
  52. System.out.println("\n--- NQueensDemo DFS ---");
  53.  
  54. Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
  55. SearchForActions<NQueensBoard, QueenAction> search = new DepthFirstSearch<>(new TreeSearch<>());
  56. Optional<List<QueenAction>> actions = search.findActions(problem);
  57.  
  58. actions.ifPresent(qActions -> qActions.forEach(System.out::println));
  59. System.out.println(search.getMetrics());
  60. }
  61.  
  62. private static void solveNQueensWithDepthLimitedSearch() {
  63. System.out.println("\n--- NQueensDemo DLS ---");
  64.  
  65. Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
  66. SearchForActions<NQueensBoard, QueenAction> search = new DepthLimitedSearch<>(8);
  67. Optional<List<QueenAction>> actions = search.findActions(problem);
  68.  
  69. actions.ifPresent(qActions -> qActions.forEach(System.out::println));
  70. System.out.println(search.getMetrics());
  71. }
  72.  
  73. private static void solveNQueensWithUniformSearch() {
  74. System.out.println("\n--- NQueensDemo UniformS ---");
  75.  
  76. Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
  77. SearchForActions<NQueensBoard, QueenAction> search = new UniformCostSearch<>(new GraphSearch<>());
  78. Optional<List<QueenAction>> actions = search.findActions(problem);
  79.  
  80. actions.ifPresent(qActions -> qActions.forEach(System.out::println));
  81. System.out.println(search.getMetrics());
  82. }
  83.  
  84.  
  85. private static void solveNQueensWithBreadthFirstSearch() {
  86. System.out.println("\n--- NQueensDemo BFS ---");
  87.  
  88. Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
  89. SearchForActions<NQueensBoard, QueenAction> search = new BreadthFirstSearch<>(new GraphSearch<>());
  90. Optional<List<QueenAction>> actions = search.findActions(problem);
  91.  
  92. actions.ifPresent(qActions -> qActions.forEach(System.out::println));
  93. System.out.println(search.getMetrics());
  94. }
  95.  
  96.  
  97.  
  98. private static void solveNQueensWithIterativeDeepeningSearch() {
  99. System.out.println("\n--- NQueensDemo Iterative DS ---");
  100.  
  101. Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
  102. SearchForActions<NQueensBoard, QueenAction> search = new IterativeDeepeningSearch<>();
  103. Optional<List<QueenAction>> actions = search.findActions(problem);
  104.  
  105. actions.ifPresent(qActions -> qActions.forEach(System.out::println));
  106. System.out.println(search.getMetrics());
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement