Скоринговый подход к компьютерным противникам, который нуждается в балансировке


16

Этот вопрос касается подхода к компьютерным оппонентам, который я создал и который в настоящее время используется или планируется использовать в нескольких компьютерных играх.

Фон

В прошлом году, когда я пытался улучшить компьютерного противника для игры под названием «Флаги Сапер» (краткое описание: пошаговая многопользовательская версия Сапер, где вам нужно брать больше мин, чем противнику) , я сильно изменил способ работы моих алгоритмов. , Вместо того чтобы использовать такой подход, как if-else-if-else, я использую набор «счетчиков» с указанными весами, чтобы определить, какой ход лучше.

Вы можете подумать, что для такой игры, как Minesweeper Flags, дело только в том, чтобы делать ходы, которые дают вам наибольшую вероятность взятия мин, но это не так просто. Какой ход компьютер сделает, обычно зависит от нескольких особенностей этого конкретного хода в текущем игровом состоянии. Примеры функций:

  • Какова вероятность этого хода, забив мин?
  • Какова вероятность раскрытия чего-либо моему оппоненту здесь?

Описание системы

Система в основном работает так:

  1. «Предварительные счетчики»: некоторый предварительный анализ проводится для текущего состояния игры (с точки зрения флагов минного тральщика это обычно: вычисление всех вероятностей)
  2. «Оценщики»: ряд обычных оценщиков просят определить оценку для каждого возможного хода, каждый оценщик применяет оценки в соответствии со своими собственными критериями. Оценщики могут проверить результаты проведенного предварительного анализа.
  3. Баллы, рассчитанные на предыдущем этапе, суммируются вместе и устанавливаются как баллы за ход.
  4. Ходы сортируются в соответствии с их счетом и ранжируются таким образом, чтобы все движения с одинаковым счетом получали одинаковый ранг.
  5. «Оценщики»: результаты вышеупомянутого могут быть отправлены «Оценщикам», у которых есть возможность изменять оценки любых полей любым способом, который они хотят, согласно собственным правилам оценщика.

При объединении группы предварительных оценщиков, оценщиков (с их весами) и последующих оценщиков, это становится тем, что я называю конфигурацией счета .

Пример результата

Это пример оценки, примененной к Флаги Сапер. Это карта, которая была забита:

Карта флагов минного тральщика

И это вывод фактической конфигурации счета. Он показывает ранг возможных ходов, где 1 - лучший ранг и выделен белым цветом:

Пример вывода метода оценки

Благодаря написанию очень гибкого кода этот подход к ИИ может быть вставлен и в другие игры.

Преимущества и недостатки

Ниже приведены некоторые преимущества и недостатки этой системы, которые я могу себе представить.

преимущества

  • Очень легко создать множество различных конфигураций для ИИ.
  • Можно использовать с генетическими алгоритмами: каждый бомбардир имеет связанный вес, вес может стать геном.
  • Используя некоторые инструменты, можно проверить, почему был сделан конкретный ход и какие бомбардиры были в основном ответственны за этот ход.
  • Используя инструменты, можно создать карту общего балла / ранга возможных ходов (как на скриншоте выше)
  • Применяя баллы к тому, как играет человек, можно создать «#AI_Mirror», который пытается делать ходы, которые, по его мнению, будет делать человек.

Недостатки

  • Может быть чрезвычайно трудно правильно настроить конфигурацию партитуры, чтобы ИИ играл как можно лучше.

Вопросов

  • Широко ли известна система, которую я построил здесь, в мире ИИ? Как бы это называлось в терминах реального ИИ?

  • Имеет ли этот подход смысл или есть другой подход, который вы бы порекомендовали?

  • Какие есть способы, которые могли бы упростить процесс настройки партитуры?

Что касается последнего вопроса, я знаю о возможности использования генетических алгоритмов, я также немного осведомлен о SARSA (и я думаю, что мои оценщики напоминают описание функций этого сайта с весами, но из моего понимания, что это не совсем то, что я создал Вот). Я думаю, что проблема с SARSA заключается в том, что вы не знаете награду до тех пор, пока игра не закончится, лучшим ходом часто является ход, который вообще не дает награду (мину). Ваши текущие шансы на выигрыш зависят как от текущего счета (сколько мин вы и ваш противник взяли), так и от того, как выглядит текущая карта.


Этот вопрос был первоначально размещен на ныне не существующем сайте Искусственного интеллекта .
Код (Java), используемый для этого подхода, теперь опубликован в Code Review .

Ответы:


7

На протяжение это - экспертная система (такая как нечеткая логика). Поскольку вы не запускаете алгоритм для обратной связи с параметрами решения на основе выходных данных, он на самом деле не обучается. Однако выполнение обратной связи - не единственный показатель того, является ли алогиртом искусственный интеллект. Можно утверждать, что, если он действует разумно, это все, что имеет значение, особенно когда в игру играет оппонент.

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

Использование генетических алгоритмов

Есть два четких варианта генетических алгоритмов:

  • Используйте параметры для генома (как вы предложили). Вы оптимизируете правила, которые у вас есть, но у вас все еще остается экспертная система.
  • Используйте Learning Classifier System (LCS), чтобы выбрать правила для вас. LCS - это тип генетического алгоритма, в котором вы кодируете правила и параметры. Они сходятся дольше и чувствительны к фитнес-функции. Я думаю, что получающаяся манера игры могла бы быть более интересной для этого.

Имитация отжига

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

Делая это слишком хорошо

Я знаю, вы хотите, чтобы алгоритм был наилучшим, но не забывайте, что против него играет человек. Существует тактически совершенный способ играть в такие детерминированные игры, и если AI-игрок возьмет его, это будет просто удача, которая означает, что игрок выигрывает.


Ваш ответ дал мне много для изучения, большое спасибо! Хотя я не уверен, что согласен с классификацией этой конкретной игры как «детерминированной» ..
Саймон Форсберг

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

Ну, Сапер является стохастической , я бы сказал, что вы не знаете , содержание поля , пока вы не сделали шаг , чтобы раскрыть его.
Саймон Форсберг,

1
ИМХО, это не делает его стохастическим. Это будет стохастик, если: при одинаковых начальных условиях (скрытая доска) результат может отличаться при каждом щелчке по квадрату.
Доктор Роб Ланг

2
Стохастические / детерминированные и полностью наблюдаемые / частично наблюдаемые - строго разные, ортогональные свойства. По определению (скажем, Рассел / Норвиг "Если следующее состояние среды полностью определяется текущим состоянием и действием, выполняемым агентом ..."), тральщик является детерминистическим, хотя и не полностью наблюдаемым.
Петерис

0

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

Поиск состязаний может быть затруднен из-за большого фактора ветвления - в любой позиции, законные шаги должны отметить или показать любой неизвестный квадрат. С другой стороны, возможно, что вы можете значительно сократить коэффициент ветвления с помощью эвристики. Например, пометка или раскрытие квадрата, о котором вы вообще ничего не знаете, очень редко будет лучшим ходом. И наоборот, если вы знаете местонахождение некоторых немаркированных мин, пометка одного из них, вероятно, будет лучшим ходом в большинстве случаев. Поддержание таблицы транспонирования также, вероятно, поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.