用MATLAB编制PSO算法程序求解简单的函数极值问题.docx_第1页
用MATLAB编制PSO算法程序求解简单的函数极值问题.docx_第2页
用MATLAB编制PSO算法程序求解简单的函数极值问题.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用MATLAB编制PSO算法程序求解简单的函数极值问题一、利用PSO算法求解目标函数最大值待求解问题为:已知最大值大概为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); endendpersonalbest_x=x;personalbest_faval=f;globalbest_faval i=min(personalbest_faval);globalbest_x=personalbest_x(i,:);k=1;while k=MaxNum for i=1:particlesize for j=1:narvs f(i)=fitness(x(i,j); end if f(i)vmax; v(i,j)=vmax; elseif v(i,j)-vmax; v(i,j)=-vmax; end end x(i,:)=x(i,:)+v(i,:); end if abs(globalbest_faval)E0,break,end k=k+1;endValue1=1/globalbest_faval-1; Value1=num2str(Value1);% strcat指令可以实现字符的组合输出disp(strcat(the maximum value,=,Value1);%输出最大值所在的横坐标位置Value2=globalbest_x; Value2=num2str(Value2);disp(strcat(the corresponding coordinate,=,Value2);x=-5:0.01:5;y=2.1*(1-x+2*x.2).*exp(-x.2/2);plot(x,y,m-,linewidth,3);hold on;plot(globalbest_x,1/globalbest_faval-1,kp,linewidth,4);legend(目标函数,搜索到的最大值);xlabel(x);ylabel(y);grid on;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论