PsoProcess-PSO-matlab
来源:互联网 发布:linux wifi局域网ip 编辑:程序博客网 时间:2024/06/06 13:03
function [Result,OnLine,OffLine,MinMaxMeanAdapt]=PsoProcess(SwarmSize,ParticleSize,ParticleScope,InitFunc,StepFindFunc,AdaptFunc,IsStep,IsDraw,LoopCount,IsPlot)%功能描述:一个循环n次的PSO算法完整过程,返回这次运行的最小与最大的平均适应度,以及在线性能与离线性能%[Result,OnLine,OffLine,MinMaxMeanAdapt]=PsoProcess(SwarmSize,ParticleSize,ParticleScope,InitFunc,StepFindFunc,AdaptFunc,IsStep,IsDraw,LoopCount,IsPlot)%输入参数:SwarmSize:种群大小的个数%输入参数:ParticleSize:一个粒子的维数%输入参数:ParticleScope:一个粒子在运算中各维的范围;% ParticleScope格式:% 3维粒子的ParticleScope格式:% [x1Min,x1Max% x2Min,x2Max% x3Min,x3Max]%%输入参数:InitFunc:初始化粒子群函数%输入参数:StepFindFunc:单步更新速度,位置函数%输入参数:AdaptFunc:适应度函数%输入参数:IsStep:是否每次迭代暂停;IsStep=0,不暂停,否则暂停。缺省不暂停%输入参数:IsDraw:是否图形化迭代过程;IsDraw=0,不图形化迭代过程,否则,图形化表示。缺省不图形化表示%输入参数:LoopCount:迭代的次数;缺省迭代100次%输入参数:IsPlot:控制是否绘制在线性能与离线性能的图形表示;IsPlot=0,不显示;% IsPlot=1;显示图形结果。缺省IsPlot=1%%返回值:Result为经过迭代后得到的最优解%返回值:OnLine为在线性能的数据%返回值:OffLine为离线性能的数据%返回值:MinMaxMeanAdapt为本次完整迭代得到的最小与最大的平均适应度%%用法[Result,OnLine,OffLine,MinMaxMeanAdapt]=PsoProcess(SwarmSize,ParticleSize,ParticleScope,InitFunc,StepFindFunc,AdaptFunc,IsStep,IsDraw,LoopCount,IsPlot);%%异常:首先保证该文件在Matlab的搜索路径中,然后查看相关的提示信息。%%编制人:XXX%编制时间:2007.3.26%参考文献:XXXXX%%修改记录:%添加MinMaxMeanAdapt,以得到性能评估数据%修改人:XXX%修改时间:2007.3.27%参考文献:XXX.%容错控制if nargin<4 error('输入的参数个数错误。')end[row,colum]=size(ParticleSize);if row>1||colum>1 error('输入的粒子的维数错误,是一个1行1列的数据。');end[row,colum]=size(ParticleScope);if row~=ParticleSize||colum~=2 error('输入的粒子的维数范围错误。');end%设置缺省值if nargin<7 IsPlot=1; LoopCount=100; IsStep=0; IsDraw=0;endif nargin<8 IsPlot=1; IsDraw=0; LoopCount=100;endif nargin<9 LoopCount=100; IsPlot=1;endif nargin<10 IsPlot=1;end%控制是否显示2维以下粒子维数的寻找最优的过程 if IsDraw~=0 DrawObjGraphic(ParticleScope,AdaptFunc); end%初始化种群 <strong>[ParSwarm,OptSwarm]=InitFunc(SwarmSize,ParticleSize,ParticleScope,AdaptFunc)</strong>%在测试函数图形上绘制初始化群的位置if IsDraw~=0 if 1==ParticleSize for ParSwarmRow=1:SwarmSize plot([ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,1)],[ParSwarm(ParSwarmRow,3),0],'r*-','markersize',8); text(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,3),num2str(ParSwarmRow)); end end if 2==ParticleSize for ParSwarmRow=1:SwarmSize stem3(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,2),ParSwarm(ParSwarmRow,5),'r.','markersize',8); end endend%暂停抓图if IsStep~=0 disp('开始迭代,按任意键:') pauseend%开始更新算法的调用for k=1:LoopCount %显示迭代的次数: disp('----------------------------------------------------------') TempStr=sprintf('第 %g 此迭代',k); disp(TempStr); disp('----------------------------------------------------------') %调用一步迭代的算法 <strong> [ParSwarm,OptSwarm]=StepFindFunc(ParSwarm,OptSwarm,AdaptFunc,ParticleScope,0.95,0.4,LoopCount,k)</strong> %在目标函数的图形上绘制2维以下的粒子的新位置 if IsDraw~=0 if 1==ParticleSize for ParSwarmRow=1:SwarmSize plot([ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,1)],[ParSwarm(ParSwarmRow,3),0],'r*-','markersize',8); text(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,3),num2str(ParSwarmRow)); end end if 2==ParticleSize for ParSwarmRow=1:SwarmSize stem3(ParSwarm(ParSwarmRow,1),ParSwarm(ParSwarmRow,2),ParSwarm(ParSwarmRow,5),'r.','markersize',8); end end end <strong>XResult=OptSwarm(SwarmSize+1,1:ParticleSize); YResult=AdaptFunc(XResult); if IsStep~=0 XResult=OptSwarm(SwarmSize+1,1:ParticleSize); YResult=AdaptFunc(XResult); str=sprintf('%g步迭代的最优目标函数值%g',k,YResult); disp(str); disp('下次迭代,按任意键继续'); pause end</strong> %记录每一步的平均适应度 <strong> MeanAdapt(1,k)=mean(ParSwarm(:,2*ParticleSize+1));</strong>end%for循环结束标志%记录最小与最大的平均适应度<strong>MinMaxMeanAdapt=[min(MeanAdapt),max(MeanAdapt)];</strong>%计算离线与在线性能for k=1:LoopCount OnLine(1,k)=sum(MeanAdapt(1,1:k))/k; OffLine(1,k)=max(MeanAdapt(1,1:k));endfor k=1:LoopCount OffLine(1,k)=sum(OffLine(1,1:k))/k;end%绘制离线性能与在线性能曲线if 1==IsPlot figure hold on title('离线性能曲线图') xlabel('迭代次数'); ylabel('离线性能'); grid on plot(OffLine); figure hold on title('在线性能曲线图') xlabel('迭代次数'); ylabel('在线性能'); grid on plot(OnLine);end%记录本次迭代得到的最优结果<strong>XResult=OptSwarm(SwarmSize+1,1:ParticleSize);YResult=AdaptFunc(XResult);Result=[XResult,YResult];</strong>
0 0
- PsoProcess-PSO-matlab
- pso
- PSO
- PSO
- PSO 粒子群算法 Matlab源码
- PSO 粒子群算法 Matlab实现
- matlab pso工具箱和自己写
- SVM三种寻优方法matlab代码 grid search、GA、PSO
- SVM三种寻优方法matlab代码 grid search、GA、PSO
- PSO优化BP神经网络在Matlab中的实现
- Sam版Matlab粒子群PSO工具已经更新
- matlab练习程序(粒子群优化PSO)
- 基本粒子群优化算法(PSO)的matlab实现
- matlab练习程序(粒子群优化PSO)
- 粒子群算法(PSO)介绍及matlab实现
- 【MATLAB】PSO优化RBFNN程序(带注释)
- 【PSO】熟悉PSO算法
- 算法篇----简易版的粒子群(PSO)实现(Matlab语言)
- java基础---IO(一)
- Android 手势&触摸事件
- 石子归并
- font-family 定义的最后为什么要加一句sans-serif
- 我国启动测绘地理信息军民深度融合发展战略 将建立军民通用国家标准体系
- PsoProcess-PSO-matlab
- JS检测APP是否安装的情况
- linux平台下C语言实现一个简单的httpsever
- 用Qt自动绘制路口
- 数据结构之关于树的操作(树的递归和非递归遍历)-(四补)
- HDU1541 Stars【树状数组】
- 设计模式(十六)中介者模式(Mediator)-行为型
- 做ajax搜索框自动提示功能的体会
- HDU 4570 - Multi-bit Trie(区间DP)