栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

我是小白

 

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

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 

运行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号