⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wh_zj.asv

📁 遗传算法的matlab程序库 别人的辛勤劳动
💻 ASV
字号:
% function y=wh_ZJ(Initial_Group,G_Sample_Sum,G_Sample_Sum_Dimension)
%G_Sample_Sum群体中个体总数
for i=1:G_Sample_Sum
    ZJ_Sample(i)=i;%生成杂交采样数组
end

Count=G_Sample_Sum*2;%杂交的最大次数

for i=1:Count
    JS_Biao=0;%是否提前结束杂交过程
    while(1)%A------产生杂交的初始条件
        ZJ_Sample_Rand1=round(G_Sample_Sum*rand(1));%ZJ_Sample_Rand1,ZJ_Sample_Rand2产生变异个体元素的位置
        ZJ_Sample_Rand2=round(G_Sample_Sum*rand(1));
        ZJ_Position=round(G_Sample_Sum_Dimension*rand(1));
        if and(and((ZJ_Sample_Rand1~=0),(ZJ_Sample_Rand2~=0)),and((ZJ_Position~=0),(ZJ_Sample_Rand1~=ZJ_Sample_Rand2)))
            break;
        end
    end%A---while
    
    if and((ZJ_Sample(ZJ_Sample_Rand1)~=0),(ZJ_Sample(ZJ_Sample_Rand2)~=0))%开始杂交   
        BF_Initial_Group=Initial_Group;
        BF_Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),:)=Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),:);  
        BF_Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),:)=Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),:); 
        
        for i=1:ZJ_Position
            T=Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),ZJ_Position);
            Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),ZJ_Position)=Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),ZJ_Position);
            Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),ZJ_Position)=T;
        end%i=1:ZJ_Position
%         ZJ_Sample(ZJ_Sample_Rand1)=0;ZJ_Sample(ZJ_Sample_Rand2)=0;
    else
        break;
        JS_Biao=1;
    end%if and((ZJ_Sample(ZJ_Sample_Rand1)~=0),(ZJ_Sample(ZJ_Sample_Rand2)~=0))%开始杂交 
     
    for i=1:G_Sample_Sum%完成变异的个体中的元素升序排列
        for j=1:G_Sample_Sum_Dimension
            for k=1:G_Sample_Sum_Dimension
                if (Initial_Group(i,j)<Initial_Group(i,k))
                    TT=Initial_Group(i,j);Initial_Group(i,j)=Initial_Group(i,k);Initial_Group(i,k)=TT;
                end
            end %k=1:G_Sample_Sum_Dimension
        end%j=1:G_Sample_Sum_Dimension
    end%i=1:G_Sample_Sum

    TTT=0;%0代表杂交后的个体中的元素没有重复的,1相反
    for k=1:G_Sample_Sum_Dimension%保证变异后的个体(行向量)的元素间互异
        for l=1:G_Sample_Sum_Dimension
            if and((k~=l),Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),k)==Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),l))
                TTT=1;
            end
        end%l
    end%k
    for k=1:G_Sample_Sum_Dimension%保证变异后的个体(行向量)的元素间互异
        for l=1:G_Sample_Sum_Dimension
            if and((k~=l),Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),k)==Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),l))
                TTT=1;
            end
        end%l
    end%k
    if (TTT==0)
        ZJ_Sample(ZJ_Sample_Rand1)=0;ZJ_Sample(ZJ_Sample_Rand2)=0;%已经杂交过的,清零,下次选择杂交样本时不会再选择他们两个
    else%如果杂交后样本中的元素有相同的
        Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),:)=BF_Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),:);  
        Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),:)=BF_Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),:); 
    end
    
    if (JS_Biao==1)
        break;
    end
        
end%for i=1:Count

y=Initial_Group;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -