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

📄 wh_zj_jun_yun.m

📁 遗传算法的matlab程序库 别人的辛勤劳动
💻 M
字号:
function [y,p]=wh_ZJ_Jun_Yun(G_Sample_Sum,G_Sample_Sum_Dimension,End,Initial_Group)

while (1)%使产生的Judge不全为0或1
    Judge=round(rand(1,G_Sample_Sum_Dimension));%杂交判据,为1交换,为0不交换
    Judge_1=min(Judge);Judge_2=max(Judge);
    if and(Judge_1~=Judge_2)
        break;
    end
end%while (1)%使产生的Judge不全为0或1

for i=1:G_Sample_Sum
    Sample_Selection(i)=i;
end%for i=1:G_Sample_Sum

for i=1:G_Sample_Sum
while(1)%A------1
    Sample_Selection_Rand1=round(G_Sample_Sum*rand(1));
    Sample_Selection_Rand2=round(G_Sample_Sum*rand(1));
    if and(and((Sample_Selection_Rand1~=0),(Sample_Selection_Rand2~=0)),(Sample_Selection_Rand1~=Sample_Selection_Rand2))
        break;
    end
end%A---while
Sample_Selection_T=Sample_Selection(Judge_Rand1);
Sample_Selection(Judge_Rand1)=Sample_Selection(Judge_Rand2);
Sample_Selection(Judge_Rand2)=Sample_Selection_T;
end%for i=1:G_Sample_Sum

while(1)%B------产生杂交的初始条件
    ZJ_Sample_Rand1=round(G_Sample_Sum*rand(1));%ZJ_Sample_Rand1,ZJ_Sample_Rand2产生变异个体元素的位置
    ZJ_Sample_Rand2=round(G_Sample_Sum*rand(1));
    if and(and((ZJ_Sample_Rand1~=0),(ZJ_Sample_Rand2~=0)),(ZJ_Sample_Rand1~=ZJ_Sample_Rand2))
        break;
    end
end%B---while

BF_Initial_Group_1=Initial_Group(ZJ_Sample(ZJ_Sample_Rand1),:);%保存要杂交的个体,如果杂交不成功,还要将其恢复  
BF_Initial_Group_2=Initial_Group(ZJ_Sample(ZJ_Sample_Rand2),:); 

for i=1:G_Sample_Sum_Dimension%开始杂交
    if (Judge(i)==1)
        Judge_T=Initial_Group( Judge(ZJ_Sample_Rand1),:); 
        Initial_Group( Judge(ZJ_Sample_Rand1),:)=Initial_Group( Judge(ZJ_Sample_Rand2),:); 
        Initial_Group( Judge(ZJ_Sample_Rand2),:)=Judge_T; 
    end
end%for i=1:G_Sample_Sum_Dimension%开始杂交


for i=1:G_Sample_Sum_Dimension%完成杂交的个体中的元素升序排列
    for j=1:G_Sample_Sum_Dimension
        if (Initial_Group( Judge(ZJ_Sample_Rand1),i)<Initial_Group( Judge(ZJ_Sample_Rand1),j))
            TT=Initial_Group( Judge(ZJ_Sample_Rand1),i);
            Initial_Group( Judge(ZJ_Sample_Rand1),i)=Initial_Group( Judge(ZJ_Sample_Rand1),j);
            Initial_Group( Judge(ZJ_Sample_Rand1),i)=TT;
        end
        
        if (Initial_Group( Judge(ZJ_Sample_Rand2),i)<Initial_Group( Judge(ZJ_Sample_Rand2),j))
            TT=Initial_Group( Judge(ZJ_Sample_Rand2),i);
            Initial_Group( Judge(ZJ_Sample_Rand2),i)=Initial_Group( Judge(ZJ_Sample_Rand2),j);
            Initial_Group( Judge(ZJ_Sample_Rand2),i)=TT;
        end
    end %k=1:G_Sample_Sum_Dimension
end%j=1:G_Sample_Sum_Dimension


⌨️ 快捷键说明

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