机器学习之基于matlab的神经网络粒子群优化算法的实现
来源:互联网 发布:sql可以装在d盘吗 编辑:程序博客网 时间:2024/05/02 02:29
实现算法的论文,代码源码,测试函数,请见本人的git账户:
https://github.com/qiu997018209/MachineLearning
以下是mymain.m文件内容
clear % mex cec13_func.cpp -DWINDOWSfunc_num=1;D=10;VRmin=-100;VRmax=100;N=40;Max_Gen=5000;runs=1fhd=str2func('cec14_func');for i=1 func_num=i; for j=1:runs [gbest,gbestval,pop]=myfunc(fhd,D,N,Max_Gen,VRmin,VRmax,func_num); xbest(i,:)=gbest fbest(i,j)=gbestval % plot(pbest(:,1) % plot(x,y) %plot(x,yy) % hold(a1,a2); %axis([500 5000,10^2 10^5]); %title(['适应度曲线 ' '终止代数=' num2str(Max_Gen)]); %xlabel('进化代数');ylabel('适应度'); end f_mean(i)=mean(fbest(i,j))end
以下是myfunc.m文件内容
function[gbest,gbestval,pop]=myfunc(fhd,D,N,Max_Gen,VRmin,VRmax,varargin);%------给定初始化条件----------------------------------------------%问题要么在邻域部分,要么在速度更新。我在只更换速度公式的时候是可以得到一个明显的改善的clc;rand('state',sum(100*clock));c=[0.5+log(2),0.5+log(2)];%c=[2 2];%w=1/(2*log(2));w=0.9-(1:Max_Gen).*(0.5./Max_Gen)Vmax=50;Vmin=-50;%------初始化种群的个体------------%pbest 个体最佳,lbest 邻域最佳,gbest,全局最佳,VRmax,粒子范围,Vmin速度范围。pop=VRmin+(VRmax-VRmin).*rand(N,D);vel=0.5*(Vmin+(Vmax-Vmin).*rand(N,D)-pop);%vel=Vmin+2.*Vmax.*rand(N,D)e=feval(fhd,pop',varargin{:});%% 个体极值和群体极值pbest=pop; %个体最佳pbestval=e;%个体最佳适应度值[gbestval bestindex]=min(e);gbest=pbest(bestindex,:);%全局最佳%gbestrep=repmat(gbest,N,1);n(1)=gbestval;k=3;%拓扑结构for i=1:N; a1=[1:i-1,i+1:N]; a1= a1(randperm(N-1)); a2=a1(1:k); a3(i,:)=[a2,i]; a4=a3(i,:); [lbestval(i),a5]=min(pbestval(a3(i,:))); a6=a4(a5); lbest(i,:)=pbest(a6,:);%邻域end%在更换速度公式的时候,可以更换变量%gbestrep=repmat(gbest,N,1);%aa=c(1).*rand(N,D).*(pbest-pop)+c(2).*rand(N,D).*(gbestrep-pop);%vel=w(j).*vel+aa;%% 迭代寻优for j=2:Max_Gen; %更新速度 l=pop+c(2)*rand(N,D).*(lbest-pop);%邻域 p=pop+c(1)*rand(N,D).*(pbest-pop);%个体最佳 G=(p+l+pop)/3; %aa=c(1).*rand(N,D).*(pbest-pop)+c(2).*rand(N,D).*(gbestrep-pop); %vel=w(j).*vel+aa; R=abs(G-pop); vel=w(j).*vel+G+(-1+rand(N,D)*2).*R vel=(vel>Vmax).*Vmax+(vel<=Vmax).*vel; vel=(vel<Vmin).*Vmin+(vel>=Vmin).*vel; %更新位置 pop=vel+pop; pop=((pop>=VRmin)&(pop<=VRmax)).*pop... +(pop<VRmin).*(VRmin+0.25.*(VRmax-VRmin).*rand(N,D))+(pop>VRmax).*(VRmax-0.25.*(VRmax-VRmin).*rand(N,D)); %pop=((pop>=VRmin)&(pop<=VRmax)).*pop... %+(pop<VRmin).*(VRmin)+(pop>VRmax).*(VRmax); vel=((pop>=Vmin)&(pop<=Vmax)).*vel+(pop<Vmin).*0+(pop>Vmax).*0; %获取适应值 e=feval(fhd,pop',varargin{:}); %更新pbest,历史最佳 t=(e<pbestval); m=repmat(t',1,D); pbest=m.*pop+(1-m).*pbest; pbestval=t.*e+(1-t).*pbestval; %更新lbest,局部最佳 for i=1:N; a7=a3(i,:); [lbestval(i),m1]=min(pbestval(a3(i,:))) a8=a7(m1); lbest(i,:)=pbest(a8,:); end %得到全局最佳 [gbestval id]=min(pbestval); n(j)=gbestval; gbest=pbest(id,:); gbestrep=repmat(gbest,N,1) %变更拓扑结构 if isequal(n(j-1),n(j)); for i=1:N; a1=[1:i-1,i+1:N]; a1= a1(randperm(N-1)); a2=a1(1:k); a3(i,:)=[a2,i]; a4=a3(i,:); [lbestval(i),a5]=min(pbestval(a3(i,:))); a6=a4(a5); lbest(i,:)=pop(a6,:); end endendend
0 0
- 机器学习之基于matlab的神经网络粒子群优化算法的实现
- 基于Matlab的粒子群算法实现
- 粒子群算法的matlab实现
- 粒子群算法的matlab实现
- 基于粒子群算法的概率神经网络实现多分类(PSO_PNN)
- 粒子群优化算法的JAVA实现
- 带交叉因子的粒子群优化算法matlab源程序
- 带交叉因子的粒子群优化算法matlab源程序
- 基于MATLAB的BP神经网络的算法实现
- 机器学习之实现简单的神经网络
- 【机器学习】基于粒子群算法的非线性函数寻优
- 【机器学习】基于自适应变异粒子群算法的非线性函数寻优
- matlab 常用机器学习算法的实现
- 机器学习 AdaBoost算法的MATLAB实现
- 基于耗散结构的粒子群优化算法
- 粒子群算法的matlab实现(一)
- 粒子群算法的matlab实现(二)
- 机器学习实验---人工神经网络MLP基于sklearn的实现
- 今天,你学习了吗?
- ACM中关于memset的用法几点
- 文章标题
- 完美的代价——回文字符串
- javascript时间格式format函数,js日期格式化函数
- 机器学习之基于matlab的神经网络粒子群优化算法的实现
- 正则表达式常用元字符整理小结
- 欢迎使用CSDN-markdown编辑器
- glide:异常: 调试和报错处理
- 《hive编程指南》阅读笔记摘要(三)
- 深入理解Java的接口和抽象类
- LintCode 链表插入排序
- docker 打包 node 项目
- eclipse安装tomcat插件及配置tomcat