1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/daochenzha-rlcard

Клонировать/Скачать
README.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 18:31 21f438a

В запросе используется язык Markdown.

  • Доступен человеческий интерфейс NoLimit Holdem. Абстрагировано пространство действий NoLimit Holdem. Спасибо за вклад @AdrianP-!

  • Доступна новая игра Gin Rummy и человеческий графический интерфейс. Спасибо за вклад @billh0420!

  • Доступно PyTorch-внедрение. Спасибо за вклад @mjudell!

Вкладчики

Следующие игры в основном разработаны и поддерживаются участниками сообщества. Спасибо!

Игра Разработчик
Gin Rummy @billh0420
Bridge @billh0420

Спасибо всем участникам!

daochenzha   hsywhu   CaoYuanpu   billh0420   ruzhwei   adrianpgob   Zhigal   aypee19   Clarit7   lhenry15   ismael-elatifi   mjudell   jkterry1   kaanozdogru   junyuGuo  

...


Xixo99   rodrigodelazcano   Michael1015198808   mia1996   kaiks   claude9493   SonSang   rishabhvarshney14   aetheryang   rxng8   Если вы считаете этот репозиторий полезным, вы можете сослаться на него:

Zha, Daochen и др. «RLCard: A Platform for Reinforcement Learning in Card Games». IJCAI. 2020.

@inproceedings{zha2020rlcard,
  title={RLCard: A Platform for Reinforcement Learning in Card Games},
  author={Zha, Daochen and Lai, Kwei-Herng and Huang, Songyi and Cao, Yuanpu and Reddy, Keerthana and Vargas, Juan and Nguyen, Alex and Wei, Ruzhe and Guo, Junyu and Hu, Xia},
  booktitle={IJCAI},
  year={2020}
}

Установка

Убедитесь, что у вас установлены Python 3.6+ и pip. Мы рекомендуем установить стабильную версию rlcard с помощью pip:

pip3 install rlcard

По умолчанию установка будет включать только карточные среды. Чтобы использовать реализацию обучения алгоритмов PyTorch, выполните команду:

pip3 install rlcard[torch]

Если вы находитесь в Китае и предыдущая команда выполняется слишком медленно, вы можете использовать зеркало, предоставленное Университетом Цинхуа:

pip3 install rlcard -i https://pypi.tuna.tsinghua.edu.cn/simple

В качестве альтернативы вы можете клонировать последнюю версию (если вы находитесь в Китае, а Github работает медленно, вы также можете использовать зеркало в Gitee):

git clone https://github.com/datamllab/rlcard.git

или клонировать только одну ветку, чтобы ускорить процесс:

git clone -b master --single-branch --depth=1 https://github.com/datamllab/rlcard.git

Затем установите с помощью команды:

cd rlcard
pip3 install -e .
pip3 install -e .[torch]

