问题标签 [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.
java - 如何优化我的遗传算法结果
我已经为具有时间窗口问题的多站点车辆路径问题编写了遗传算法,它运行良好,但结果还不够好。我正在将我的结果与 Solomon bench Marks 进行比较,他的所有实例的结果都低于我的。
我使用 Best Cost Route Crossover BCRC 方法进行交叉,我的染色体是所有客户的向量。
您能否建议我应该采取的任何技术或方法来优化我的 GA 结果。
谢谢您最好的问候。
arrays - 随机混合两个 Numpy 数组
这是我关于 Stack Overflow 的第一个问题,请耐心等待。假设我有两个相同形状的数组,X
并且Y
我想创建一个mix_arrays(X, Y)
将数组随机混合在一起的函数,如下所示:
这是它可以返回的内容:
基本上,对于 中的每个元素new_array
,该元素有 50% 的机会来自array_0
,并且有 50% 的机会来自array_1
我确定这个问题已经存在,但我在堆栈溢出时找不到它。提前感谢您的宝贵时间!
python - 这两个代码应该做完全一样的事情,但是第一个没有像我预期的那样工作
Python
请解释为什么这两个代码的工作方式不同。实际上我正在尝试制作一种人工智能,在最初的几代人中,人们会朝着随机的方向前进。为了保持代码简单,我自己在Brain中提供了一些随机方向。
有一个为个人提供大脑的个人课程。它还有一个功能,可以返回与父母具有完全相同大脑(意味着进入相同方向)的孩子。
我有两个代码:
第一:当父母的某些方向改变时,孩子也会改变同样的事情(或者如果孩子改变了,父母也会改变)这是我不希望发生的。
第二:这个不完全是我的(这就是为什么我真的不知道它为什么起作用)但它工作得很好。父母改变的某些方向在孩子身上没有改变,反之亦然。
请有人解释我的区别以及为什么第一个不起作用。我真的很感激你的回答。
第一:
[ [5, 2], [5, 3], [7, 4], [1, 5] ]
[ [5, 2], [5, 3], [7, 4], [1, 5] ]
第二个:
[ [5, 2], [5, 3], [7, 4], [1, 5] ]
[ [1, 2], [5, 3], [7, 4], [1, 5] ]
python-3.x - EA:Python 中列表列表的自定义交叉
谁能向我解释一下如何在列表列表上执行自定义交叉?假设我有这样的候选人:
我知道如何为单个列表进行交叉。但是实际上如何为列表列表执行此操作?
以下是单个列表的交叉方法:
以上来自基于 Python 的 inpyred 库。我正在尝试为车辆路线问题制定一个算法,其中上述列表是建议解决方案的一个示例。
java - 如何使用两个整数数组进行“交叉”
我正在尝试学习遗传算法,目前正在研究“交叉”两个“基因”。基因是一个整数数组,由 1 和 0 组成。为了举例说明我的问题,假设我们有两个基因。
交叉的预期结果,例如在位置 3 将是:
这意味着索引为 3 或以上的每个元素都将与另一个基因的等效元素交换。为此,我编写了以下方法:
然而,似乎geneB 的元素只是简单地以3 或更高的索引复制到geneA 中。控制台输出如下:
非常感谢任何解释或帮助。提前致谢!
javascript - 尝试使用第一个数组的子集“交叉”两个数组并在可能的情况下保持第二个数组的顺序
我正在尝试使用以下过程从两个父数组(交叉)生成一个新的子数组。
我定义的交叉规则是:
- 从中提取一个连续的子集,
parentArr1
并将其插入到一个新childArr
的子集的相同位置。 childArr
用来自子集的元素填充其余位置并保持子集周围parentArr2
元素的顺序。parentArr2
- 不应该有重复。
这是另一个例子:
我有很多失败的尝试来做到这一点。这是最接近的尝试。
python - 如何在 python3 中执行部分映射交叉?
我是遗传算法的新手,前几天做了一个重新创建目标字符串的算法。所以我试着做一个可以做一个魔方的。没关系,直到我进入交叉部分,意识到我不能只做一个单点交叉。所以我尝试执行部分映射的交叉,但我不能也仍然不能让它工作。我了解部分映射的交叉是如何工作的,我只是无法将它实现到 python 中。由于我的代码尚未完成,我将交叉函数隔离在不同的程序中并对其进行了更改,因此父母是一个固定列表。
有人可以更正我的代码,或者如果它完全错误,请告诉我如何在整数 1 到 9 的 2 个列表上执行部分映射交叉?另外,我很抱歉并理解我对变量的命名不是那么好,但我只是想让程序能够进行不断的编辑。
numpy - 使用 Numpy 的多点交叉
我正在尝试使用 numpy 对遗传算法群体进行交叉。我已经使用父 1 和父 2 对人口进行了切片。
但我无法找出任何 lambda 或 numpy 命令来对父母进行多点交叉。这个概念是ith row of p1
用.随机交换一些位ith row of p2
。