gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第9章/normgeomselect.m

    function newpop=normgeomselect(oldpop)
q=0.8;
e=size(oldpop,2);
n=size(oldpop,1);
newpop=zeros(n,e);
fit=zeros(n,1);
x=zeros(n,2);
x(:,1)=[n:-1:1]';
[y x(:,2)]=sort(oldpop(:,e));
r=q/(1-(1-q)^n);
fit(x(:,2))=r*(1-q).^(x(:,1)-1);
fit=cumsum(fit);
rnums=sort(rand(n,1));
fitin=1;newin=1;
while newin<=n
    if (rnums(newin)<fit(fitin))
        newpop(newin,:)=oldpop(fitin,:);
        newin=newin+1;
    else
        fitin=fitin+1;
    end
end