Внедрение ИИ Wumpus: пропозиционная логика не распознает Ямы и Wumpus?

Вопрос или проблема

Внедрение ИИ 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 для более глубокого понимания логических принципов, используемых в этом проекте. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...