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

📄 wh_by.m

📁 遗传算法的matlab程序库 别人的辛勤劳动
💻 M
字号:
%-----------------------------------------------------------------------------变异开始,变异率设为5%
function [y,p]=wh_BY(BY_Probability_Set,G_Sample_Sum,G_Sample_Sum_Dimension,End,Initial_Group)

BY_Probability=round(G_Sample_Sum*BY_Probability_Set/100);

if (BY_Probability<1)
    BY_Probability=1;
end

for by_Probability=1:BY_Probability
    while(1)%A---产生变异的初始条件
        BY_G_Sample_Sum_Rand=round(G_Sample_Sum*rand(1));%产生变异个体的位置
        BY_G_Sample_Sum_Dimension_Rand=round(G_Sample_Sum_Dimension*rand(1));%产生变异个体元素的位置BY_G_Sample_Sum_Dimension_Rand,
        BY_End_Rand=round(End*rand(1));%变异元素的数值BY_End_Rand
        if and(and((BY_G_Sample_Sum_Dimension_Rand~=0),(BY_End_Rand~=0)),(BY_G_Sample_Sum_Rand~=0))
            break;
        end
    end%A---while
    
    while(1)%B---开始变异
        Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand)=BY_End_Rand;%对Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand)实现变异
        TTT=0;
        for k=1:G_Sample_Sum_Dimension%保证变异后的个体(行向量)的元素间互异
            for l=1:G_Sample_Sum_Dimension
                if and((k~=l),(Initial_Group(BY_G_Sample_Sum_Rand,k)==Initial_Group(BY_G_Sample_Sum_Rand,l)))
                    TTT=1;
                end
            end%l
        end%k
        if (TTT==0)
            break;
        end
    end%B---while
    
    for j=1:G_Sample_Sum_Dimension%完成变异的个体中的元素升序排列
        for k=1:G_Sample_Sum_Dimension
            if (Initial_Group(BY_G_Sample_Sum_Rand,j)<Initial_Group(BY_G_Sample_Sum_Rand,k))
                TT=Initial_Group(BY_G_Sample_Sum_Rand,j);Initial_Group(BY_G_Sample_Sum_Rand,j)=Initial_Group(BY_G_Sample_Sum_Rand,k);Initial_Group(BY_G_Sample_Sum_Rand,k)=TT;
            end
        end %k
    end%j
end%for--------------by_Probability
%-------------------------------------------------------------------------------------------------变异结束    
y=Initial_Group(BY_G_Sample_Sum_Rand,:);
p=BY_G_Sample_Sum_Rand;

⌨️ 快捷键说明

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