简易粒子群算法求解目标函数最小值附python代码

我是小白

简易粒子群算法求解目标函数最小值附python代码_第1张图片

简易粒子群算法求解目标函数最小值附python代码_第2张图片

 简易粒子群算法求解目标函数最小值附python代码_第3张图片

本程序结束条件设定为迭代次数

vscode代码如下:小白写的比较繁琐QAQ

#粒子群算法
import random
#粒子群
N=3#种群数量
step=5#迭代次数

#step1 初始化
fout=[]#目标函数输出值
xout=[]#储存坐标值
pbest=[]
v=[]
gbest=[]


for i in range(N):
    v1=random.randint(-10,10)
    v2=random.randint(-10,10)
    x1=random.randint(-10,10)
    x2=random.randint(-10,10)
    f=x1**2+x2**2
    fout.append(f)
    pbest.append([x1,x2])
    xout.append([x1,x2])
    v.append([v1,v2])
index=(fout.index(min(fout)))
gbest.append(pbest[index])
print(f'初始化后的gbest为{gbest}')

#根据自身的历史最优位置和全局的最优位置,更新每个粒子的速度和位置
w=0.5#权重
c=2#学习系数
r=random.randint(0,1)
count=0#迭代计数
while count < step:
    count=count+1

    #更新所有变量
    for i in range(N):
        v[i][0]=w*v[i][0]+c*r*(pbest[i][0]-xout[i][0])+c*r*(gbest[0][0]-xout[i][0])
        v[i][1]=w*v[i][1]+c*r*(pbest[i][1]-xout[i][1])+c*r*(gbest[0][1]-xout[i][1])
        xout[i][0]=xout[i][0]+v[i][0]
        xout[i][1]=xout[i][1]+v[i][1]
    print(f'第{count}次迭代时候的v为{v},xout为{xout}')
    #评估粒子的适应度函数值
    for i in range(N):
        if xout[i][0]**2+xout[i][1]**2

运行结果:

 简易粒子群算法求解目标函数最小值附python代码_第4张图片

你可能感兴趣的:(智能优化方法坐大牢,python,算法,开发语言,人工智能)