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

📄 genetic.asv

📁 #include "stdio.h" #include "math.h" #include "malloc.h" #include "string.h" #define m 6 #defin
💻 ASV
字号:
function bestchrom=Genetic(t)
%主调用函数,针对零件参数中提高精度的要求。
%在此算法中,采用轮盘赌原则进行选择子代,浮点编码,浮点交叉,浮点变异。
%并进一步提高运算的效率。
maxgen=300;   %最大迭代次数                      
sizepop=100;  %每代种群个体数                                   
pcross=[0.6]; %交叉概率                     
pmutation=[0.002]; %变异概率                  
bound=[0.075 0.125;...  %决策变量界限值
        0.225 0.375;...
        0.075 0.125;...
        0.075 0.125;...
        1.125 1.875;...
        12 20;...
        0.5625 0.935];
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness=[];
bestfitness=[];
bestchrom=[];
for i=1:sizepop
   individuals.chrom(i,:)=Code(bound);%对每个个体进行浮点编码
   x=individuals.chrom(i,:);
   individuals.fitness(i)=1./Czfee(x,t);%因为这里要求最小值,所以计算每个个体的函数值的倒数
end
[bestfitness bestindex]=min(individuals.fitness);%找出当代最优值
bestchrom=individuals.chrom(bestindex,:);%当代最优值的编码
avgfitness=sum(individuals.fitness)/sizepop;%当代平均适应度
trace=[avgfitness bestfitness];%记录当代最优个体 
for i=1:maxgen
    individuals=Select(individuals,sizepop);
    avgfitness=sum(individuals.fitness)/sizepop;
    individuals.chrom=Cross(pcross,individuals.chrom,sizepop);
    individuals.chrom=Mutation(pmutation,individuals.chrom,sizepop,[i maxgen],bound);    
    for j=1:sizepop
        individuals.chrom(j,:)=Code(bound);
        x=individuals.chrom(j,:);
        individuals.fitness(j)=1./Czfee(x,t);
    end
    [newbestfitness,newbestindex]=min(individuals.fitness);
    [worestfitness,worestindex]=max(individuals.fitness);
    if bestfitness>newbestfitness
        bestfitness=newbestfitness;
        bestchrom=individuals.chrom(newbestindex,:);
    end
    individuals.chrom(worestindex,:)=bestchrom;
    individuals.fitness(worestindex)=bestfitness;
    
    avgfitness=sum(individuals.fitness)/sizepop;
    
    trace=[trace;avgfitness bestfitness];
end 
bestfitness

⌨️ 快捷键说明

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