无限制德州扑克¶

这个环境属于经典环境。请先阅读该页面以获取一般信息。
导入 |
|
---|---|
动作 |
离散 |
Parallel API |
是 |
手动控制 |
否 |
智能体 |
|
智能体 |
2 |
动作形状 |
Discrete(5) |
动作值 |
Discrete(5) |
观察形状 |
(54,) |
观察值 |
[0, 100] |
无限制德州扑克是德州扑克的一种变体,其中每次加注的金额或加注次数没有限制。
我们的实现封装了 RLCard,您可以参考其文档获取更多详细信息。如果您在研究中使用此游戏,请引用他们的工作。
参数¶
texas_holdem_no_limit_v6.env(num_players=2)
num_players
:设置游戏中的玩家数量。最小值为 2。
德州扑克是一种涉及 2 名玩家和一副标准的 52 张牌的扑克游戏。游戏开始时,两名玩家各获得两张牌。下注后,会亮出三张公共牌,随后进行下一轮。在任何时候,玩家都可以弃牌,游戏将结束。获胜者将获得 +1 的奖励,输家将获得 -1 的奖励。这是标准限制版德州扑克的实现,有时被称为“限制德州扑克”。
我们的实现封装了 RLCard,您可以参考其文档获取更多详细信息。如果您在研究中使用此游戏,请引用他们的工作。
观察空间¶
观察是一个字典,包含一个 'observation'
元素,它是下面描述的通常的强化学习观察,以及一个 'action_mask'
,其中包含合法动作,在合法动作掩码部分进行了描述。
主要的观察空间与德州扑克类似。前 52 个条目表示当前玩家手牌和公共牌的并集。
索引 |
描述 |
值 |
---|---|---|
0 - 12 |
黑桃 |
[0, 1] |
13 - 25 |
红桃 |
[0, 1] |
26 - 38 |
方块 |
[0, 1] |
39 - 51 |
梅花 |
[0, 1] |
52 |
player_0 的筹码数量 |
[0, 100] |
53 |
player_1 的筹码数量 |
[0, 100] |
合法动作掩码¶
当前智能体的合法动作可在字典观察的 action_mask
元素中找到。action_mask
是一个二进制向量,向量的每个索引表示该动作是否合法。action_mask
对于除了轮到行动的智能体之外的任何智能体都将是全零。执行非法动作将结束游戏,非法行动的智能体获得 -1 的奖励,所有其他智能体获得 0 的奖励。
动作空间¶
动作 ID |
动作 |
---|---|
0 |
弃牌 |
1 |
过牌 & 跟注 |
2 |
加注半池 |
3 |
加注全池 |
4 |
全押 |
奖励¶
赢家 |
输家 |
---|---|
+加注筹码/2 |
-加注筹码/2 |
版本历史¶
v6:升级到 RLCard 1.0.5,修复了 ACPC 的动作空间问题 (1.12.0)
v5:升级到 RLCard 1.0.4,修复了多于 2 名玩家时的奖励问题 (1.11.1)
v4:升级到 RLCard 1.0.3 (1.11.0)
v3:修复了任意调用 observe() 的错误 (1.8.0)
v2:更新了 RLCard 版本,错误修复,观察中的合法动作掩码取代了 infos 中的非法动作列表 (1.5.0)
v1:更新了 RLCard 版本,修复了观察空间,采用了新的智能体迭代方案,所有智能体在完成其回合后都会被迭代 (1.4.0)
v0:初始版本发布 (1.0.0)
用法¶
AEC¶
from pettingzoo.classic import texas_holdem_no_limit_v6
env = texas_holdem_no_limit_v6.env(render_mode="human")
env.reset(seed=42)
for agent in env.agent_iter():
observation, reward, termination, truncation, info = env.last()
if termination or truncation:
action = None
else:
mask = observation["action_mask"]
# this is where you would insert your policy
action = env.action_space(agent).sample(mask)
env.step(action)
env.close()