程序代码: (代码标记 [code]...[/code] )
file:gabp.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
% % 用 GA 训练 BP 网络的权值、阈值
% % 开始计时
% tic,
% % BP 网络初始化
% [P,T,R,S1,S2,S]=bpinit;
% bounds=ones(S,1)*[0.1 0.9];
% % 初始种群个数
% num=60;
% pop=initializega(num,bounds,'fitness');
% % 遗传代数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 遗传代数
gen=500; [x endPop bPop trace]=ga(bounds,'fitness',[],pop,[1e-6 1
1],'maxGenTerm',gen,...
'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
for i=1:S
x(i)=endPop(1,i);
end;
sum=0;
% 前 R*S1 个编码为 W1
for i=1:S1,
for k=1:R,
W1(i,k)=x(R*(i-1)+k);
end
end
% 接着的 S1*S2 个编码(即第 R*S1 个后的编码)为 W2
for i=1:S2,
for k=1:S1,
W2(i,k)=x(S1*(i-1)+k+R*S1);
end
end
% 接着的 S1 个编码(即第 R*S1+S1*S2 个后的编码)为 B1
for i=1:S1,
B1(i,1)=x((R*S1+S1*S2)+i);
end
% 接着的 S2 个编码(即第 R*S1+S1*S2+S1 个后的编码)为 B2
for i=1:S2,
B2(i,1)=x((R*S1+S1*S2+S1)+i);
end