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

📄 nonlinearrankselect.m

📁 继续上次传的遗传算法
💻 M
字号:
function [selectpop]=NonlinearRankSelect(pop,LB,UB) 
[m,n]=size(pop);
selectpop=zeros(m,n);
fit=zeros(m,1);
for i=1:m
    fit(i)=fun(b2f(pop(i,:),LB,UB));
end
fitness=fit/sum(fit);
for i=2:m
    fitness(i)= fitness(i-1)+fitness(i);
end
rnums=rand(m,1);
for i=1:m
    for j=1:m
        if rnums(i)<=fitness(j)
            selectpop(i,:)=pop(j,:);
    


selectprob=fit/sum(fit);

q=max(selectprob);%选择最优的概率
x=zeros(m,2);
x(:,1)=[m:-1:1]';
[y x(:,2)]=sort(selectprob);
r=q/(1-(1-q)^m);%标准分布基值
newfit(x(:,2))=r*(1-q).^(x(:,1)-1);%生成选择概率
newfit=cumsum(newfit);%计算各选择概率之和
rNums=sort(rand(m,1));
fitIn=1;newIn=1;
while newIn<=m
    if rNums(newIn)<newfit(fitIn)
        selectpop(newIn,:)=pop(fitIn,:);
        newIn=newIn+1;
    else
        fitIn=fitIn+1;
    end
end

⌨️ 快捷键说明

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