Мы также предоставляем метод установки с использованием conda (https://anaconda.org/toubun/rlcard):

conda install -c toubun rlcard

Метод установки с помощью conda предоставляет только карточные окружения, вам необходимо вручную установить Pytorch по своему усмотрению.

Примеры

Вот краткий пример.

import rlcard
from rlcard.agents import RandomAgent

env = rlcard.make('blackjack')
env.set_agents([RandomAgent(num_actions=env.num_actions)])

print(env.num_actions) # 2
print(env.num_players) # 1
print(env.state_shape) # [[2]]
print(env.action_shape) # [None]

trajectories, payoffs = env.run()

RLCard можно гибко подключать к различным алгоритмам. См. следующие примеры:

  • Игра с агентами-рандомами (docs/toy-examples.md#playing-with-random-agents);
  • Глубокое Q-обучение в блэкджеке (docs/toy-examples.md#deep-q-learning-on-blackjack);
  • Обучение CFR (выбор шанса) в Leduc Hold'em (docs/toy-examples.md#training-cfr-on-leduc-holdem);
  • Веселье с предварительно обученной моделью Leduc (docs/toy-examples.md#having-fun-with-pretrained-leduc-model);
  • Обучение DMC в Dou Dizhu (docs/toy-examples.md#training-dmc-on-dou-dizhu);
  • Оценка агентов (docs/toy-examples.md#evaluating-agents);
  • Обучение агентов на PettingZoo (examples/pettingzoo).

Демоверсия

Запустите examples/human/leduc_holdem_human.py, чтобы поиграть с предварительно обученной моделью Leduc Hold'em. Leduc Hold'em — это упрощённая версия Texas Hold'em. Правила можно найти здесь (docs/games.md#leduc-holdem). ## Поддерживаемые алгоритмы

Алгоритм Пример Ссылка
Deep Monte-Carlo (DMC) examples/run_dmc.py [paper]
Deep Q-Learning (DQN) examples/run_rl.py [paper]
Neural Fictitious Self-Play (NFSP) examples/run_rl.py [paper]
Counterfactual Regret Minimization (CFR) examples/run_cfr.py [paper]

Предобученные и основанные на правилах модели

Мы предоставляем модельный зоопарк, который можно использовать в качестве базовых моделей.

Модель Объяснение
leduc-holdem-cfr Предобученная модель CFR (вероятностный отбор проб) на Leduc Hold'em
leduc-holdem-rule-v1 Основанная на правилах модель для Leduc Hold'em, v1
leduc-holdem-rule-v2 Основанная на правилах модель для Leduс Hold'em, v2
uno-rule-v1 Основанная на правилах модель для UNO, v1
limit-holdem-rule-v1 Основанная на правилах модель для Limit Texas Hold'em, v1
doudizhu-rule-v1 Основанная на правилах модель для Dou Dizhu, v1
gin-rummy-novice-rule Модель Gin Rummy для новичков

Шпаргалка по API

Как создать окружение

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

  • env = rlcard.make(env_id, config={}): Создать окружение. env_id — это строка окружения; config — словарь, который определяет некоторые конфигурации окружения, а именно:
    • seed: По умолчанию None. Устанавливает локальное случайное начальное число среды для воспроизведения результатов.
    • allow_step_back: По умолчанию False. True, если разрешить функции step_back перемещаться назад по дереву.
    • Конфигурации, специфичные для игры: Эти поля начинаются с game_. В настоящее время мы поддерживаем только game_num_players в блэкджеке.

После создания окружения мы можем получить доступ к некоторой информации об игре.

  • env.num_actions: Количество действий.
  • env.num_players: Количество игроков.
  • env.state_shape: Форма пространства состояний наблюдений.
  • env.action_shape: Форма функций действия (действие Dou Dizhu может быть закодировано как функция).

Что такое состояние в RLCard

Состояние — это словарь Python. Он состоит из наблюдения state['obs'], допустимых действий state['legal_actions'], необработанного наблюдения state['raw_obs'] и необработанных допустимых действий state['raw_legal_actions'].

Основные интерфейсы

Следующие интерфейсы обеспечивают базовое использование. Это легко использовать, но у агента есть предположения. Агент должен следовать [агенту]. env.set_agents(agents): agents — это список объектов Agent. Длина списка должна быть равна количеству игроков в игре.

env.run(is_training=False): запустить полную игру и вернуть траектории и выплаты. Функцию можно использовать после вызова set_agents. Если is_training равно True, то для игры будет использоваться функция step в агенте. Если is_training равно False, вместо неё будет вызываться eval_step.

Расширенные интерфейсы

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

  • env.reset(): инициализировать игру. Вернуть состояние и идентификатор первого игрока.
  • env.step(action, raw_action=False): сделать один шаг в среде. action может быть необработанным действием или целым числом; raw_action должно быть True, если действие является необработанным (строка).
  • env.step_back(): доступно только тогда, когда allow_step_back равно True. Сделать один шаг назад. Это можно использовать для алгоритмов, которые работают с деревом игр, таких как CFR (случайная выборка).
  • env.is_over(): вернуть True, если текущая игра окончена. В противном случае вернуть False.
  • env.get_player_id(): вернуть идентификатор игрока текущего игрока.
  • env.get_state(player_id): вернуть состояние, соответствующее player_id.
  • env.get_payoffs(): в конце игры вернуть список выплат для всех игроков.
  • env.get_perfect_information(): (в настоящее время поддерживается только для некоторых игр) получить идеальную информацию о текущем состоянии.

Структура библиотеки

Цели основных модулей перечислены ниже:

  • /examples: примеры использования RLCard.
  • /docs: документация RLCard.
  • /tests: сценарии тестирования для RLCard.
  • /rlcard/agents: алгоритмы обучения с подкреплением и агенты-люди.
  • /rlcard/envs: оболочки среды (представление состояния, кодирование действий и т. д.).
  • /rlcard/games: различные игровые движки.
  • /rlcard/models: зоопарк моделей, включая предварительно обученные модели и модели правил.

Дополнительные документы

Дополнительную документацию см. в документах для общего ознакомления. Документы API доступны на нашем веб-сайте.

Участие

Мы будем очень признательны за ваш вклад в этот проект! Пожалуйста, создайте проблему для обратной связи/ошибок. Если вы хотите внести свой вклад в код, пожалуйста, обратитесь к Руководству по внесению вклада. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с Даочен Чжа по адресу daochen.zha@rice.edu.

Благодарности

Мы хотели бы поблагодарить JJ World Network Technology Co., LTD за щедрую поддержку и все вклады от участников сообщества.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/daochenzha-rlcard.git
git@api.gitlife.ru:oschina-mirror/daochenzha-rlcard.git
oschina-mirror
daochenzha-rlcard
daochenzha-rlcard
master