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

2021-02-21 13:04

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

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

待求解问题为:

x2

maxf(x) 2.1(1 x 2x)exp(),22x 5,5

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

编制matlab主程序为:

clc;

clearall;

closeall;

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;


用MATLAB编制PSO算法程序求解简单的函数极值问题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:鞍钢实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: