Разработка бота, чтобы найти расположение объектов в поле - PullRequest
0 голосов
/ 15 апреля 2011

Это часть моего AI проекта. Я должен внедрить бота, который занимает квадрат, в поле квадратов LXW. Если квадрат в поле пуст, он имеет значение 0, если он занят объектом, его значение равно 1. Непрерывный набор квадратов со значением 1 называется объектом.

Я должен выяснить личность и местоположение всех объектов в поле

У меня есть следующая информация:

sense (): эта функция возвращает статус занятости моих соседних 8 квадратов
двигаться (х): позволяет мне перейти на соседний квадрат в направлении х
getId (x): дает мне идентификатор объекта в направлении x по отношению к мне, и, если объекта нет, возвращает -1

Однако всякий раз, когда я вызываю функцию sense или getID, объект может перемещаться в другую позицию с небольшой вероятностью

Я думал об использовании BFS для обхода сетки. Или было бы лучше вести список уже пройденных позиций и перемещаться случайным образом? Какие методы искусственного интеллекта я мог бы использовать для решения этой проблемы? Как насчет некоторых методов планирования?

1 Ответ

1 голос
/ 15 апреля 2011

Мне нравится описание проблемы!Детерминированные подходы, вероятно, не сработают, так как в этом есть некоторая случайность.Также вам, возможно, придется пересмотреть некоторые места, так как новые пути могут открываться из-за движения объекта.

Поэтому усиление случайного движения является хорошим началом.Например, вы можете назначить временные метки для каждой посещенной ячейки и повысить вероятность посещения не посещенных / старых ячеек.Это похоже на феромоны в Ant Colony Optimization http://en.wikipedia.org/wiki/Ant_colony_optimization только с одним муравьем.

Другим подходом может быть выбор случайных клеток-мишеней (далеко) и попытка попасть туда.Вы, вероятно, встретите объекты по пути.Используйте наивный поиск путей вокруг этих объектов, и если это не сработает, просто выберите другую цель.

Обновление :

Абстрактный, но мощный способ создания несколько умного ИИсначала подумать о жестких фактах / свойствах / аннотациях, которые вы можете назначить своей модели (например, посещенные места, временные метки, априорные знания и т. д.)Затем создайте набор простых действий, которые AI может использовать.Возможно, вы захотите создать более сложные действия поверх них.

Впоследствии все сводится к тому, что контролируемые ИИ агенты выбирают соответствующее действие, учитывая текущие факты недетерминированным образом.То есть: присвойте баллы этим возможным действиям и сделайте выбор колеса рулетки http://en.wikipedia.org/wiki/Fitness_proportionate_selection или что-то подобное, чтобы определить следующее действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...