for j in range(MAX_EP_STEPS): for i in range(pN): temp = training(X[i]) if temp <p_fit[i]: # 更新个体最优 p_fit[i] = temp pbest[i] = X[i] if p_fit[i]< fit: #更新最优 gbest = X[i] fit = p_fit[i] for i in range(pN): c11 = 0.5 + 2 * math.exp(-(4 * pN / MAX_EP_STEPS)**2) # 每个粒子的个体学习因子 c22 = 2.2 - 2 * math.exp(-(4 * pN / MAX_EP_STEPS)**2) #每个粒子的社会学习因子 c = c11 + c22 fai = 2 / abs((2 - c - (c**2 - 4 * c) % 2)) f_avg = sum(fit) / pN f_min = min(fit) temp = training(X[i]) if temp <= f_avg: if f_avg != f_min: w = w_end + (w_start - w_end) * (temp - f_min) / (f_avg - f_min) else: w = w_end else: w = w_start V[i] = fai*(w * V[i] + c1 * random.uniform(0, 1) * (pbest[i] - X[i]) + c2 * random.uniform(0, 1) * ( gbest - X[i])) ww = 1 for k in range(dim): if DOWN[k] < X[i][k] + V[i][k] < UP[k]: continue else: ww = 0 X[i] = X[i] + V[i] * ww,这里的f_avg = sum(fit) / pN为什么不能迭代
时间: 2023-05-17 21:06:40 浏览: 143
这是一段Python代码,其中使用了两个循环。第一个循环是在j的范围内循环,最大循环次数为MAX_EP_STEPS。第二个循环是在i的范围内循环,最大循环次数为pN。在每次循环中,都会执行training(X[i])函数,并将结果赋值给temp。如果temp小于p_fit[i],则执行一些操作。
阅读全文