
- •Лабораторная работа №2 Неинформированный и информированный поиск (исследование пространства состояний).
- •Введение
- •1. Достижение фиксированной точки
- •1.1. Задание № 1: поиск в глубину (2 балла)
- •1.2. Задание № 2: поиск в ширину (2 балла)
- •1.3. Задание № 3: поиск по критерию стоимости (2 балла)
- •1.4. Задание № 4: алгоритм поиска а* (3 балла)
- •2. Проходя через все углы
- •2.1. Задание № 5: постановка задачи (2 балла)
- •2.2. Задание № 6: проходя через все углы – а* и эвристика (3 балла)
- •3. Поедая все гранулы
- •3.1. Задание № 7: поедая все гранулы – а* и эвристика (4 балла)
- •3.2. Задание № 8: субоптимальный поиск (2 балла)
- •4. Мини конкурс (до 2 дополнительных баллов)
- •5. Глоссарий
- •6. Требования к отчету
Лабораторная работа №2 Неинформированный и информированный поиск (исследование пространства состояний).
Цель работы: изучение базовых алгоритмов неинформированного и информированного поиска, а также получение навыков решения задач посредством поиска в пространстве состояний.
Данная лабораторная работа основана на «The Pac-Man projects» – это курс лабораторных работ, разработанный в университете Беркли для дисциплины «Введение в искусственный интеллект», CS 188. В нем применяется набор методов искусственного интеллекта для игры в Pac-Man. Однако данный проект не нацелен на разработку видео игр. Он призван научить базовым концепциям искусственного интеллекта, таким как информированный поиск и исследование пространства состояния, рассуждения в условиях неопределённости и обучение с подкреплением, которые являются основой реальных приложений в таких областях как обработка естественного языка, компьютерного зрения и робототехники.
Введение
В первой части лабораторной работы ваш Пакман должен найти путь в лабиринте с целью достижения заданной позиции и/или сбора еды. Ваша задача заключается в написании базовых алгоритмов поиска и их применения к конкретным сценариям игры.
Программный код для лабораторной работы состоит из нескольких файлов написанных на языке программирования Python. Некоторые из этих файлов вам надо будет прочесть и понять, в то время как другие вы можете спокойно проигнорировать. Вы можете скачать весь код и вспомогательные файлы в виде zip-архива.
Файлы для редактирования: |
|
search.py |
Файл, где будут располагаться алгоритмы поиска пути. |
searchAgents.py |
Файл, где будут располагаться специализированные для каждой задачи поисковые агенты1. |
Файлы, на которые вы возможно захотите взглянуть: |
|
pacman.py |
Главный файл, который запускает игру Pacman. Этот файл описывает тип данных GameState (состояние игры). |
game.py |
Внутренняя логика работы мира Пакмана. Этот файл описывает несколько вспомогательных типов данных, например AgentState, Agent, Direction, и Grid. |
util.py |
Полезные структуры данных для реализации алгоритмов поиска. |
Вспомогательные файлы, на которые вы можете не обращать внимания: |
|
graphicsDisplay.py |
Графика для игры Pacman |
graphicsUtils.py |
Вспомогательные файлы для графики |
textDisplay.py |
ASCII графика для игры Pacman |
ghostAgents.py |
Управления призраками |
keyboardAgents.py |
Управление игрой с клавиатуры |
layout.py |
Код для чтения файлов разметки и запоминания содержимого |
autograder.py |
Автоматическое оценивание выполнения заданий работы |
testParser.py |
Парсер тестов и файлов решений |
testClasses.py |
Обобщенные классы тестов для автоматического оценивания |
test_cases/ |
Каталог, содержащий проверочные тесты для каждого из заданий |
searchTestClasses.py |
Классы тестов специфичных для данной лабораторной работы |
После того как вы скачаете и разархивируете архив, вы должны убедиться, что вы можете сыграть в игру Pacman. Для этого введите следующую команду:
python pacman.py
Пакман живет в мире запутанных коридоров и вкусностей. Эффективная навигация в этом мире будет первым шагом в освоении его владений.
Самый простой поисковый агент в searchAgents.py называется GoWestAgent, он всегда идет на Запад. Этот агент может иногда выиграть:
python pacman.py --layout testMaze --pacman GoWestAgent
Однако у него будут серьёзные проблемы, если при решении задачи потребуется поворот:
python pacman.py --layout tinyMaze --pacman GoWestAgent
Если Пакман застревает, вы можете выйти из программы, нажав клавиши Ctrl-c в терминальном окне.
Вскоре ваш агент сможет решить не только tinyMaze, но и любой лабиринт, который вы захотите.