问题标签 [crossover]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2529 浏览

matlab - Matlab中的两点交叉

在 Matlab 中实现两点交叉的最佳方法是什么?此处描述了两点交叉。请注意,在我的应用程序中,我无法在任何地方拆分列表。它们按四个分组,因此允许拆分列表(染色体)的位置是 4、8、12 等等(这是因为我的应用程序是线性遗传编程问题)。

我试过这个,但它不起作用,因为有时我得到的染色体有许多不能被四整除的元素。我需要帮助弄清楚如何使它工作。

编辑。似乎有混乱。我想要我的代码描述的交叉版本。在此代码中,每个染色体的片段长度不同。这意味着我在进行交换时会改变染色体的大小,这是有意的。对 McMa 的评论中提供了进一步的解释。

0 投票
1 回答
929 浏览

java - 遗传算法 - Java Crossover

使用我的 GA 的交叉方法,在将母亲的后半部分连接到父亲的前半部分时,我不断收到 ArrayOutOfBounds 异常。ArrayList 的大小都相同。为什么我妈妈一直试图访问我的对象列表中的第 10 个元素?MyPair 是一个具有随机方向和随机步数的对象。

我们目前正在我的 AI 课上学习这个主题,所以我还不是 GA 的专家。欢迎对我的交叉算法进行任何额外的评论。

0 投票
1 回答
253 浏览

algorithm - 旅行推销员的交叉算法?

我正在为旅行商问题的遗传算法寻找交叉算法。

但是,我的 TSP 问题是传统问题的变体:

我们不仅获得了需要访问的点列表,还获得了需要访问的点列表以及需要开始和结束的点列表。换句话说,任何路线都必须在属于第二个列表的任何点开始和结束,但必须访问第一个列表中的所有点。

所以换句话说,并不是每一个点的排列都是有效的。正因为如此,我不确定传统的交叉算法是否能很好地工作(例如,我尝试了有序交叉,它创建的子代通常比它的父代差)。

谁能建议一个交叉算法?

0 投票
2 回答
81 浏览

artificial-intelligence - 允许遗传算法交叉中的不兼容更改

我正在尝试为骑行轨迹编写遗传算法,并考虑如何实现突变/交叉。目标是发展 a) 一个完整的循环 b) 一个令人兴奋的旅程(我对此有标准)。

我有大约 60 件可供选择,但并非所有件都相互兼容。例如,一个轨道件可以向左倾斜,而另一个轨道件可以向右倾斜。

当允许突变时,我可以努力只允许轨道片段突变为具有兼容角度的其他片段。或者,我只能在具有相同角度的点处交叉两条轨道。然而,这可能会限制进行高级探索的能力,而这些探索可能会取得丰硕的成果。

流行的“Hello World”示例类似的是,您正在尝试生成任何有效的单词或任何有效的句子。英语有一个规则(为这个例子弥补,不知道它是否属实)辅音不能跟随 Z。你应该只允许元音在 Z 之后发生变异吗?

这有任何意义吗?还是应该只允许所有类型的突变并丢弃不好的突变?

0 投票
1 回答
1648 浏览

algorithm - 遗传算法中的混合 Alpha 交叉算子

我将混合阿尔法交叉算子用于遗传算法(GA),但遇到如下问题:

染色体具有以下形式: (parent1, parent2, parent3) parent1, parent2, parent3 允许的值在 [0,1] 范围内。

如果应用 alpha blend crossover 算子,染色体的值可以在 [0,1] 范围之外,因为这个算子会扩大 GA 的搜索空间。在这种情况下,我该怎么做才能确保参数的取值范围?

0 投票
1 回答
124 浏览

java - 遗传算法交叉误差

所以我要从当前这一代最好的父母中培养一个孩子。这个想法是从父 1 中随机抽取路径的前半部分,从父 2 中随机抽取后半部分。

我认为当我尝试防止重复时会出现问题。所以我的输出对于其他人来说似乎是一样的。总是相同的数字,即使第一代人口是完全随机的(我已经测试过)。第一代的距离似乎随机不同,第二代的每条路线都有相同的距离,但每次我运行它都会改变。第三代有相同的父母和孩子。所以它基本上会慢慢收敛到相同的数字。15977.582173243769。我很确定这个数字很奇怪,但我们只会得到运行时错误,没有编译器的东西。如果需要其他代码,我也可以发布。

0 投票
1 回答
1109 浏览

c++ - 遗传算法中的一点交叉

我正在使用一个点交叉来交叉两个人。假设我有两个人,例如

tmp_P是向量存储两个个体I1I2。我想在 C++ 中实现一个点交叉。这样对吗?

这是算法描述

我的问题是我混淆了pos. 它是从 [0 到 n-2] 随机的吗?这样对吗?

0 投票
1 回答
966 浏览

android - 适用于 Android 或 iPhone 的 Cyber​​Tracker 应用程序

我正在尝试查找 Cyber​​Tracker Android 安装或任何在 OS X 或 Android 手机或平板电脑上运行该软件的方式。我尝试使用 Crossover 从http://www.cybertracker.org/software/getting-started页面打开安装文件: http ://www.cybertracker.org/downloads/software/Crossover-for-Cyber​​Tracker.pdf但 Crossover无法识别安装文件夹中的任何文件。有人设法安装它吗?谢谢!

0 投票
1 回答
845 浏览

genetic-algorithm - 在多个锦标赛选择中选择相同的父母

我想知道我是否可以在遗传算法的两次选择迭代中选择两个相同的父母(在具有锦标赛选择的同一群体中)。

我可以吗?

0 投票
1 回答
237 浏览

java - 交叉中的子树替换

我对一个关于基因编程的学校项目有疑问。

我正在使用子树交叉方法,所以我必须执行以下步骤:

  1. 从父树中选择一个随机节点(插入点)。
  2. 从母树中选择一个随机子树。
  3. 用来自母亲的子树替换来自父亲的插入点。

我很确定第三点在我的代码中不起作用。我已经尝试了几种不同的方法来解决这个问题(Java 中的深度复制和交换子树- 这也是),但它们似乎都不起作用。

我认为可行的方法是创建一个名为“child”的新树,它是父树的副本,然后使用该树找到一个随机节点,然后用一个子树替换找到的节点(所以事实上节点)来自母树。

我也尝试在树上搜索匹配,明确更新父母/孩子,但一切都表明它不是解决方案,或者我做错了。

所以我给你我的代码的基本版本;非常感谢我的思维方式有什么问题的每一个提示。

树节点.java

Chromosome.java 中使用的方法

来自 Genetics.java 的交叉方法

这是我们整个项目的 github 存储库的链接:https ://github.com/Nevaan/symbolic_regression