Description
| In this assignment, you will build general-purpose search algorithms and apply them to solving puzzles. In Part 1 (for everyone), you will be in charge of a “Pac-Man” agent that needs to find paths through mazes while eating one or more dots or “food pellets”. In Part 2 (for four-credit students), you will tackle small instances of the Sokoban puzzle.
You are free to use any high-level programming languages you are comfortable with, including but not limited to Java, C++, Python, and MATLAB. You have the option of working in groups of up to three people, all of whom should take this course for the same number of credit hours. We focus on the entire problem solving process, and you should hand in both the code with your implementation and a written report with your analysis. Three-credit students can earn a maximum of 24 points plus 6 extra credit points, whereas four-credit students can earn a maximum of 32 points plus 8 extra credit points. Four-credit students are required to finish Part 2, and can try Part 2 extra credit section for extra credit. Three-credit students can try Part 2 for extra credit, but are not suppoed to finish Part 2 extra credit section since your extra credit points will be capped for balance. ContentsPart 1 (For everyone): Pac-ManCredits: Berkeley CS188 Pacman projects, Kyo Hyun Kim and Krishna Kothapalli 1.1 Basic pathfindingConsider the problem of finding the shortest path from a given start state while eating one or more dots or “food pellets”. The above image illustrates the simple scenario of a single dot, which in this case can be viewed as the unique goal state. Here, all step costs are equal to one. Implement the state representation, transition model, and goal test needed for solving the problem in the general case of multiple dots. For the state representation, besides your current position in the maze, is there anything else you need to keep track of? For the goal test, keep in mind that in the case of multiple dots, the Pacman does not necessarily have a unique ending position. Next, implement a unified top-level search routine that can work with all of the following search strategies, as covered in class:
For this part of the assignment, use the Manhattan distance from the current position to the goal as the heuristic function for greedy and A* search.The maze layout will be given to you in a simple text format, where ‘%’ stands for walls, ‘P’ for the starting position, and ‘.’ for the dot(s). Run each of the four search strategies on the following inputs: For each problem instance and each search algorithm, include the following in your report:
This section is worth 16 points for everyone. 1.2: Search with multiple dotsNow consider the harder problem of finding the shortest path through a maze while hitting multiple dots. Once again, the Pacman is initially at P, but now there is no single goal position. Instead, the goal is achieved whenever the Pacman manages to eat all the dots. Once again, we assume unit step costs.As instructed in 1.1, your state representation, transition model, and goal test should already be adapted to deal with this scenario. The next challenge is to solve the following inputs using A* search with an admissible heuristic designed by you: You should be able to handle the tiny search using uninformed BFS — and in fact, it is a good idea to try that first for debugging purposes, to make sure your representation works with multiple dots. However, to successfully handle all the inputs, it is crucial to come up with a good heuristic. For full credit, your heuristic should be admissible and should permit you to find the solution for the medium search in a reasonable amount of time. In your report, explain the heuristic you chose, and discuss why it is admissible and whether it leads to an optimal solution. For each maze, give the solution cost and the number of nodes expanded. Show your solution by numbering the dots in the order in which you reach them (once you run out of numbers, use lowercase letters, and if you run out of those, uppercase letters). This section is worth 8 points for everyone. 1.2 Extra Credit: Suboptimal searchSometimes, even with A* search and a good heuristic, finding the optimal path through all the dots is hard. In these cases, we would still like to find a reasonably good path, quickly. Write a suboptimal search algorithm that will do a good job on this big maze. Your algorithm could either be A* search with a non-admissible heuristic, or something different altogether.In your report, discuss your approach and output the solution cost and number of expanded nodes. You don’t have to show the solution path unless you can come up with a nice animation. This section is worth 2 extra credit points for everyone. Tips for Part 1
Part 2 (For four-credit students): SokobanSource: WikipediaIn this part of the assignment, you will adapt your A* search to solve tiny instances of the Sokoban puzzle. Here is the description of the rules from Wikipedia:
You need to solve the four Sokoban instances below. In the following input files, ‘%’ denotes walls, ‘b’ denotes boxes, ‘.’ denotes storage locations, and ‘B’ denotes boxes on top of storage locations. The initial position of the agent is given by ‘P’. Implement the Sokoban transition model, then try to come up with interesting admissible heuristics that expand as few nodes as possible. For full credit, you should run two versions of search on each input: either uninformed search plus A* search with one heuristic, or A* search with two different heuristics (probably at different levels of sophistication).In your report, describe your heuristic(s) and justify whether they are admissible. For each input and each method of search, give the number of moves needed to reach a goal configuration, the number of nodes expanded, and the running time. This section is worth 8 points for four-credit students, and 4 extra credit points for three-credit students. Part 2 Extra Credit: Suboptimal searchCome up with a suboptimal search algorithm to solve harder Sokoban inputs: In your report, discuss your approach and output the number of moves needed to reach a goal configuration, the number of nodes expanded, and the running time. You don’t have to show the solution path unless you can come up with a nice animation.This section is worth 6 extra credit points for four-credit students, but no points for three-credit students. Report ChecklistYour report should briefly describe your implementation and fully answer the questions for every part of the assignment. Your description should focus on the most “interesting” aspects of your solution, i.e., any non-obvious implementation choices and parameter settings, and what you have found to be especially important for getting good performance. Feel free to include pseudocode or figures if they are needed to clarify your approach. Your report should be self-contained and it should (ideally) make it possible for us to understand your solution without having to run your source code. For full credit, in addition to the algorithm descriptions, your report should include the following. Part 1 (for everyone):
Part 2
Extra credit:
Statement of individual contribution:
|







