查看单个帖子
旧 2009-05-24, 10:06   #1
fairyag
初级会员
 
注册日期: 2009-04-22
年龄: 39
帖子: 1
声望力: 0
fairyag 正向着好的方向发展
默认 求助==遗传算法选择算子

各位高手,小妹一事相求:

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;
以上是一个遗传算法的选择算子,用的是轮盘赌。有哪位能用这样的格式帮我编一个其他方法的选择算子,比如:均匀排序法或者是最佳保留法等。。。感激流涕。
fairyag 当前离线   回复时引用此帖