Uniform Crossover
在两个父母之间使用固定的mixing ratio
。
与one- and two-point crossover
不同,Uniform Crossover
使父染色体能够贡献基因水平而不是细分水平。
如果混合比为0.5
,则后代大约有一半的基因来自第一个父母,另一半来自第二个父母。所以我需要生成像
mask1: 0 1 1 0 0 0 1 1 0 1 0
mask2: 1 0 0 1 1 1 0 0 1 0 1
这里的混合比为0.5 。所以我需要使用0.5
的混合比率生成0和1。
我在matlab中尝试过这样的事情:
mask1=round(rand(1,IndLength));//IndLength=10 suppose
mask2=not(mask1);
并且它没有给出0和1的混合比率始终为0.5。是否有任何方法可以生成0.5
中matlab
的混合比例的随机数/ p>
答案 0 :(得分:3)
随机置换1和IndLength之间的数字,然后将每个数字高于IndLength / 2作为1
randperm(IndLength)>IndLength/2
对于奇数,此解决方案总是会有一个额外的0