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

📄 genetichw.m

📁 #include "stdio.h" #include "math.h" #include "malloc.h" #include "string.h" #define m 6 #defin
💻 M
字号:
function bestchrom=GeneticHW(t)
%主函数
%在此算法中,采用轮盘赌原则进行选择子代,浮点编码,浮点交叉,浮点变异。
%并进一步提高运算的效率。
maxgen=500;   %最大迭代次数                      
sizepop=100;  %每代种群个体数                                   
pcross=[0.8]; %交叉概率                     
pmutation=[0.002]; %变异概率                  
bound=[ 0,22710;...  %决策变量界限值,范围根据卡车可载体积的限制给出
        0,18168;...
        0,9084;...
        0,24000;...
        0,24000;...  %决策变量,为每一类货物批复量的上限值,这里的范围是初始范围
        0,24000;...
        0,24000;...
        0,24000;];
mu=[984.5,4207.4,4366,4069.6];
sigma=[520,745,1352.2,1101];
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness=[];
bestfitness=[];
bestchrom=[];
for i=1:sizepop
   individuals.chrom(i,:)=CodeHW(bound);%对每个个体进行浮点编码
   x=individuals.chrom(i,:);
   individuals.fitness(i)=1./mubiaof(x,mu,sigma);%这里要求最大值
end
[bestfitness bestindex]=min(individuals.fitness);%找出当代最优值
bestchrom=individuals.chrom(bestindex,:);%当代最优值的编码
avgfitness=sum(individuals.fitness)/sizepop;%当代平均适应度
trace=[avgfitness bestfitness];%记录当代最优个体 
for i=1:maxgen
    individuals=SelectHW(individuals,sizepop);
    avgfitness=sum(individuals.fitness)/sizepop;
    individuals.chrom=CrossHW(pcross,individuals.chrom,sizepop);
    individuals.chrom=MutationHW(pmutation,individuals.chrom,sizepop,[i maxgen],[bound]);    
    for j=1:sizepop
        individuals.chrom(j,:)=CodeHW(bound);
        x=individuals.chrom(j,:);
        individuals.fitness(j)=1./mubiaof(x,mu,sigma);   
    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 + -