粒子群算法求解函数极值matlab,用MATLAB编制PSO算法程序求解简单的函数极值问题...

用MATLAB 编制PSO 算法程序求解简单的函数极值问题

一、利用PSO 算法求解目标函数最大值

待求解问题为:

[]5,5),2exp()21(1.2)(max 2

2-∈-+-=x x x x x f

已知最大值大概为5在-1左右取到。

编制matlab 主程序为:

clc;

clear all ;

close all ;

tic; %程序运行计时

E0=0.001; %允许误差

MaxNum=100; %粒子最大迭代次数

narvs=1; %目标函数的自变量个数

particlesize=30; %粒子群规模

c1=2; %每个粒子的个体学习因子,也称为加速常数 c2=2; %每个粒子的社会学习因子,也称为加速常数 w=0.6; %惯性因子

vmax=0.8; %粒子的最大飞翔速度

x=-5+10*rand(particlesize,narvs); %粒子所在的位置

v=2*rand(particlesize,narvs); %粒子的飞翔速度

%用inline 定义适应度函数以便将子函数文件与主程序文件放在一起, %目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))

%inline 命令定义适应度函数如下:

fitness=inline('1/(1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2)))','x'); %inline 定义的适应度函数会使程序运行速度大大降低

for i=1:particlesize

for j=1:narvs

f(i)=fitness(x(i,j));

end

end

personalbest_x=x;

personalbest_faval=f;

[globalbest_faval i]=min(personalbest_faval);

globalbest_x=personalbest_x(i,:);

k=1;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值