在遗传算法中如果个体有100个,交叉概率为0.1,则交叉个体数为10.但现在采用自适应的交叉概率,
在遗传算法中如果个体有100个,交叉概率为0.1,则交叉个体数为10.但现在采用自适应的交叉概率,
即适应值越大,交叉概率越小,那怎么确定交叉个体数.高手指教了,谢谢
100个个体,交叉概率为0.1,并不代表交叉个体数为10个.这是一个概率问题.
另外,交叉概率一般会取0.5-1这个范围内,0.1未免有点小.
自适应的遗传算法,一般在迭代初期会有较大的交叉概率,越往迭代后期,交叉概率越小.
而变异概率则相反.谢谢你的回答现在我假设只考虑交叉,用代码实现100个个体,交叉概率为0.6时交叉产生的新个体,那不是要先确定交叉的个体数吗 不然代码怎么实现?是的,要先确定交叉的个体数。100个个体都有机会参与交叉。首先将100个个体两两配对,每一对个体作为母代个体,按交叉概率来判断是否要进行交叉。如果满足交叉概率,则交叉,并产生两个子代个体。如果不满足交叉概率,则不交叉,子代个体用母代个体代替。这样下来,100个个体交叉后仍然产生100个子代个体。不好意思,不知道您说的满足交叉概率是什么意思?现假设母代个体为01254311423435 1321314 4125432 1431413 3214311 ,交叉概率为0.6,那么如何产生子代个体。我看好多代码是现6*0.6=2.4,则有两个个体会进行交叉,然后产生两个1-6之间的随机数,来来表示第几个母代个体参与交叉,再产生一个随机交叉点,从而产生子代个体 。不知你的方法是如何具体产生子代个体的你看到的不是太标准的交叉方法,标准的如下:假设六个个体的编号为从1至6,两两配对共分为3对母代个体。第1对母代个体:随机生成一个随机数r,如果r0.6,则不进行交叉,子代个体用母代个体代替。然后继续判断第2对母代个体,照此方法依次进行。一轮下来,进行交叉的个体数量大致是6*0.6=3.6个。但绝对不会是小数或奇数。太感谢您细心的回答了如果配对的母代个体的交叉概率不一样大,那r与大的概率还是小的概率比。再次谢谢每一次迭代,交叉概率都是一样大的。自适应的交叉,是指随着迭代次数的变化,交叉率也在变化。如果满意的话,能否采纳为最佳答案?呵呵