Вопрос или проблема
Внедрение ИИ Wumpus: пропозиционная логика не распознает Ямы и Wumpus?
На моем курсе по искусственному интеллекту мы изучаем пропозициональную логику и задачу Wumpus World.
Это моя текущая реализация: https://github.com/jdramirezl/WumpusWorldAI
Вы можете запустить проект, склонировав его и выполнив python3 src/main.py
Дело в том, что при запуске он в основном не выполняет ничего. Его выводы абсолютно неверны, и он не знает:
- Когда ячейка посещена
- Безопасна ли ячейка
- Если ячейка не безопасна
Так что да, всё… и я даже не знаю, с чего начать искать ошибки :/
Я знаю, что это не связано с проблемой кодирования (по крайней мере, я в этом довольно уверен), мне больше кажется, что это ошибка инициализации аксиом.
Любая помощь приветствуется!
Я пытался читать логи истинных таблиц, но в какой-то момент они становятся такими большими, что я не могу понять, где может быть неверное истинное значение. Я склоняюсь к тому, что это ошибка инициализации. Возможно, я пропустил некоторые необходимые аксиомы, и поэтому он выдает правильное истинное значение в соответствии с его контекстом, но не корректное для целей проекта.
Ответ или решение
Ваша проблема с реализацией Wumpus AI, судя по описанию, связана с неправильным применением логики высказываний и инициализацией аксиом, что может затруднять правильную интерпретацию состояния клеток. Давайте разберем несколько ключевых аспектов, которые могут помочь вам устранить проблемы и улучшить ваш проект.
1. Проверка инициализации аксиом
Убедитесь, что все аксиомы, необходимые для решения задачи Wumpus World, правильно инициализированы. Основные аксиомы включают следующие утверждения:
- Если в клетке (x,y) находится яма, то в соседних клетках (x-1,y), (x+1,y), (x,y-1), (x,y+1) будут запахи (Breeze).
- Если в клетке (x,y) находится Wumpus, то в соседних клетках также будет слышен звук (Stench).
-
Если клетка посещена, то она не может содержать ни яму, ни Wumpus.
Убедитесь, что вы правильно интерпретируете результаты восприятия (например, запахи и ветер) и обновляете знание о мире, основываясь на этих восприятиях.
2. Отслеживание состояния клеток
В вашем коде должна быть логика, которая отслеживает, какие клетки были посещены, безопасны или небезопасны. Для этого используйте три списка (или множества):
- Посещенные клетки
- Клетки с предполагаемыми ямами
-
Клетки с предполагаемыми Wumpus
Обновляйте эти списки в зависимости от выполненных действий и полученных данных от датчиков.
3. Логическая структура программы
Ваша программа должна корректно обрабатывать ввод и обновлять состояние на основе логики. Убедитесь, что вы:
- Правильно собираете данные о соседних клетках и обновляете соответствующие аксиомы.
- Используете логические выводы из знаний для оценки безопасности клетки. Например, если в одной клетке сидит Wumpus, соседи не могут быть безопасны.
- Логично обрабатываете правила, когда посещаете новые клетки.
4. Дебаггинг и тестирование
Для упрощения процесса отладки, распечатайте состояние важнейших переменных (например, текущие аксиомы, посещенные клетки, выводы о безопасности) после каждого шага. Это поможет вам понять, где ошибка происходит.
5. Примеры тестирования
Создайте минимальные тестовые сценарии, чтобы проверить ваши аксиомы. Например, создайте простую карту с известным расположением Wumpus и ям и убедитесь, что ваш AI может правильно интерпретировать их и принимать решения.
Заключение
Проблемы с логикой инициализации аксиом могут быть сложными, но с систематическим подходом к проверке и отладке вы сможете их решить. Убедитесь, что ваша программа правильно обновляет состояние после каждого действия и корректно интерпретирует восприятия. Используйте логи для отслеживания состояния переменных. Если дальнейшие проблемы будут возникать, возможно, стоит обратиться к учебным материалам по Wumpus World для более глубокого понимания логических принципов, используемых в этом проекте. Удачи!