作业帮 > 数学 > 作业

在遗传算法中如果个体有100个,交叉概率为0.1,则交叉个体数为10.但现在采用自适应的交叉概率,

来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/12 22:44:01
在遗传算法中如果个体有100个,交叉概率为0.1,则交叉个体数为10.但现在采用自适应的交叉概率,
即适应值越大,交叉概率越小,那怎么确定交叉个体数.高手指教了,谢谢
在遗传算法中如果个体有100个,交叉概率为0.1,则交叉个体数为10.但现在采用自适应的交叉概率,
100个个体,交叉概率为0.1,并不代表交叉个体数为10个.这是一个概率问题.
另外,交叉概率一般会取0.5-1这个范围内,0.1未免有点小.
自适应的遗传算法,一般在迭代初期会有较大的交叉概率,越往迭代后期,交叉概率越小.
而变异概率则相反.
再问: 谢谢你的回答 现在我假设只考虑交叉,用代码实现100个个体,交叉概率为0.6时交叉产生的新个体,那不是要先确定交叉的个体数吗 不然代码怎么实现?
再答: 是的,要先确定交叉的个体数。 100个个体都有机会参与交叉。 首先将100个个体两两配对,每一对个体作为母代个体,按交叉概率来判断是否要进行交叉。 如果满足交叉概率,则交叉,并产生两个子代个体。 如果不满足交叉概率,则不交叉,子代个体用母代个体代替。 这样下来,100个个体交叉后仍然产生100个子代个体。
再问: 不好意思,不知道您说的满足交叉概率是什么意思? 现假设母代个体为0125431 1423435 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与大的概率还是小的概率比。 再次谢谢
再答: 每一次迭代,交叉概率都是一样大的。自适应的交叉,是指随着迭代次数的变化,交叉率也在变化。 如果满意的话,能否采纳为最佳答案?呵呵