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

📄 main_yuan.m

📁 遗传算法的matlab程序库 别人的辛勤劳动
💻 M
字号:
clc;clear;
Generation=-1;%Initial_Group初始群体,Generation代数
End=12;%参数的总数
G_Sample_Sum_Dimension=3;%从End个参数中取Sample_Sum_Dimension个不同的参数作为一个组合
G_Sample_Sum=20;%形成的组合总数(群体中个体的总数)

Initial_Group=wh_Creat_Group(End,G_Sample_Sum,G_Sample_Sum_Dimension);
[Max,Excellent_Sample_Positon]=SAA(G_Sample_Sum_Dimension,Initial_Group,G_Sample_Sum);
Excellent_Sample=Initial_Group(Excellent_Sample_Position,:);

while ~(Generation>100)
    Generation=Generation+1;
    [Max,Excellent_Sample_Positon]=SAA(G_Sample_Sum_Dimension,Initial_Group,G_Sample_Sum);
    Excellent_Sample=Initial_Group(Excellent_Sample_Position,:);
%-----------------------------------------------------------------------------变异开始,变异率设为5%
BY_Probability=round(G_Sample_Sum_Dimension*5/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:Sample_Sum_Dimension%完成变异的个体中的元素升序排列
        for k=1: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
%-------------------------------------------------------------------------------------------------变异结束    
end%while ~(Generation>100)

⌨️ 快捷键说明

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