随机权重的PSO算法

选用随机的权重,可以在多峰函数求解的时候,避免陷入局部最优。

一、目标函数

y=x(1)^2+2*x(2)^4;

二、随机权重的计算公式

权重可以理解为所占工作量的大小及影响整体能力的程度。

权重w设定为某种随机分布的随机数,当粒子在起始位置接近最优点时候,权重最小,加快算法的收敛。同时也可以克服在初期找不到最优点的局限。

%w=u+m*N(0,1)
%u=u(min)+[u(max)-u(min)]*rand(0,1)

三、MATLAB代码实现

随机权重的PSO:

function [xm,fv]=suijiquanzhongPSO(suijiquanzhonghanshu,N,c1,c2,meanmax,meanmin,sigma,M,D)
%目标函数、粒子数、学习因子、学习因子、最大权重、最小权重、方差、迭代步数
format long;
for i=1:N
    for j=1:D
        %初始化位置
        x(i,j)=randn;
        %初始化速度
        v(i,j)=randn;
    end
end
%计算适应度
for i=1:N
    p(i)=suijiquanzhonghanshu(x(i,:));
    y(i,:)=x(i,:);
end
zuiyou=x(N,:);%全局最优
for i=1:N-1
    if suijiquanzhonghanshu(x(i,:))<suijiquanzhonghanshu(zuiyou)
        zuiyou=x(i,:);
    end
end
%迭代求解
for t=1:M
    for i=1:N
        miu=meanmin+(meanmax-meanmin)*rand();
        w=miu+sigma*randn();
        v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(zuiyou-x(i,:));
        x(i,:)=x(i,:)+v(i,:);
        if suijiquanzhonghanshu(x(i,:))<p(i)
            p(i)=suijiquanzhonghanshu(x(i,:));
            y(i,:)=x(i,:);
        end
        if p(i)<suijiquanzhonghanshu(zuiyou)
            zuiyou=y(i,:);
        end
    end
    pbest(t)=suijiquanzhonghanshu(zuiyou);
end
r=[1:1:100];
plot(r,pbest,'r--','linewidth',2);
xlabel('迭代次数');ylabel('适应度');
title('随机权重策略自适应算法收敛曲线');
grid on
hold on
xm=zuiyou';
fv=suijiquanzhonghanshu(zuiyou);

目标函数:

function y=suijiquanzhonghanshu(x)
y=x(1)^2+2*x(2)^4;
end
%w=u+m*N(0,1)
%u=u(min)+[u(max)-u(min)]*rand(0,1)

四、测试

在命令行输入

[xm,fv]=suijiquanzhongPSO(@suijiquanzhonghanshu,100,2,2,0.8,0.5,0.2,100,2)

选取参数含义为:
目标函数:suijiquanzhonghanshu
粒子数:100
学习因子:2
权重最大值:0.8
权重最小值:0.5
随机权重平均值的方差:0.2
迭代步数:100
在这里插入图片描述

结果

在这里插入图片描述
得到理论最小值点为xm所表示:(-0.000004443481202e-04, -0.408099448228020e-04)
最小值fv所表示为: 5.744903292062844e-18
在这里插入图片描述
根据检验,图像符合实际,所以计算的结果可以认为是准确的。

如有遗漏或者错误,请在评论区中指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值