我们之前也总结过,什么方格网络的规模啊、每轮的收益如何计算、一个个体要计算几轮,以及计算总收益等等,这些已经耳熟能详了,在此不过多赘述了。
因为是二阶的声誉演化规则,所以声誉值的变化同时跟个体i的策略和他的邻居策略有关系,因此其声誉值更新规则不同于一阶的声誉演化规则。
R i ( t ) = { R i ( t − 1 ) + 1 , i f S i ( t ) = C a n d S m ( t ) = C R i ( t − 1 ) + θ , i f S i ( t ) = C a n d S m ( t ) = D R i ( t − 1 ) − θ , i f S i ( t ) = D a n d S m ( t ) = C R i ( t − 1 ) − 1 , i f S i ( t ) = D a n d S m ( t ) = D (1) R_i(t)=\begin{cases} R_i(t-1)+1,&if S_i(t)=C\text{ }and \text{ }S_m(t)=C \\ R_i(t-1)+ \theta ,&ifS_i(t)=C \text{ } and\text{ } S_m(t)=D\\ R_i(t-1)-\theta,& ifS_i(t)=D\text{ }and\text{ }S_m(t)=C \\R_i(t-1)-1,&if S_i(t)=D\text{ }and\text{ }S_m(t)=D \end{cases} \tag{1} Ri(t)=⎩ ⎨ ⎧Ri(t−1)+1,Ri(t−1)+θ,Ri(t−1)−θ,Ri(t−1)−1,ifSi(t)=C and Sm(t)=CifSi(t)=C and Sm(t)=DifSi(t)=D and Sm(t)=CifSi(t)=D and Sm(t)=D(1)
其中,个体i的邻居m,是个体i的所有邻居中,声誉值最低的那个邻居。θ是对于自己合作邻居判断的补偿亦或者自己背叛邻居合作的惩罚。
同质的概念我在笔记<<论文阅读中的知识点>>中已经详细介绍,此处不在赘述。
这个同质很简单,大家的推理能力都一样,P的取值可以从0-1任意取值,并且每个人的推理能力P是一样的。
P是一个异质性内生的参数,假设这个能力值P跟个体的声誉值呈现负相关的线性关系,且其概率由博弈过程中的某些变量进行控制,并非外来变量或函数分布,具体公式如下所示:
P
=
1
−
R
R
m
a
x
∗
b
(2)
P=1-\frac{R}{R_{max}}*b \tag{2}
P=1−RmaxR∗b(2)
此时,每个人体的声誉推理能力随着本身声誉值的变化而进行变化,是每时每刻每个人都不一样的。
P是一个异质外生的参数,这个推理能力遵循正态分布(normal distribution)和幂律分布(power law distribution)。此时,每个个体的推理能力跟个体本身的任何参数都不相关,其推理能力完全由分布函数所确定。这里还需要注意的一点是,我们在改变分布函数的参数的过程中,要记得对函数的结果进行归一化处理。下面我将介绍最小最大值归一化。
归一化
- 把数据变成(0,1)或者(-1,1)之间的小数。尤其是0-1之间,可以当做随机概率来使用。
- 把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。
Min-Max Normalization(最小-最大归一化)
具体公式如下:
x
′
=
x
−
X
m
i
n
X
m
a
x
−
X
m
i
n
(3)
x'=\frac{x-X_{min}}{X_{max}-X_{min}} \tag{3}
x′=Xmax−Xminx−Xmin(3)
其中x为某个特征的原始值,X_min为该特征在所有样本中的最小值,X_max为该特征在所有样本中的最大值,x’为经过归一化处理后的特征值,其取值范围为(0,1)。
Normal distribution Normalization(正态分布的归一化)
import numpy as np
# 设置均值和标准差
mean = 0.1
std_dev = 0.2
# 生成一个符合正态分布的随机数
random_value = np.random.normal(loc=mean, scale=std_dev)
# 如果你希望将随机值归一化到 [0, 1] 范围内,首先需要定义一个范围
# 这里我们假设一个合理的范围
data_min = mean - 3 * std_dev # 下界(均值-3个标准差)
data_max = mean + 3 * std_dev # 上界(均值+3个标准差)
# 将随机值归一化
normalized_value = (random_value - data_min) / (data_max - data_min)
# 确保归一化后的值在 [0, 1] 范围内
normalized_value = np.clip(normalized_value, 0, 1)
# 输出结果
print("随机产生的概率为:",normalized_value)
我们知道的是,正态分布的99.9%都出在(μ-3∂,μ+3∂)之间,所以面积的最大值为μ+3∂面积的最小值为μ-3∂。故可得到上面的公式。
f ( x ) = α x α − 1 (4) f(x)=\alpha x ^{\alpha -1} \tag{4} f(x)=αxα−1(4)
具体归一化代码如下:
import numpy as np
# 设置幂律分布的 alpha 参数
alpha = 0.5
# 生成一个符合幂律分布的随机数
def generate_power_law(alpha, size=1):
# 生成均匀分布的随机数
u = np.random.uniform(0, 1, size)
return alpha*(u**(alpha-1))
# 生成一个随机值
random_value = generate_power_law(alpha)
# 归一化
# 对于幂律分布,通常可以直接将生成的数据视为范围[0,1]的概率
normalized_value = np.clip(random_value, 0, 1)
# 输出结果
print(f"Normalized value (probability P): {normalized_value}")
其实,本论文中是不是使用这样的归一化我尚不敢作如此估计,只能说等我开始仿真这个论文的时候,根据仿真的结果来确定我所理解的想法是否正确。
- 在同质的情况下,更高声誉推理能力会使个体倾向于选择高声誉的个体进行策略的模仿,从而有效的促进种群中合作的涌现。
- 在异质性内生的情况下,越高的异质程度越不利于促进合作的产生;在异质性外生的情况下,当处于正态分布的时候,如果方差足够大,无论均值是多少合作的水平总是相等的。其次,当均值接近于1的时候,幂律分别比正态分布更优。
- 二阶声誉演化规则相比于一阶,会在一定的程度上抑制合作的产生。且声誉波动幅度越大(这个声誉波动就跟上面那个公式θ有关系了),抑制作用越明显。当声誉推理能力较低且声誉参数同时较高时,抑制合作效果最显着。因为背叛者可以很快的积累高声誉,从而导致背叛策略的传播。(这些内容我在之间的博弈总结中也提到过)
这里埋下一个伏笔,就是在之后的仿真中,确定我的归一化方式是否正确。
因篇幅问题不能全部显示,请点此查看更多更全内容