点击查看完整代码http://www.daimapi.com/algorithm1_2/
代码利用Python3实现。
# -*- coding: utf-8 -*-
"""
@author: www.dashujv59.cn
"""
import numpy as np
import random
import matplotlib.pyplot as plt
#----------------------PSO参数设置---------------------------------
class PSO():
def __init__(self,pN,dim,max_iter):
self.w = 0.8
self.c1 = 2
self.c2 = 2
self.r1= 0.6
self.r2=0.3
self.pN = pN #粒子数量
self.dim = dim #搜索维度
self.max_iter = max_iter #迭代次数
self.X = np.zeros((self.pN,self.dim)) #所有粒子的位置和速度
self.V = np.zeros((self.pN,self.dim))
self.pbest = np.zeros((self.pN,self.dim)) #个体经历的最佳位置和全局最佳位置
self.gbest = np.zeros((1,self.dim))
self.p_fit = np.zeros(self.pN) #每个个体的历史最佳适应值
self.fit = 1e10 #全局最佳适应值