Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 人工智能 > 进化计算
进化计算 A discussion board for Evolutionary Computation.
 
 
主题工具 显示模式
旧 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 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 20:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.