Стратегии для игр с неполной информацией

существуют ли общие стратегии для игр с неполной информацией, особенно таких трюковых игр, как Bridge и Doppelkopf?

меня интересуют способы реализации стратегии AI для таких игр.

щедрость за ответ с лучшим описанием конкретной стратегии.

5 ответов


Я хотел бы внести свой вклад с некоторой конкретной информацией для карточной игры Doppelkopf, которую автор попросил образцово. В 2012 году a Магистерская диссертация по Sievers было написано, где он принял UCT алгоритм для игры Doppelkopf.

UCT обычно предполагает идеальную информационную игру, таким образом сначала он решает проблему "назначения карты", которая заключается в угадывании назначения карты для каждого игрока на основе некоторых уже известных карты.

после решения этого он попробовал два способа выполнить алгоритм с его решением проблемы назначения карты:

1) угадайте назначение карты для каждого дерева UCT и посмотрите на среднее значение нескольких деревьев. Он называет эту стратегию ансамблем UCT.

2) Возьмите одно дерево uct и угадайте для каждого развертывания новое назначение. На этапе выбора UCT вы просто игнорируете всех непоследовательных детей. Он называет эту стратегию Единой.

мой чувство заключается в том, что 2) делает более сильный ИИ, но он казался слабее, на что он указал более четко в документе конференции С 2015 года.

Вдохновленный успехом AlphaGo, я начал проект с другом для его бакалаврской диссертации, и он сделал политика нейронной сети использование LSTM на основе символов для руководства процессом выбора алгоритма UCT. Его бакалаврская диссертация охватывает только некоторые результаты тестов для ансамбля-UCT, но я уже тестировал его для одного игрока UCT тоже, и это делает гораздо более сильный AI. Я думаю, это потому, что один игрок UCT выигрывает намного больше от сокращения пространства поиска более эффективно.

таким образом, этот ответ более или менее такой же, как @charley, но немного более конкретный.


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


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

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

вопрос: Что самое главное?

  1. перетяжка емкостью
  2. бензина
  3. цена
  4. Я не знаю

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

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

тогда, основываясь на динамике игры, ваша задача только:

  1. на основе правил / контекста / пользовательского ввода удалите нежизнеспособные параметры.
  2. на основе правил / контекста / пользовательского ввода, сортировка / ранжирование наиболее предпочтительных параметров.
  3. элемент в "верхней части списка" выбран / используется прямо сейчас в игре.

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

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

и, что" dyanmic "и" бесконечно работает " игра до вы добавляете стохастический компонент, который есть в некоторых играх. Такие игры, как Minefield и Battleship и Stratego, в основном не меняются во время игры, поэтому ваши "локализованные и временные ответы" могут быть достаточно для (очень) длительной игры. Однако, если вы случайно генерируете новых врагов или ваши враги перемещаются, или есть какой-то другой случайный компонент в "настройке платы" (например, океанские приливы, где некоторые пути доступны только иногда), это добавляет совершенно новый уровень сложности.

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


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

Edit:здесь ссылка для большого ресурса на RL.

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

Edit2: в двух словах, RL позволяет агент, чтобы учиться на своем опыте, так же, как мы, люди, учимся. Мы сгораем один раз - избегаем соприкосновения с огнем. Мы получаем награду после того, как что - то делаем-мы продолжаем делать это для большего вознаграждения. То же самое для агентов, использующих RL.


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

хотя иногда его можно было обмануть, атакуя сразу две цели, это обычно означало слабость атаки, и это не сработало очень хорошо, если вы уже не выигрывали.

Это было достаточно сложно, большинство людей, которым я дал копии, не могли победить его на паритете.