中文文档
RLCARD เป็นชุดเครื่องมือสำหรับการเรียนรู้การเสริมแรง (RL) ในเกมไพ่ รองรับสภาพแวดล้อมการ์ดหลายเครื่องด้วยอินเทอร์เฟซที่ใช้งานง่ายสำหรับการใช้อัลกอริทึมการเสริมแรงและการค้นหาที่หลากหลาย เป้าหมายของ RLCARD คือการเชื่อมโยงการเรียนรู้การเสริมแรงและเกมข้อมูลที่ไม่สมบูรณ์ RLCARD ได้รับการพัฒนาโดย Data Lab ที่ Rice และ Texas A&M University และผู้สนับสนุนชุมชน
ชุมชน:
ข่าว:
เกมต่อไปนี้ส่วนใหญ่ได้รับการพัฒนาและดูแลโดยผู้สนับสนุนชุมชน ขอบคุณ!
ขอบคุณผู้มีส่วนร่วมทุกคน!
หากคุณพบว่า repo นี้มีประโยชน์คุณอาจอ้างถึง:
Zha, Daochen, et al. "RLCARD: แพลตฟอร์มสำหรับการเรียนรู้การเสริมแรงในเกมไพ่" 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]
หากคุณอยู่ในประเทศจีนและคำสั่งข้างต้นช้าเกินไปคุณสามารถใช้กระจกที่ได้รับจากมหาวิทยาลัย Tsinghua:
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 :
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 สามารถเชื่อมต่อได้อย่างยืดหยุ่นกับอัลกอริทึมต่างๆ ดูตัวอย่างต่อไปนี้:
รัน examples/human/leduc_holdem_human.py
เพื่อเล่นกับโมเดล LEDUCED ที่ผ่านการฝึกอบรมมาก่อน Leduc Hold'em เป็นรุ่นที่ง่ายของ Texas Hold'em สามารถพบกฎได้ที่นี่
>> Leduc Hold'em pre-trained model
>> Start a new game!
>> Agent 1 chooses raise
=============== Community Card ===============
┌─────────┐
│░░░░░░░░░│
│░░░░░░░░░│
│░░░░░░░░░│
│░░░░░░░░░│
│░░░░░░░░░│
│░░░░░░░░░│
│░░░░░░░░░│
└─────────┘
=============== Your Hand ===============
┌─────────┐
│J │
│ │
│ │
│ ♥ │
│ │
│ │
│ J│
└─────────┘
=============== Chips ===============
Yours: +
Agent 1: +++
=========== Actions You Can Choose ===========
0: call, 1: raise, 2: fold
>> You choose action (integer):
นอกจากนี้เรายังมี GUI สำหรับการดีบักง่ายๆ โปรดตรวจสอบที่นี่ การสาธิตบางอย่าง:
เราให้การประเมินความซับซ้อนสำหรับเกมในหลาย ๆ ด้าน หมายเลข Infoset: จำนวนชุดข้อมูล; ขนาดอินโฟส: จำนวนรัฐเฉลี่ยในชุดข้อมูลเดียว; ขนาดการกระทำ: ขนาดของพื้นที่การกระทำ ชื่อ: ชื่อที่ควรส่งผ่านไปยัง rlcard.make
เพื่อสร้างสภาพแวดล้อมของเกม นอกจากนี้เรายังให้ลิงก์ไปยังเอกสารและตัวอย่างแบบสุ่ม
เกม | หมายเลข Infoset | ขนาดอินฟอส | ขนาดการกระทำ | ชื่อ | การใช้งาน |
---|---|---|---|---|---|
แบล็คแจ็ค (วิกิ, baike) | 10^3 | 10^1 | 10^0 | กระบอง | เอกสารตัวอย่าง |
leduc hold'em (กระดาษ) | 10^2 | 10^2 | 10^0 | Leduc-holdem | เอกสารตัวอย่าง |
จำกัด Texas Hold'em (Wiki, Baike) | 10^14 | 10^3 | 10^0 | ขีด จำกัด | เอกสารตัวอย่าง |
Dou Dizhu (Wiki, Baike) | 10^53 ~ 10^83 | 10^23 | 10^4 | Doudizhu | เอกสารตัวอย่าง |
Mahjong (Wiki, Baike) | 10^121 | 10^48 | 10^2 | มงกุฎ | เอกสารตัวอย่าง |
No-Limit Texas Hold'em (Wiki, Baike) | 10^162 | 10^3 | 10^4 | ไม่มีข้อ จำกัด | เอกสารตัวอย่าง |
UNO (Wiki, Baike) | 10^163 | 10^10 | 10^1 | uno | เอกสารตัวอย่าง |
Gin Rummy (Wiki, Baike) | 10^52 | - | - | จินรัมมี่ | เอกสารตัวอย่าง |
Bridge (Wiki, Baike) | - | - | สะพาน | เอกสารตัวอย่าง |
อัลกอริทึม | ตัวอย่าง | อ้างอิง |
---|---|---|
Deep Monte-Carlo (DMC) | ตัวอย่าง/run_dmc.py | [กระดาษ] |
Q-Learning ลึก (DQN) | ตัวอย่าง/run_rl.py | [กระดาษ] |
การเล่นด้วยตนเองของระบบประสาท (NFSP) | ตัวอย่าง/run_rl.py | [กระดาษ] |
การลดความเสียใจในการต่อต้าน (CFR) | ตัวอย่าง/run_cfr.py | [กระดาษ] |
เราให้บริการสวนสัตว์แบบจำลองเพื่อใช้เป็นเส้นเขตแดน
แบบอย่าง | คำอธิบาย |
---|---|
LEDUC-HOLDEM-CFR | รุ่น CFR ที่ผ่านการฝึกอบรมมาก่อน (การสุ่มตัวอย่างโอกาส) บน leduc hold'em |
LEDUC-HOLDEM-RULE-V1 | แบบจำลองตามกฎสำหรับ leduc hold'em, v1 |
LEDUC-HOLDEM-RULE-V2 | แบบจำลองตามกฎสำหรับ Leduc 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 |
คุณสามารถใช้อินเทอร์เฟซต่อไปนี้เพื่อสร้างสภาพแวดล้อม คุณอาจเลือกระบุการกำหนดค่าบางอย่างด้วยพจนานุกรม
env_id
เป็นสตริงของสภาพแวดล้อม config
เป็นพจนานุกรมที่ระบุการกำหนดค่าสภาพแวดล้อมบางอย่างซึ่งมีดังนี้seed
: None
เริ่มต้น ตั้งค่าเมล็ดพันธุ์แบบสุ่มในท้องถิ่นเพื่อสร้างผลลัพธ์ซ้ำallow_step_back
: ค่าเริ่ม False
True
ถ้าอนุญาตให้ฟังก์ชั่น step_back
ข้ามไปข้างหลังในต้นไม้game_
ปัจจุบันเราสนับสนุนเฉพาะ game_num_players
ในแบล็คแจ็ค,เมื่อสร้างสภาพแวดล้อมแล้วเราสามารถเข้าถึงข้อมูลบางอย่างของเกมได้
รัฐเป็นพจนานุกรม Python มันประกอบด้วย state['obs']
, การดำเนินการทางกฎหมาย state['legal_actions']
, state['raw_obs']
และการดำเนินการทางกฎหมายดิบ state['raw_legal_actions']
อินเทอร์เฟซต่อไปนี้ให้การใช้งานพื้นฐาน มันใช้งานง่าย แต่มีการสันนิษฐานในตัวแทน เอเจนต์จะต้องติดตามเทมเพลตเอเจนต์
agents
เป็นรายการของวัตถุ Agent
ความยาวของรายการควรเท่ากับจำนวนผู้เล่นในเกมset_agents
หาก is_training
เป็น True
มันจะใช้ฟังก์ชั่น step
ในเอเจนต์เพื่อเล่นเกม หาก is_training
เป็น False
eval_step
จะถูกเรียกแทนสำหรับการใช้งานขั้นสูงอินเทอร์เฟซต่อไปนี้จะช่วยให้การทำงานที่ยืดหยุ่นบนแผนผังเกม อินเทอร์เฟซเหล่านี้ไม่ได้ทำการสันนิษฐานใด ๆ ในเอเจนต์
action
อาจเป็นการกระทำที่ดิบหรือจำนวนเต็ม raw_action
ควรเป็น True
หากการกระทำคือการกระทำ RAW (สตริง)allow_step_back
เป็น True
ย้อนกลับไปหนึ่งก้าว สิ่งนี้สามารถใช้สำหรับอัลกอริทึมที่ทำงานบนต้นไม้เกมเช่น CFR (การสุ่มตัวอย่างโอกาส)True
ถ้าเกมปัจจุบันจบลง otherewise กลับมา False
player_id
วัตถุประสงค์ของโมดูลหลักมีการระบุไว้ด้านล่าง:
สำหรับเอกสารเพิ่มเติมโปรดดูเอกสารสำหรับการแนะนำทั่วไป เอกสาร API มีอยู่ที่เว็บไซต์ของเรา
การมีส่วนร่วมในโครงการนี้ได้รับการชื่นชมอย่างมาก! โปรดสร้างปัญหาสำหรับข้อเสนอแนะ/ข้อบกพร่อง หากคุณต้องการมีส่วนร่วมในรหัสโปรดดูคู่มือการสนับสนุน หากคุณมีคำถามใด ๆ โปรดติดต่อ Daochen Zha ด้วย [email protected]
เราขอขอบคุณ JJ World Network Technology Co. , Ltd สำหรับการสนับสนุนที่ใจกว้างและการมีส่วนร่วมทั้งหมดจากผู้สนับสนุนชุมชน