楼主: fantuanxiaot
2842 9

[源码分享] 基于遗传算法的神经网络应用代码 [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

威望
7
论坛币
-234475 个
通用积分
124.1424
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150207 点
帖子
7546
精华
32
在线时间
1327 小时
注册时间
2013-2-3
最后登录
2022-2-24

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

自己编的函数,大神莫喷


基于GEAT tool Box

GEATbx



function [BestError,BestW1,BestW2,BestB1,BestB2,SampleyFit,...
GlobalError,GlobalW1,GlobalW2,GlobalB1,GlobalB2,GlobalSampleyFit]=GEATNewNetworkfun(Samplex,Sampley,MM)

%%%%%%%%Numberofindividuals=50;%%染色体的数目.............举例设置参数值,这拥有九个自变量
%%%%%%%%Maxgeneration=500;%%%最大的迭代数目...........举例设置参数值
%%%%%%%%IndependentNum=5;%%自变量的个数............举例设置参数值
%%%%%%%%SelectProbability=0.9;%%选择概率..........举例设置参数值
%%%%%%%%RecombinationProbability=0.7;%%重组概率...........举例设置参数值
%%%%%%%%PrecisionofVariables=15;%%每个染色体到底有多长..........举例设置参数值
%%%%%%%%Mutationprobability=0.01; %%变异的概率..........举例设置参数值
%%%%%%%%vlb=[-5 -5 -5 -5 -5];vub=[5 5 5 5 5];函数自变量的上下界......举例参数设置
%%%%W1=0.5*rand(H,M)-0.1;
%%%%W2=0.5*rand(N,H)-0.1;
%%%%B1=0.5*rand(H,1)-0.1;
%%%%B2=0.5*rand(N,1)-0.1;

[M,number]=size(Samplex);
[N,number]=size(Sampley);
HiddenNum=ceil(sqrt(M+N))+3;%%隐藏层的个数
H=HiddenNum;
Numberofindividuals=50;
Maxgeneration=200;
IndependentNum=H*M+N*H+H+N;
SelectProbability=0.9;
RecombinationProbability=0.7;
Mutationprobability=0.01;
PrecisionofVariables=10;
vlb=repmat(-0.5,1,IndependentNum);
vub=repmat(0.5,1,IndependentNum);
ub=[vlb;vub];
trace=zeros(Maxgeneration,2);%遗传算法的性能跟踪
Field=[REP(PrecisionofVariables,[1,IndependentNum]);ub;REP([1;0;1;1],[1,IndependentNum])];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%以上为基础参数的设置

Chorome=CRTBP(Numberofindividuals,PrecisionofVariables*IndependentNum);
%%(Numberofindividuals*(PrecisionofVariables*(H*M+N*H+H+N)))的初始染色体矩阵Chorome
generation=0;
P=BS2RV(Chorome,Field);
ObjV=NewNNWorkfun(P,Samplex,Sampley,MM);
TraceBariables=[];
while generation<Maxgeneration
    f=RANKING(ObjV);
    FitV=GEATfitfun(f,P);
    SelCh=SELECT('SUS',Chorome,FitV,SelectProbability);
    SelCh=RECOMBIN('XOVSP',SelCh,RecombinationProbability);
    SelCh=MUT(SelCh,Mutationprobability);
    P=BS2RV(SelCh,Field);
    ObjSelV=NewNNWorkfun(P,Samplex,Sampley,MM);
    [Chorome,ObjV]=REINS(Chorome,SelCh,1,1,ObjV,ObjSelV);
    P=BS2RV(Chorome,Field);
    generation=generation+1;
    trace(generation,1)=min(ObjV);
    trace(generation,2)=sum(ObjV)/length(ObjV);
    [~,Index]=min(ObjV);
    TraceBariables=[TraceBariables;P(Index,:)];
end
figure(1)
plot(trace(:,1),'b','linewidth',2)
hold on
plot(trace(:,1),'r*','markersize',10)
plot(trace(:,2),'g','linewidth',2)
plot(trace(:,2),'r*','markersize',10)
legend('Error的变化','Error均值的变化');
hold off
[BestError,index]=min(ObjV);
BestP=P(index,:);
W11=BestP(1:H*M);
BestW1=reshape(W11,M,H)';
W22=BestP(H*M+1:H*M+N*H);
BestW2=reshape(W22,H,N)';
B11=BestP(H*M+N*H+1:H*M+N*H+H);
BestB1=B11';
B22=BestP(H*M+N*H+H+1:H*M+N*H+H+N);
BestB2=B22';
[examplein,pmin,pmax,exampleout,tmin,tmax]=premnmx(Samplex,Sampley);
Hiddenin=BestW1*examplein+repmat(BestB1,1,number);
switch MM(1)
    case 1
        Hiddenout=logsig(Hiddenin);
    case 2
        Hiddenout=tansig(Hiddenin);
    case 3
        Hiddenout=purelin(Hiddenin);
end
Netin=BestW2*Hiddenout+repmat(BestB2,1,number);
switch MM(2)
    case 1
        Netout=logsig(Netin);
    case 2
        Netout=tansig(Netin);
    case 3
        Netout=purelin(Netin);
end
SampleyFit=postmnmx(Netout,tmin,tmax);
[GlobalError,Indexx]=min(trace(:,1));
GlobalP=TraceBariables(Indexx,:);
GW11=GlobalP(1:H*M);
GlobalW1=reshape(GW11,M,H)';
GW22=GlobalP(H*M+1:H*M+N*H);
GlobalW2=reshape(GW22,H,N)';
GB11=GlobalP(H*M+N*H+1:H*M+N*H+H);
GlobalB1=GB11';
GB22=GlobalP(H*M+N*H+H+1:H*M+N*H+H+N);
GlobalB2=GB22';
HiddeninG=GlobalW1*examplein+repmat(GlobalB1,1,number);
switch MM(1)
    case 1
        HiddenoutG=logsig(HiddeninG);
    case 2
        HiddenoutG=tansig(HiddeninG);
    case 3
        HiddenoutG=purelin(HiddeninG);
end
NetinG=GlobalW2*HiddenoutG+repmat(GlobalB2,1,number);
switch MM(2)
    case 1
        NetoutG=logsig(NetinG);
    case 2
        NetoutG=tansig(NetinG);
    case 3
        NetoutG=purelin(NetinG);
end
GlobalSampleyFit=postmnmx(NetoutG,tmin,tmax);
end

function MSError=NewNNWorkfun(P,Samplex,Sampley,MM)
M=size(P,1);
Error=zeros(M,1);
[M,number]=size(Samplex);
[N,number]=size(Sampley);
HiddenNum=ceil(sqrt(M+N))+3;%%隐藏层的个数,IndependentNum=H*M+N*H+H+N;
H=HiddenNum;
for i=1:M
    PP=P(i,:);
    W11=PP(1:H*M);
    W1=reshape(W11,M,H)';
    W22=PP(H*M+1:H*M+N*H);
    W2=reshape(W22,H,N)';
    B11=PP(H*M+N*H+1:H*M+N*H+H);
    B1=B11';
    B22=PP(H*M+N*H+H+1:H*M+N*H+H+N);
    B2=B22';
    Errors=NewNNWork(Samplex,Sampley,MM,W1,W2,B1,B2);
    Error(i)=Errors;
end
MSError=Error;
end

function [MSError,pmin,pmax,tmin,tmax]=NewNNWork(Samplex,Sampley,MM,W1,W2,B1,B2)
%%%%MM的第一个数是隐藏层的函数选择,MM的第二个数是输出层的函数选择
%%%1、2、3分别代表logsig和tansig、purelin函数
%%%Samplex为M*number的矩阵,Sampley为N*number的矩阵
[~,number1]=size(Samplex);
[N,number2]=size(Sampley);
if (number1~=number2)
    error('BP Network is wrong!');
end
number=number1;
%%%%W1=0.5*rand(H,M)-0.1;
%%%%W2=0.5*rand(N,H)-0.1;
%%%%B1=0.5*rand(H,1)-0.1;
%%%%B2=0.5*rand(N,1)-0.1;
[examplein,pmin,pmax,exampleout,tmin,tmax]=premnmx(Samplex,Sampley);
Hiddenin=W1*examplein+repmat(B1,1,number);
switch MM(1)
    case 1
        Hiddenout=logsig(Hiddenin);
    case 2
        Hiddenout=tansig(Hiddenin);
    case 3
        Hiddenout=purelin(Hiddenin);
end
Netin=W2*Hiddenout+repmat(B2,1,number);
switch MM(2)
    case 1
        Netout=logsig(Netin);
    case 2
        Netout=tansig(Netin);
    case 3
        Netout=purelin(Netin);
end
Error=exampleout-Netout;
MSError=sumsqr(Error)/(N*number);
end

function z=GEATfitfun(x,y)
%%%%%%%x是函数值,y是种群的十进制值
N=length(x);
for i=1:length(N)
    if abs(sum(y(i,:)-500))>5%%%%%按照y的每一行测度自变量的总和是不是大于500,如果大于500则x(i)=0.001*x(i);
        x(i)=0.001*x(i);
    end
end
z=x;
end




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:神经网络 遗传算法 网络应用 神经网 Independent 网络应用

回帖推荐

weitingkoala 发表于5楼  查看完整内容

赞赞赞

离歌レ笑 发表于4楼  查看完整内容

这个必须赞!
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
accumulation + 100 + 1 + 1 + 1 精彩帖子
weitingkoala + 20 + 8 + 2 + 2 + 2 精彩帖子
离歌レ笑 + 5 + 5 + 5 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献

总评分: 经验 + 220  论坛币 + 8  学术水平 + 13  热心指数 + 13  信用等级 + 13   查看全部评分

本帖被以下文库推荐

沙发
fantuanxiaot 发表于 2014-10-26 16:10:37 |只看作者 |坛友微信交流群
在Command Window里面输入:
sqrs=[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 ...
       41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63];%机动车数(单位:万辆)
sqjdcs=[0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6...
        2.7 2.85 2.95 3.1];%公路面积(单位:万平方公里)
sqglmj=[0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 ...
         0.56 0.59 0.59 0.67 0.69 0.79];%公路客运量(单位:万人)
glkyl=[5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 ...
        22598 25107 33442 36836 40548 42927 43462];%公路货运量(单位:万吨)
glhyl=[1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 ...
        13320 16762 18673 20724 20803 21804];
p=[sqrs;sqjdcs;sqglmj];t=[glkyl;glhyl];


[BestError,BestW1,BestW2,BestB1,BestB2,SampleyFit,...
    GlobalError,GlobalW1,GlobalW2,GlobalB1,GlobalB2,GlobalSampleyFit]=GEATNewNetworkfun(p,t,[1;3])
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献

总评分: 经验 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

藤椅
zbin7451f 发表于 2014-10-26 17:32:39 |只看作者 |坛友微信交流群
楼主为论坛的贡献有目共睹!

使用道具

板凳
离歌レ笑 在职认证  发表于 2014-10-27 11:50:50 |只看作者 |坛友微信交流群
这个必须赞!
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

使用道具

报纸
weitingkoala 发表于 2014-10-27 12:22:27 |只看作者 |坛友微信交流群
赞赞赞

使用道具

地板
dst1213 发表于 2014-12-7 18:04:21 |只看作者 |坛友微信交流群
支持一下,好东西            

使用道具

7
oliyiyi 发表于 2014-12-7 21:42:12 |只看作者 |坛友微信交流群

使用道具

8
fantuanxiaot 发表于 2014-12-7 21:58:39 |只看作者 |坛友微信交流群
oliyiyi 发表于 2014-12-7 21:42
原来自己编的 现在都忘记咯

使用道具

9
oliyiyi 发表于 2014-12-7 22:05:22 |只看作者 |坛友微信交流群
fantuanxiaot 发表于 2014-12-7 21:58
原来自己编的 现在都忘记咯
哈哈

使用道具

10
joesrd 发表于 2016-1-3 23:51:21 |只看作者 |坛友微信交流群


好东西

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 11:51