24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 1881  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

cq0932

金虫 (初入文坛)

[求助] 请教关于遗传算法的几个问题

1.在选择复制的过程中,适应度值大的个体将有更多的子孙,而相反的会被淘汰。在看书上代码《先进PID控制及其Matlab仿真 刘金琨著》的时候发现选择复制后的种群规模变小了,比如初始种群是30个个体,选择以后,就只剩十几个了。在交叉之前是否需要补全?如果要补全有什么比较好的方法?

2.接下来是交叉,交叉的对象应该如何选择?只从选择复制后产生的优势群体中选择吗?问题1中补全的部分是否参加交叉?未发生交叉的个体是直接保留原样到下一代吗?

3.然后是变异,是否只有交叉产生的个体才有可能发生变异?还是所有个体都会变异?另外,适应度大小对变异概率是否有影响?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cq0932

金虫 (初入文坛)

引用回帖:
5楼: Originally posted by DaleSong at 2012-12-22 00:16:36
第一步中,选择之后种群要保持为30的,具体恢复方法,给你个用matlab写的遗传算法优化PID控制器的简单算法,你看看就明白了吧。
http://good.gd/2364258.htm

您贴的代码和我从书上看到的遗传算子部分是一样的,选择结束以后,种群的个体数是减少的,他是在交叉的时候把选择出来的个体和初始种群中的个体进行交叉,不知道这样处理是否合理?程序的结果是在交叉之后恢复了种群的个体数目。

%****** Step 2 : 选择算子******
   fi_sum=sum(fi);
   fi_Size=(Oderfi/fi_sum)*Size;
   fi_S=floor(fi_Size);                 %按较大的适应度选择个体
   kk=1;
   for i=1:1:Size
      for j=1:1:fi_S(i)               %选择与产生后代个体
       TempE(kk,:)=E(Indexfi(i),:);  
         kk=kk+1;                    %kk用于产生后代用
      end
   end
%************ Step 3 交叉算子************
pc=0.60;                             %交叉概率0.60
n=ceil(20*rand);
for i=1:2:(Size-1)
    temp=rand;               
    if pc>temp                       %若temp落在[0,0.6]区间,则进行交叉操作
    for j=n:1:20
        TempE(i,j)=E(i+1,j);
        TempE(i+1,j)=E(i,j);
    end
    end
end
TempE(Size,:)=BestS;
E=TempE;
6楼2012-12-24 14:58:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

whzwcm

木虫 (著名写手)

劲升

【答案】应助回帖

感谢参与,应助指数 +1
来学习一下!社会很复杂啊
Believe myself!有志者事意成,加油!
2楼2012-12-20 22:53:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanghg_70

银虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
cq0932: 金币+1, 有帮助, 感谢深夜里还在为虫友排忧解难~~ 2012-12-21 20:00:26
以前研究过GA,在交叉、变异之后,种群规模会增大一倍,之后在扩大的群体中选择复制,形成新的群体,恢复群体规模的大小。十多年没有研究了,尽供参考

[ 发自手机版 http://muchong.com/3g ]
坚持坚持再坚持
3楼2012-12-21 04:54:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dreamrequiem

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
cq0932: 金币+1, 有帮助, 感谢回复!能更有针对性的回答一下我的疑问吗? 2012-12-24 15:00:50
1.选择只是进化的第一步,选择出来的个体往往有3种用途,比如直接复制到下一代(elite selection),或者选择出来的个体进行交叉,或者是变异。

2.选择进行交叉的个体可以有多种办法,经典的有rank selection, roulette wheel selection, tournament selection。可以网上随意找到各自的选择办法。

3.变异有两种策略,一种是对交叉后的个体进行变异,另外一种办法是分别使用交叉和变异产生一定数量的下一代个体,两者之间分别产生。具体由问题而定。
4楼2012-12-21 23:54:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见