%% 采用君主方案进行选择交叉操作 % 君主方案是父方染色体全部是本代最占优的一条,母方是按一定顺序(升序)排列的一群染色体。 Emper = Sortf(:,1); % 君主染色体---本代最占优的一条 NoPoint = round(D*Pc); % 每次交叉点的个数 PoPoint = randi([1 D],NoPoint, NP/2); % 交叉基因的位置 nf = Sortf; for i=1:NP/2 nf(:,2*i-1) = Emper; nf(:,2*i) = Sortf(:,2*i); [Emper,Sortf(:,2*i)] for k = 1:NoPoint nf(PoPoint(k,i),2*i-1) = nf(PoPoint(k,i),2*i); nf(PoPoint(k,i),2*i) = Emper(PoPoint(k,i)); end end
讯享网
例如,当i=1
(1)PoPoint(1,1)=4, Emper与Sortf(:,2*1)的第4个基因进行交换
交换前: 图一:PoPoint 图二:Emper 图三:Sortf(:,2)
交换后,图为:nf(:,1:2)

讯享网 %% 变异操作 for m=1:NP for n =1:D r = rand(1,1); [m,n,r] nf1= nf; if r<Pm % Pm=0.1; 如果r<免疫概率 nf(n,m) = rand(1,1)*(Xs - Xx)+Xx; end end end
[m,n,r] r=0.0414 <Pm=0.1





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68248.html