Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package aima.gui.demo.search;
- import aima.core.environment.nqueens.NQueensBoard;
- import aima.core.environment.nqueens.NQueensBoard.Config;
- import aima.core.environment.nqueens.NQueensFunctions;
- import aima.core.environment.nqueens.NQueensGenAlgoUtil;
- import aima.core.environment.nqueens.QueenAction;
- import aima.core.search.framework.SearchForActions;
- import aima.core.search.framework.problem.Problem;
- import aima.core.search.framework.qsearch.GraphSearch;
- import aima.core.search.framework.qsearch.GraphSearch4e;
- import aima.core.search.framework.qsearch.TreeSearch;
- import aima.core.search.informed.AStarSearch;
- import aima.core.search.local.*;
- import aima.core.search.uninformed.BreadthFirstSearch;
- import aima.core.search.uninformed.DepthFirstSearch;
- import aima.core.search.uninformed.DepthLimitedSearch;
- import aima.core.search.uninformed.IterativeDeepeningSearch;
- import aima.core.search.uninformed.UniformCostSearch;
- import java.math.BigDecimal;
- import java.util.*;
- import java.util.function.Predicate;
- /**
- * Demonsrates how different search algorithms perform on the NQueens problem.
- * @author Ruediger Lunde
- * @author Ravi Mohan
- */
- public class NQueensDemo {
- private static final int boardSize = 8;
- public static void main(String[] args) {
- startNQueensDemo();
- }
- private static void startNQueensDemo() {
- solveNQueensWithDepthFirstSearch();
- //solveNQueensWithBreadthFirstSearch();
- //solveNQueensWithIterativeDeepeningSearch();
- //solveNQueensWithDepthLimitedSearch();
- //solveNQueensWithUniformSearch();
- }
- private static void solveNQueensWithDepthFirstSearch() {
- System.out.println("\n--- NQueensDemo DFS ---");
- Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
- SearchForActions<NQueensBoard, QueenAction> search = new DepthFirstSearch<>(new TreeSearch<>());
- Optional<List<QueenAction>> actions = search.findActions(problem);
- actions.ifPresent(qActions -> qActions.forEach(System.out::println));
- System.out.println(search.getMetrics());
- }
- private static void solveNQueensWithDepthLimitedSearch() {
- System.out.println("\n--- NQueensDemo DLS ---");
- Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
- SearchForActions<NQueensBoard, QueenAction> search = new DepthLimitedSearch<>(8);
- Optional<List<QueenAction>> actions = search.findActions(problem);
- actions.ifPresent(qActions -> qActions.forEach(System.out::println));
- System.out.println(search.getMetrics());
- }
- private static void solveNQueensWithUniformSearch() {
- System.out.println("\n--- NQueensDemo UniformS ---");
- Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
- SearchForActions<NQueensBoard, QueenAction> search = new UniformCostSearch<>(new GraphSearch<>());
- Optional<List<QueenAction>> actions = search.findActions(problem);
- actions.ifPresent(qActions -> qActions.forEach(System.out::println));
- System.out.println(search.getMetrics());
- }
- private static void solveNQueensWithBreadthFirstSearch() {
- System.out.println("\n--- NQueensDemo BFS ---");
- Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
- SearchForActions<NQueensBoard, QueenAction> search = new BreadthFirstSearch<>(new GraphSearch<>());
- Optional<List<QueenAction>> actions = search.findActions(problem);
- actions.ifPresent(qActions -> qActions.forEach(System.out::println));
- System.out.println(search.getMetrics());
- }
- private static void solveNQueensWithIterativeDeepeningSearch() {
- System.out.println("\n--- NQueensDemo Iterative DS ---");
- Problem<NQueensBoard, QueenAction> problem = NQueensFunctions.createIncrementalFormulationProblem(boardSize);
- SearchForActions<NQueensBoard, QueenAction> search = new IterativeDeepeningSearch<>();
- Optional<List<QueenAction>> actions = search.findActions(problem);
- actions.ifPresent(qActions -> qActions.forEach(System.out::println));
- System.out.println(search.getMetrics());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement