欢迎来到本博客❤️❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
目录
1 文献来源
2 概述
3 运行结果
4 Python代码实现
如有侵权请联系删除。
为了改善粒子群算法易早熟收敛、精度低等缺点,提出一种多尺度协同变异的粒子群优化算法,并证明了该算法以概率1收敛到全局最优解.算法采用多尺度高斯变异机制实现局部解逃逸.在算法初期阶段,利用大尺度变异及均匀变异算子实现全局最优解空间的快速定位;随着适应值的提升,变异尺度随之降低;最终在算法后期阶段,利用小尺度变异算子完成局部精确解空间的搜索.将算法应用6个典型复杂函数优化问题,并同其他带变异操作的PSO算法比较,结果表明,该算法在收敛速度及稳定性上有显著提高。
部分代码:
def find_min(self, func, region): W = np.abs(region[0]-region[1]).astype(np.double) Vmax = W/4.0 sigma = self.initSigma(W) x = self.initX(region) v = self.initV(Vmax) Td = self.initTd(Vmax) G = self.initG() pbfx = func(x) # print(x.shape) # print(pbfx.shape) # print(np.unravel_index(pbfx.argmin(), pbfx.shape)) pb = x*1.0 gbfx = np.min(pbfx)*1.0 gb = pb[pbfx.argmin()]*1.0 plt_sigma = np.expand_dims(sigma, -1) plt_x = np.array([0]) plt_gbfx = gbfx*1.0 for i in range(self.maxK): print(func(gb)) # print(gb) fx = func(x) mask = fx= np.min(pbfx): gbfx = np.min(pbfx)*1.0 gb = pb[pbfx.argmin()]*1.0 v = self.update_V(v, x, pb, gb, i) v, Td, G = self.escape(v, x, func, Td, G, sigma, Vmax) # v[v>Vmax] = Vmax # v[v<-Vmax] = -Vmax x += v x[x>np.max(region)] = np.max(region) x[x 4 Python代码实现