正在展开冲刺页面
正在展开冲刺页面
对应「粒子群」的最小可运行骨架,便于对照模型详情页。
示意数值或符号数据(Demo)。
关键中间量与最终结果。
要搜连续参数、目标函数不好求导时用。
完整可运行代码
import numpy as np
def f(x):
return (x ** 2).sum(axis=1)
rng = np.random.default_rng(0)
pos = rng.uniform(-5, 5, size=(12, 2))
vel = np.zeros_like(pos)
pbest, gbest = pos.copy(), pos[np.argmin(f(pos))]
for _ in range(40):
vel = 0.7 * vel + 1.5 * rng.random(pos.shape) * (pbest - pos) + 1.5 * rng.random(pos.shape) * (gbest - pos)
pos = pos + vel
better = f(pos) < f(pbest)
pbest[better] = pos[better]
gbest = pbest[np.argmin(f(pbest))]
print(gbest, f(gbest[None, :])[0])