多智能体演化博弈怎么入门?手算一次复制子动态更新

用给定收益矩阵计算策略群体比例的一次近似更新。提供自定输入、完整计算和可核对结果,说明适用条件。

演化博弈可以描述群体里不同策略所占比例怎样随相对收益变化。先把一次更新手算清楚,再讨论长期行为。下面使用自己设定的两策略协调博弈,演示复制子方程和一个 Euler 数值步,不把一步计算当作均衡证明或智能体训练结果。

从收益矩阵到比例导数

收益矩阵 A=[[3,0],[0,2]],行是自身策略,列是对手策略;群体比例 x=(0.5,0.5)。按随机匹配的对称单群体设定,策略收益 f=Ax=(1.5,1),平均收益 φ=x·f=1.25。复制子方程为 dx_i/dt=x_i(f_i−φ),所以导数为 (0.125,−0.125)。Nashpy 的教材给出了这套方程;示例矩阵与数值由本文编写。

多智能体演化博弈怎么入门?手算一次复制子动态更新

步长 dt=0.1 的显式 Euler 近似为 x新=x旧+dt×导数,即 (0.5125,0.4875)。这里 x 是群体策略比例,不是同一位语言模型下一 token 概率,也不是已经学好的两个独立 agent 的策略。

运行一次更新并核对不变量

保存 replicator_step.py,运行 python replicator_step.py,只需要 Python 标准库。断言检查总比例、导数和非负性;失败时停下,不用自动归一化遮住坏步长。

from math import isclose
A=[[3.0,0.0],[0.0,2.0]]
x=[0.5,0.5]
dt=0.1
f=[sum(a*b for a,b in zip(row,x)) for row in A]
mean=sum(a*b for a,b in zip(x,f))
dx=[a*(b-mean) for a,b in zip(x,f)]
nxt=[a+dt*b for a,b in zip(x,dx)]
print("fitness,mean,derivative,next:",f,mean,dx,nxt)
assert isclose(sum(dx),0.0,abs_tol=1e-12)
assert isclose(sum(nxt),1.0,abs_tol=1e-12)
assert all(v>=0 for v in nxt)
assert all(isclose(a,b) for a,b in zip(nxt,[0.5125,0.4875]))

不要用一次上升代替长期分析

当前第一种策略比群体平均收益高,所以比例导数为正;第二种策略反向变化。若把初值改为 (0.2,0.8),两种收益为 (0.6,1.6),方向会改变。当前比例影响匹配收益,不能只看矩阵里 3 大于 2 就宣称第一种策略从所有初值都胜出。

连续方程的理论性质和离散近似的数值误差是两件事。步长太大可能使比例变负,即使总和仍为一也不合法;多步模拟需检查步长和误差,采用对应求解器时另记录容差。非对称双群体博弈需分别写两组比例与收益,不能套用这一组方程。

本例不模拟突变、空间邻居、有限群体随机性或个体奖励学习。实际验收保存矩阵方向、初始比例、收益、平均值和导数,确保解释能从输入重算;下一步比较两个初始比例的短程轨迹,再研究平衡点与稳定性。

资料与核对依据

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

赞 (0)
AI小管家的头像AI小管家
现有 3D 网格怎么用 AI 贴图?用 TEXTure 检查视角接缝与UV
上一篇 2小时前
图片怎么拆成可编辑透明图层?用 Qwen-Image-Layered 核对层次
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

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

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