注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

易拉罐的博客

心静自然凉

 
 
 

日志

 
 

转 遗传算法优化神经网络黑箱函数通用MATLAB源码  

2010-06-11 22:34:08|  分类: 神经网络 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

遗传算法优化神经网络有两种情况,一种是把遗传算法用于神经网络的训练,充分利用遗传算法全局搜索的特性,得到一个初始的权值矩阵和初始的阈值向量,再用其它训练算法(如BP算法),得到最终的神经网络结构,另外一种情况,则是把训练好的神经网络作为黑箱函数,用遗传算法搜索该黑箱函数的最大值。本源码由GreenSim团队原创,转载请注明,有意购买源码或代写相关程序,请与GreenSim团队联系(主页http://blog.sina.com.cn/greensim)。

function [Yp,Xp,LC1,LC2]=MYGA(bpnet,M,N,Pm,LB,UB,XX,YY)
%%
% GreenSim团队原创作品,转载请注明
% Email:greensim@163.com
% GreenSim团队主页:http://blog.sina.com.cn/greensim
% [color=red]欢迎访问GreenSim——算法仿真团队→[url=http://blog.sina.com.cn/greensim]http://blog.sina.com.cn/greensim[/url][/color]
%% 输入参数列表
bpnet 训练好的神经网络
    遗传进化迭代次数
    种群规模(取偶数)
Pm    变异概率
LB    决策变量的下边界,1×5
UB    决策变量的上边界,1×5
XX    原始训练数据的输入部分
YY    原始训练数据的输出部分
%% 输出参数列表
Yp    最优个体对应输出值
Xp    最优个体,1×5
LC1   收敛曲线1,各代最优个体适应值的记录
LC2   收敛曲线2,各代群体平均适应值的记录
%% ---------------------------------------------------------------
%第一步:变量初始化
LC1=zeros(1,M);%收敛曲线1
LC2=LC1;%收敛曲线2
%第二步:随机产生初始钟群
farm=zeros(N,5);
for i=1:N
    for j=1:5
        farm(i,j)=(UB(j)-LB(j))+B(j);
    end
end
counter=0;%设置迭代计数器
while counter<M
    %第三步:交叉
    newfarm=zeros(N,5);%新种群
    Ser=randperm(N);%保证随机配对
    for i=1:2:(N-1)
        AA=farm(Ser(i),:);% 待交叉的两个父代个体
        BB=farm(Ser(i+1),:);
        p2=rand;
        pos=unidrnd(4);
        A=[p1*AA(1:pos)+(1-p1)*BB(1:pos),p2*AA((pos+1):5)+(1-p2)*BB((pos+1):5)];
        newfarm(i,:)=A;
        newfarm(i+1,:)=B;
    end
    %新旧种群合并
    FARM=[farm;newfarm];
    %第四步:选择复制
    FITNESS=zeros(1,2*N);
    fitness=zeros(1,N);
    for i=1:(2*N)
        X=FARM(i,:);
        FITNESS(i)=NETSIM(bpnet,X',XX,YY);
    end
    Ser=randperm(2*N);%选择复制采取两两随机配对竞争的方式,具有保留最优个体的能力
    for i=1:N
        f2=FITNESS(Ser(2*i));
        if f1>=f2
            farm(i,:)=FARM(Ser(2*i-1),:);
            fitness(i)=FITNESS(Ser(2*i-1));
        else
            farm(i,:)=FARM(Ser(2*i),:);
            fitness(i)=FITNESS(Ser(2*i));
        end
    end
    %记录最佳个体和收敛曲线
    maxfitness=max(fitness);
    meanfitness=mean(fitness);
    LC1(counter+1)=maxfitness;%收敛曲线1,各代最优个体适应值的记录
    LC2(counter+1)=meanfitness;%收敛曲线2,各代群体平均适应值的记录
    pos=find(fitness==maxfitness);
    Xp=farm(pos(1),:);
    Yp=maxfitness;
    %第五步:变异
    for i=1:N
        if Pm>rand&&i~=pos(1);%变异概率为Pm
            X=farm(i,:);
            p1=unidrnd(5);
            farm(i,:)=X;
        end
    end
    counter=counter+1;
    disp(counter);
end


来源:(http://blog.sina.com.cn/s/blog_682596e70100jac6.html)

- [转载]遗传算法优化神经网络黑箱函数通用MATLAB源码_我俊行_新浪博客

  评论这张
 
阅读(269)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017