粒子群(PSO)寻优算法(matlab)

粒子群寻优算法

网上已经有很多大差不大的代码,但是有可能运行不了,这里记录一个可以使用的,只需要修改适应度函数(要优化的函数)和粒子的维度(优化一个二元函数,则一个粒子的维度就是2维)即可。粒子群优化的方向是使得适应度越来越小的方向。


clear all

%粒子群算法中的两个参数
c1 = 1.49445;%两个加速常数
c2 = 1.49445;

maxgen=100;   % 进化次数  
sizepop=100;   %种群规模

Vmax=0.1;%速度最大值
Vmin=-0.1;%速度最小值
popmax=5;%个体最大值
popmin=-5;%个体最小值
%例子:优化一个f(x,y)=x^2+y^2,优化是找到使得f(x,y)最小的x,y

for i=1:sizepop
    %随机产生一个种群
    pop(i,:)=rands(1,2);%有x,y,所以这里是二维,每一个粒子都是一个行向量
    V(i,:)=rands(1,2);   %初始化速度
    fitness(i)=pop(i,1)^2+pop(i,2)^2;%这里需要修改来适配问题
end


% 个体极值和群体极值
[bestfitness,bestindex]=min(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;  %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值

%% 迭代寻优
%自适应惯性权重初始化
omg=zeros(1,maxgen);
omgstart=0.09;
omgend=0.02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值