myadapting.m

来自「用遗传算法求解二维函数的最大值问题」· M 代码 · 共 48 行

M
48
字号
%计算适应值 myadapting.m 

for i=1:nind 
    adapt1(i)=0; %初始化
end 
for i=1:nind
    adapt2(i)=0; %初始化
end
%解码  
for i=1:nind 
    for j=1:bits 
        if pop(i,j)==1 
            adapt1(i)=adapt1(i)+2^(bits-j);
        end 
    end 
    x1(i)=min+adapt1(i)*(max-min)/(2^bits-1);
    for j=bits+1:2*bits
        if pop(i,j)==1 
            adapt2(i)=adapt2(i)+2^(2*bits-j); 
        end 
    end 
   x2(i)=min+adapt2(i)*(max-min)/(2^bits-1);
%计算适应值
    eval(i)= 100*(x1(i)^2-x2(i)^2)^2+(1-x1(i))^2; %对于极大值问题,适应度就等于目标函数值
end 
%迭代次数到达最大遗传代数时做出群体适应值分布图
if (Gen==G)
    figure(2);
    plot(eval); 
    legend('最大遗传代数时目标函数值分布图')
end
   
global best_pos; 
eval_best(G)=0;  %最佳个体 
best_pos=0;    %最佳个体在种群中的位置 
  
for i=1:nind
    eval_ave(Gen)=eval_ave(Gen)+eval(i); 
    if eval_best(Gen)<eval(i) 
        eval_best(Gen)=eval(i); 
        best_pos=i; 
    end 
end 
  
eval_ave(Gen)=eval_ave(Gen)/nind;
  
clear i; 
clear j; 

⌨️ 快捷键说明

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