Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遗传算法中的交叉技术 我在编写C++中的一个小的遗传算法框架的过程中。我的染色体编码为位串,每个基因都有一个预定的大小。每个染色体将其基因一个接一个地存储在位字符串中。现在,我希望实现交叉操作符_C++_Genetic Algorithm_Genetic Programming_Genetics - Fatal编程技术网

遗传算法中的交叉技术 我在编写C++中的一个小的遗传算法框架的过程中。我的染色体编码为位串,每个基因都有一个预定的大小。每个染色体将其基因一个接一个地存储在位字符串中。现在,我希望实现交叉操作符

遗传算法中的交叉技术 我在编写C++中的一个小的遗传算法框架的过程中。我的染色体编码为位串,每个基因都有一个预定的大小。每个染色体将其基因一个接一个地存储在位字符串中。现在,我希望实现交叉操作符,c++,genetic-algorithm,genetic-programming,genetics,C++,Genetic Algorithm,Genetic Programming,Genetics,我的问题是,当选择从另一条染色体插入位的点时,我是在基因边界上这样做,还是仅仅将染色体作为一串位来处理,而忽略对基因的分割?换句话说,我是将最小的可交换单元视为一个基因还是一个比特?当两条染色体一起复制时,存在基因交叉的随机概率。因此,你只应该跨越你所考虑的基因而不是更小的单位。 < P>这个查询的答案最好通过了解GA所基于的生物过程来理解。 假设您正在寻找的是单点交叉,您需要的如下所示;交叉影响整个染色体,而不仅仅是“最小的可交换单元” 关于更复杂的交叉场景(如多点交叉或环交叉)的详细信息可

我的问题是,当选择从另一条染色体插入位的点时,我是在基因边界上这样做,还是仅仅将染色体作为一串位来处理,而忽略对基因的分割?换句话说,我是将最小的可交换单元视为一个基因还是一个比特?

当两条染色体一起复制时,存在基因交叉的随机概率。因此,你只应该跨越你所考虑的基因而不是更小的单位。

< P>这个查询的答案最好通过了解GA所基于的生物过程来理解。 假设您正在寻找的是单点交叉,您需要的如下所示;交叉影响整个染色体,而不仅仅是“最小的可交换单元”


关于更复杂的交叉场景(如多点交叉或环交叉)的详细信息可以在维基百科资源中找到。

因此我使用基因边界,总是交换整个基因,而不是比特。这很简单。谢谢我用Python实现了它,使用CYME将电压调节器放置在配电网络的最佳位置。然而,与基本的“顺序算法”相比,它还不够有效。我认为这很奇怪。如果我错了,请纠正我,但我不会说身体——在繁殖时——有办法知道基因的起点和终点。因此,我建议将最小的单位视为等位基因而不是基因。