cross.asv
来自「该程序用遗传算法对人工神经网络进行优化」· ASV 代码 · 共 28 行
ASV
28 行
%对染色体进行交叉运算
function NewW=cross(NewW.obj,gc,gm)
%交叉取值率
Pc=0.1;
%计算交叉次数
%m=[size(NewW(1).w1,1),size(NewW(1).w2,1),size(NewW(1).b1,1),size(NewW(1).b2,1)];
%n=[size(NewW(1).w1,2),size(NewW(1).w2,2),size(NewW(1).b1,2),size(NewW(1).b2,2)];
P=length(NewW);
CrossNum=Pc*m.*n*P;
for i=1:CrossNum%(1)
%随机选取两个父代参与交叉操作
a1=floor(2+(P-2)*rand+0.5);
a2=floor(2+(P-2)*rand+0.5);
%随机选取染色体上参与交叉操作的元素
b=floor(1+(m(1)-1)*rand+0.5);
c=floor(1+(n(1)-1)*rand+0.5);
%参与交叉的父代染色体
p1=NewW(a1).w1(b,c);
p2=NewW(a2).w1(b,c);
a=rand;
%线性交叉运算
p1=p1*a+p2*(1-a);
p2=p1*(1-a)+p2*a;
%子代替代其父代
NewW(a1).w1(b,c)=p1;
NewW(a2).w1(b,c)=p2;
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?