"交叉策略可分为单点交叉、多点交叉、均匀交叉等。
单点交叉的交叉个数就是一个。
多点交叉时需产生若干个0、1序列,交叉个数随机。
如果是采用二进制编码方式,假设个体为[0101 1101 1010 0100 1000],一共有4*5=20个基因,则需产生长度为20的0、1序列,在matlab中可以用命令crossp=round(rand(1,20)),通过判断crossp的每一个元素,为1的位置上交叉,为0不交叉。
如果是采用十进制编码,假设个体为[8,10,12,30,1,5],一共6个染色体,
则需产生长度为6的0、1序列,在matlab中同样可以用上面的命令产生,同样的在为1的位置上交叉,为0的位置不交叉。"
遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖。
要看你设定的是多少点的交叉了,一般都是单点交叉,任选两个个体,选择一个基因位互换。
交叉策略可分为单点交叉、多点交叉、均匀交叉等。
单点交叉的交叉个数就是一个。
多点交叉时需产生若干个0、1序列,交叉个数随机。
如果是采用二进制编码方式,假设个体为[0101 1101 1010 0100 1000],一共有4*5=20个基因,则需产生长度为20的0、1序列,在matlab中可以用命令crossp=round(rand(1,20)),通过判断crossp的每一个元素,为1的位置上交叉,为0不交叉。
如果是采用十进制编码,假设个体为[8,10,12,30,1,5],一共6个染色体,
则需产生长度为6的0、1序列,在matlab中同样可以用上面的命令产生,同样的在为1的位置上交叉,为0的位置不交叉。