fitness.asv

来自「用matlab编写的自适应小生境递阶遗传算法,非常适合于学习自适应遗传算法的朋友」· ASV 代码 · 共 51 行

ASV
51
字号
function [par,popparm1]=fitness(parrange1,popcon1,poppar1,a,t1,parn2)
%
%
disrange=parrange1(:,2)-parrange1(:,1);
parpopsize=size(poppar1,1); %
n1=size(poppar1,2);        %
num1=size(parrange1,1);    %
parlegth=n1/num1;          %
popparm1=poppar1;
sh=zeros(parpopsize);

if a==1
    for i=:parpopsize
        sum1=zeros(1,num1);
        for j=1:n1
            if popcon1(i,j)==1
                if poppar1(i,j)==1
                    n2 = floor(j/parlegth); %
                    n3 = mod(j,parlegth); %
                    if n3==0
                        sum1(n2)=sum1(n2)+1;
                    else
                        sum1(n2+1)=sum1(n2+1)+2.^(parlegth-n3);
                    end
                end
            end
        end
        for j=1:num1
            par(i,j)=parrange1(j,1)+sum1(1,j)*disrange(j,1)/(2.^parlegth-1);
        end
        popparm1(i,n1+1)=fitfunction(par(i,:));
        par1(i,:)=sum1;
    end
end
%
if a==0
    par=parn2;
end
d1=0.5;
for i=1:parpopsize
    for j=(i+1):parpopsize
        d(i,j)=sqrt(sum((par(i,1:num1)-par(j,1:num1)).^2)/num1);
        if d(i,j)<=d1  %
            sh(i,j)=1;
            sh(j,i)=sh(i,j);
        end
    end
    sh(i,i)=1;
    if a==1
        popparm1(

⌨️ 快捷键说明

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