登录论坛

查看完整版本 : 求助==遗传算法选择算子


fairyag
2009-05-24, 10:06
各位高手,小妹一事相求:

function [newpop]=selection(pop,fitvalue)
[m1,n1] = max(fitvalue);
p = pop(n1,: );
totalfit=sum(fitvalue);%求适应值之和
fitvalue=fitvalue/totalfit;%单个个体被选择的概率
fitvalue=cumsum(fitvalue); %累积概率,如 fitvalue=[1 2 3 4],
%则 cumsum(fitvalue)=[1 3 6 10]
[px,py]=size(pop);
ms=sort(rand(px,1)); %从小到大排列,将"rand(px,1)"产生的一列随机数变成轮盘赌
%形式的表示方法,由小到大排列
fitin=1; %fivalue是一向量,fitin代表向量中元素位,即fitvalue(fitin)代表第fitin个个体的单个个体被选择的概率
newin=1; %同理
while newin<=px
if(ms(newin))<fitvalue(fitin) %ms(newin)表示的是ms列向量中第"newin"位数值,同理fitvalue(fitin)
newpop(newin,: )=pop(fitin,: ); %赋值 ,即将旧种群中 的第fitin个个体保留到下一代(newpop)
newin=newin+1;
else
fitin=fitin+1;
end
end
newpop(1,: ) = p;
以上是一个遗传算法的选择算子,用的是轮盘赌。有哪位能用这样的格式帮我编一个其他方法的选择算子,比如:均匀排序法或者是最佳保留法等。。。感激流涕。