问题标签 [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 投票
8 回答
2430 浏览

artificial-intelligence - 在遗传编程中实现交叉

我正在编写一个基因编程 (GP) 系统(用 C 语言,但这是一个小细节)。我读过很多文献(Koza、Poli、Langdon、Banzhaf、Brameier 等),但有些实现细节我从未见过解释。例如:

我使用的是稳态人口而不是世代相传的方法,主要是为了使用计算机的所有内存,而不是为临时人口保留一半。

Q1。在 GP 中,与 GA 不同,当您执行交叉时,您选择两个父母,但您是创建一个或两个孩子,还是您可以自由选择?

Q2。在稳态 GP 中,与世代系统相反,交叉创建的孩子取代了人口中的哪些成员?这是我没看到讨论过的。是两个父母,还是另外两个随机选择的成员?如果是后者,我可以理解,您可能会使用负锦标赛选择来选择替换成员,但这不会造成过早收敛吗?(在交叉事件之后,人口包含两个原始父母加上这些父母的两个孩子,另外两个随机成员被删除。精英主义是固有的。)

Q3。是否有专门针对 GP 的网络论坛或邮件列表?奇怪的是我还没有找到。雅虎的 GP 组几乎只用于发布公告,Poli/Langdon Field Guide 论坛几乎保持沉默,而像 gamedev.net 这样的通用/游戏编程网站上的 GP 讨论非常基础。

感谢您的任何帮助,您可以提供!

0 投票
2 回答
1335 浏览

java - 均匀交叉的结果比单点交叉更差?

我已经为我的部分作业编写了一个统一的交叉算法,但它不能正常工作。它实际上返回的结果比我的一点交叉更差。我只想有人指出我哪里出错了,所以我可以解决它:)。我已经尝试了很多年了,这是我最后的选择!!

该方法将两个父母 p1id 和 p2id 作为参数。然后创建表示的数组列表 - p1 和 p2。

在 for 循环中,'nbits' 是数组的权重(或数组的长度)。我的单点交叉方法在 for 循环中使用它,它工作得很好。

然后我生成 1/2 来确定孩子将从每个父母那里得到哪个基因。

这个算法的适应度非常非常差!!任何帮助都将不胜感激。

非常感谢。

0 投票
2 回答
2812 浏览

c++ - 两点交叉操作

我一直在尝试为遗传算法中的两点交叉操作编写代码。首先选择两个随机基因位置。之后,两条染色体交换它们的基因,这些基因位于称为基因定位 1 和基因定位 2 的随机数。

我的问题是这样的:由于两个数字是随机生成的,我无法定义像 array[genelocation2-genelocation1] 这样的数组。我该如何解决这个问题。这是我关于两点交叉的全部代码。指针可能是一个解决方案,但我不擅长指针。

这是代码:

0 投票
5 回答
2808 浏览

algorithm - 遗传算法选择和交叉

我一直在为我ai班上的一个项目对遗传算法进行一些研究,但我对似乎是传统算法有点困惑。

基本上,我想知道他们为什么使用轮盘赌等不同的选择来选择父母进行繁殖。为什么不选择体能得分最高的父母并收工呢?

交叉也让我感到困惑。每次随机选择点拼接父信息。但是根据以前的信息改变交叉似乎更有意义。如果已知染色体串在某一点上是好的,则交叉仍然可能是随机的,但不在字符串中好的部分的范围内。

有什么想法吗?

0 投票
2 回答
2849 浏览

java - Java中的两点交叉

我已经实现了一个点交叉如下;

一个点交叉 - 选择交叉点,从染色体开头到交叉点的二进制字符串从一个父节点复制,其余的从第二个父节点复制。

父母 1 = 染色体和父母 2 = indi。

我正在原地把父母变成孩子。

我现在还需要进行两点交叉,但遇到了一些麻烦,这是我目前所拥有的,但我相信代码的下半部分与单点交叉做同样的事情,而不是交换中间部分。

这似乎不正确,任何帮助将不胜感激!谢谢!

0 投票
1 回答
3066 浏览

java - Java中的统一交叉

我无法在 java 中实现统一的交叉。这是算法;

我知道我可以int tmp存储随机数,然后if tmp < 0.5继续循环

我无法开始任何帮助,不胜感激!

这是我的单点交叉的一个例子,只是为了让你知道我的格式。

一个点交叉 - 选择交叉点,从染色体开头到交叉点的二进制字符串从一个父节点复制,其余的从第二个父节点复制。

父母 1 = 染色体和父母 2 = indi。

我正在原地把父母变成孩子

0 投票
4 回答
11915 浏览

algorithm - 用于排列的交叉运算符

我正在尝试解决我的排列中遗传算法中的交叉问题。假设我有两个 20 个整数的排列。我想交叉他们生两个孩子。父母内部有相同的整数,但顺序不同。

例子:

就这样吧——我怎样才能得到这两个孩子?

0 投票
1 回答
1190 浏览

artificial-intelligence - 交叉不同长度的基因型

例如,我有两个随机代表

1 6 8 9 0 3 4 7 5

3 6 5 7 8 5

有什么方法可以交叉它们?

在每个基因型的末尾添加一些空数字(或操作或某事),以便它们具有相同的大小?

3 6 5 7 8 5 -1 -1 -1

-1 意味着什么?

或者从第一个基因型复制几个数字,从第二个基因型复制一些?

你的使用方式是什么?

0 投票
2 回答
1674 浏览

genetic-algorithm - 遗传算法交叉操作

我正在尝试在 MATLAB 中实现一个基本的遗传算法。我对交叉操作有一些疑问。我正在阅读它的资料,我发现总是选择两个父母进行交叉操作。

  1. 如果我碰巧有奇数个父母怎么办?

  2. 假设我有父母 A、父母 B 和父母 C,并且我将父母 A 与 B 交叉,然后再将父母 B 与 C 交叉以产生后代,即使这样我也得到了 4 个后代。拒绝其中一个的标准是什么,因为我的人口池应该始终保持不变?我应该拒绝适应度值最低的后代吗?

  3. 父母之间的算术运算,例如假设 OR 或 AND 运算是否可以被视为良好的交叉运算?我发现一些网站将它们列为交叉操作,但我不确定。

  4. 如何在多个父母之间进行交叉?

0 投票
2 回答
6862 浏览

genetic-algorithm - 模拟二元交叉 (SBX) 交叉运算符示例

我在一个研究团队工作以解决多目标工程问题,我专注于NSGA-II算法,但现在我坚持我需要了解 SBX 交叉如何与数值示例一起工作,以便我可以实现它,或者即使有现成的代码我可以根据我们的问题进行调整,但首先我需要查看数值示例,这样我才能继续,任何可用的资源我只在http://www.slideshare.net/上找到了一个演示文稿,但只有方程式没有示例。