gadecod_test.m
Upload User: wxlysp
Upload Date: 2008-11-24
Package Size: 33k
Code Size: 1k
Category:

AI-NN-PR

Development Platform:

Visual C++

  1. % 将遗传算法的编码分解为BP网络所对应的权值、阈值
  2. function [W1, shift_b1, W2, scale_a1, P, T, A1, A2, SE, val]=gadecod_test(x)
  3. [P,T,R,S1,S2,S,Q]=nninit_test;     %%%%%%%%%%%%%   修改
  4. % 前R*S1个编码为W1
  5.  for i=1:S1,
  6.     for k=1:R,
  7.       W1(i,k)=x(R*(i-1)+k);
  8.     end
  9. end
  10. % 接着的S1*S2个编码(即第R*S1个后的编码)为W2
  11. for i=1:S2,
  12.    for k=1:S1,
  13.       W2(i,k)=x(S1*(i-1)+k+R*S1);
  14.    end
  15. end
  16. % 接着的S1个编码(即第R*S1+S1*S2个后的编码)为 shift_b1
  17. for k=1:S1,
  18.   shift_b1(k,1)=x((R*S1+S1*S2)+k);
  19. end
  20. % 接着的S1个编码(即第R*S1+S1*S2+S1个后的编码)为scale_a1
  21. for k=1:S1,
  22.   scale_a1(k,1)=x((R*S1+S1*S2+S1)+k);
  23. end
  24. % 计算S1与S2层的输出
  25. r=W1*P;  Q=length(P);
  26. for j =1:Q                      %%%%  所有的样本组
  27.    for i=1:S1                   %%%%  每一组样本的输出 每列
  28.  A1(i,j)=hfun(r(i,j),shift_b1(i),scale_a1(i) );
  29.   % A1(j)= hfun(r(j),b1(j),a1(j)); 
  30.    end
  31. end
  32. A2=W2*A1;
  33. %A2=sigmoid(A2);
  34. % 计算误差平方和
  35. SE=sumsqr(T-A2);
  36. val=1/SE; % 遗传算法的适应值