遗传算法 交叉的个数怎么确定
4个回答
推荐于2017-09-12 · 知道合伙人数码行家
关注
展开全部
"交叉策略可分为单点交叉、多点交叉、均匀交叉等。
单点交叉的交叉个数就是一个。
多点交叉时需产生若干个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的位置不交叉。"
富港检测技术(东莞)有限公司_
2024-04-02 广告
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
展开全部
遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要看你设定的是多少点的交叉了,一般都是单点交叉,任选两个个体,选择一个基因位互换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
交叉策略可分为单点交叉、多点交叉、均匀交叉等。
单点交叉的交叉个数就是一个。
多点交叉时需产生若干个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的位置不交叉。
追问
产生6个染色体。为什么是六个?
追答
十进制交叉公式之一为:
x(i,m)‘=(1-a)*x(i,m)+a*x(i+1,m)
x(i+1,m)’=a*x(i,m)+(1-a)*x(i+1,m)
其中X(i),X(i+1)为要交叉的个体,x(i)‘,x(i+1)‘为交叉后的新个体,m为交叉位置,a为小于1的随机数,由此可看出,在交叉过程中要确定m的值。
而上述假设个体为[8,10,12,30,1,5],一共6个元素(染色体),假设另一个交叉的个体为[7,12,9,25,4,8]。若产生的crossp为[1,0,0,0,1,0],则表示第一个个体的8、1分别和对应第二个个体的7、4按照交叉公式进行交叉,其它元素的值不变。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询