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

📄 aadga.asv

📁 自适应小生境递阶遗传算法求解函数优化问题 想对其他函数求解就修改function函数
💻 ASV
字号:
%
clc
clear all

popsize = 40; %
parrange=[-10 10;-10 10];
m=16;   %
pc=0.8; %
T=150;  %
pm=0.1; %
num=size(parrange,1);
par=cell(popsize,num);
popcon=ones(popsize,m);
%
poppar=initialcon(popsize,m);
aa=1;
tt=1;
[par poppar]=fitness(parrange,popcon,poppar,aa,tt,par)
TraceInfo(tt,1)=tt;
%
[TraceInfo(tt,2) index]=max(poppar(:,(m+1)));
%
TraceInfo(tt,3)=mean(poppar(:,(m+1)));
best(1,:)=[par(index,:) TraceInfo(tt,2) 1];
k=2;
while tt<T
    tt=tt+1;
    [popconn1 popparn1]=select(popcon,poppar,popsize,m);
    %
    popconn2=crossovercon(popconn1,popsize,pc,m);
    %
    popconn3=mutation(popconn2,pm,popsize,m);
    %
    popparn2=crossovercon(popparn1(:,1:m),popsize,pc,m);
    %
    popparn3=mutation(popparn2(:,1:m),pm,popsize,m);
    %
    popcon1=[popcon;popconn3];
    poppar1=[poppar(:,1:m);popparn3];
    %
    [par1 poppar2]=fitness(parrange,popcon1,poppar1,aa,tt,par);
    
    poppar3=density(popsize,poppar2,m);
    
    popn1=[popcon1 poppar3 par1];
    popn4=sortrows(popn1,2*m+3);
    
    popcon=popn4((popsize+1):(2*popsize),1:m);
    poppar4=popn4((popsize+1):(2*popsize),(m+1):(2*m+2));
    par2=popn4((popsize+1):(2*popsize),(2*m+4):(2*m+3+num));
    
    aa=0;
    [par poppar5]=fitness(parrange,popcon,poppar4,aa,tt,par2);
    aa=1;
    [max1 index]=max(poppar5(:,m+1));
    for i=1:popsize
        if poppar5(i,m+1)==max1
            btrue=1;
            for v=1:(k-1)
                best1=best(v,1:2);
                if best==par(i,:)
                    btrue=0;
                    break;
                end
            end
            if btrue==1
                best(k,:)=[par(i,:) max1 tt];
                k=k+1;
            end
        end
    end
    TraceInfo(tt,1)=tt;
    TraceInfo(tt,2)=max1;
    TraceInfo(tt,3)=mean(poppar5(:,m+1));
    [par poppar5(:,m+1)]
    for i=1:popsize
        index(i)=i;
    end
    for i=1:popsize
        point=round(rand*(popsize-i));
        temp=index(i);
        index(i)=index(point+i);
        index(poin

⌨️ 快捷键说明

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