多智能体博弈代码怎么写?用 Nashpy 求混合策略并验证单方偏离

计算石头剪刀布混合均衡,并核对概率和最佳回应收益。提供演示输入、可核对结果和适用限制。

双人有限博弈可以用收益矩阵输入 Nashpy。这里求石头剪刀布的混合策略,并在求解后单独检查概率、期望收益和单方偏离。演示计算不是多智能体强化学习训练,也没有模拟人的行为。

安装与矩阵约定

在 Python 虚拟环境执行 python -m pip install “nashpy==0.0.43″。本例使用 NumPy 和 Nashpy 的 support_enumeration;安装器会处理所需依赖。收益矩阵 A 的行是玩家 A 动作,列是玩家 B 动作,顺序均为石头、布、剪刀。A 赢为 +1,输为 -1,平为 0;B 收益矩阵为 -A,明确表示零和。

多智能体博弈代码怎么写?用 Nashpy 求混合策略并验证单方偏离

完整计算与断言

保存 equilibrium.py,运行 python equilibrium.py。行玩家策略 x、列玩家策略 y 都是长度 3 的概率向量;x@A@y 是 A 的期望收益,不是某次出拳的分数。

import numpy as np
import nashpy as nash
A = np.array([[0, -1, 1], [1, 0, -1], [-1, 1, 0]], dtype=float)
B = -A
solutions = list(nash.Game(A, B).support_enumeration())
assert solutions
for x, y in solutions:
    assert np.all(x >= -1e-9) and np.all(y >= -1e-9)
    assert np.isclose(x.sum(), 1) and np.isclose(y.sum(), 1)
    value_a = x @ A @ y
    value_b = x @ B @ y
    pure_a = A @ y
    pure_b = x @ B
    assert pure_a.max() <= value_a + 1e-8
    assert pure_b.max() <= value_b + 1e-8
    print("A:", x.round(6), "B:", y.round(6), "payoffs:", round(value_a, 6), round(value_b, 6))

这个矩阵应得到双方各约 1/3 的动作概率,期望收益均约 0。浮点误差可能出现极小非零数,因此用容差比较,不能要求每个浮点数恰好等于 1/3。程序除了核对概率总和,还检查对固定对手策略改成任意纯动作都不会提高收益;任意混合偏离的收益也是这些纯动作收益的凸组合。

发现异常时怎样定位

概率不满足非负或总和为 1,先检查求解器输出是否被错误截断。收益符号颠倒,先核对行列玩家和 B=-A 是否真符合任务,而不是简单给一人矩阵转置。两人不是零和时,应提供各自收益矩阵,不能随手套用 -A。没有纯均衡不是输入出错的充分证据。

真实动作多时,支持枚举的组合数量会增加;退化博弈、数值容差和多个均衡还需按官方方法说明处理。本例只验证一个 3×3 固定矩阵,不保证任意规模计算速度,也不能自动选择多个均衡中哪一个符合业务。

下一步先给你的矩阵列出动作顺序和每个格子的可追溯收益,再运行求解及偏离检查。结果交付应同时带 x、y、期望收益和输入矩阵,单报“找到均衡”无法复核。

资料与核对依据

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32997.html

赞 (0)
AI小管家的头像AI小管家
多智能体博弈是什么?用收益表核对最佳回应与团队最优
上一篇 16小时前
多智能体遗传算法怎么做任务分配?用三件任务核对编码与最优对照
下一篇 16小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部