Алгоритм случайного решения - PullRequest
2 голосов
/ 01 декабря 2009

Я делаю простой ИИ, и я действительно новичок в этой области. Что мне нужно, так это алгоритм для принятия неких решений на основе некоторых параметров; но с небольшим количеством случайности. То, что я делал до сих пор - это генерирование случайного числа на основе различных значений, которые я получаю; выбрать разные пути выполнения. Я почему-то думаю, что есть намного лучший способ сделать такие вещи. Можете ли вы дать мне несколько советов?

Ответы [ 3 ]

4 голосов
/ 02 декабря 2009

Я не думаю, что есть "лучший" способ, чем то, что вы делаете, потому что описание проблемы довольно расплывчато, и неясно, действительно ли это проблема искусственного интеллекта или симуляции.

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

Для части моделирования вы обычно хотите смоделировать процесс, а затем ввести случайность для моделирования более тонких частей процесса. Это означает четкое определение ваших входных данных (сила удара сзади, направление шара, ...) и ваших выходных данных (вектор перемещения шара?), А также рассмотрение того, как они связаны друг с другом. Это означает, что вы получаете некоторые выходные данные известных значений, а затем вы можете изменить их с помощью генератора случайных чисел. Ситуация усложняется, если вы пытаетесь смоделировать выбор человека, а не просто физическое моделирование, поскольку это часто имеет приоритет над всеми другими входными данными.

Упрощенный пример, с которого я мог бы начать, - то, что ИИ игрока выбирает, куда он хочет ударить по мячу. Я рассчитываю предполагаемое направление мяча как вектор, который послал бы шар именно там, где и планировался. Затем система вычисляет показатель сложности от 0% до 100% на основе направления мяча, скорости, способностей игрока и т. Д. Я генерирую модификатор «неточность», который представляет собой случайное число от 0% до уровня сложности%, что означает очень простой Выстрел будет полностью точным, в то время как у полусложного выстрела будет точность от 0% до 50%. Затем я вычисляю случайный нормализованный трехмерный вектор единичной длины, масштабирую его по значению неточности и добавляю его в заданное направление. Это означает, что более сложные выстрелы будут иметь тенденцию лететь дальше от цели.

0 голосов
/ 01 декабря 2009

Дайте оценки каждому из путей выполнения в зависимости от того, насколько близок результат к оптимальному, «желаемому» состоянию или результату. Сделайте так, чтобы ваш алгоритм выбирал его будущие пути выполнения в зависимости от средней оценки предыдущих решений, давая большую вероятность результата для решения с наивысшей оценкой. Таким образом, будет казаться, что ваш алгоритм не только изучает, но и случайным образом исследует другие возможности, но с меньшей вероятностью, чем выполнение того, что кажется лучшим. Конечно, вы могли бы сделать это адаптивным, принимая во внимание не только оценку каждого пути решения, но также его скорость роста или сокращения. Если решение начинает быть хорошим, но после ряда итераций оно становится все ниже и ниже, его следует избегать чаще в пользу другого решения, у которого оценка имеет тенденцию к росту.

0 голосов
/ 01 декабря 2009

Как и в большинстве вопросов о случайности, стоит спросить, является ли то, что вы ищете, истинной случайностью, то есть белым шумом или турбулентностью (иначе говоря, шум Перлина ). Как правило, в большинстве областей вы получаете нечто более похожее на «естественное» поведение от турбулентности, чем от белого шума.

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