# 变异
mp, s = 0.8, 0.2  # 变异概率,标准差
npr = np.random
npr.seed(int(time.time()))
g = np.array([meta[k][0] for k in hyp.keys()])  # 增益 0-1
ng = len(meta)
v = np.ones(ng)
while all(v == 1):  # 变异直到发生变化(防止重复)
    v = (g * (npr.random(ng) < mp) * npr.randn(ng) * npr.random() * s + 1).clip(0.3, 3.0)
for i, k in enumerate(hyp.keys()):
    hyp[k] = float(x[i + 7] * v[i])  # 变异

以上代码是变异部分的代码。首先,定义了变异概率mp和标准差s。然后,根据超参数的增益值g和变异概率,使用随机数生成新的变异增益v。这里使用了高斯分布来生成变异增益,并通过clip函数将其限制在0.3到3.0之间。接着,根据变异增益对超参数进行变异。