genetichw1.m

来自「#include "stdio.h" #include "math.h" #」· M 代码 · 共 56 行

M
56
字号
function bestchrom=GeneticHW1(t)
%主函数
%在此算法中,采用轮盘赌原则进行选择子代,浮点编码,浮点交叉,浮点变异。
%并进一步提高运算的效率。
maxgen=300;   %最大迭代次数                      
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=[1477.4 3383.4 6134.7 3131];
sigma=[520,745,1352.2,1101];
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness=[];
bestfitness=[];
bestchrom=[];
for i=1:sizepop
   individuals.chrom(i,:)=CodeHW1(bound);%对每个个体进行浮点编码
   x=individuals.chrom(i,:);
   individuals.fitness(i)=1./mubiaof1(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,:)=CodeHW1(bound);
        x=individuals.chrom(j,:);
        individuals.fitness(j)=1./mubiaof1(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 + =
减小字号Ctrl + -
显示快捷键?