问题标签 [genetic-algorithm]

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 投票
11 回答
1119 浏览

math - 对数组的单调性进行评级的算法(即判断数组的“排序性”)


编辑:哇,很多很棒的回应。是的,我使用它作为适应度函数来判断遗传算法执行的排序的质量。因此,评估成本很重要(即,它必须快速,最好是O(n)。)


作为我正在玩弄的 AI 应用程序的一部分,我希望能够根据其单调性(也称为“排序性”)对候选整数数组进行评分。目前,我正在使用一种计算最长排序运行的启发式算法,然后将其除以数组的长度:

这是一个好的开始,但它没有考虑到排序子序列可能存在“团块”的可能性。例如:

这个数组被分成三个排序的子序列。我的算法将它评为只有 40% 的排序,但直观地说,它应该得到比这更高的分数。这种事情有标准算法吗?

0 投票
1 回答
141 浏览

.net - GA 虚拟机框架

有谁知道任何用于在虚拟机中演化指令集以解决抽象问题的 .NET 遗传算法框架?我对一个框架特别感兴趣,它允许虚拟机在池中自我传播,并根据由具有“良好”输出的数据集确定的适应度函数进行进化,给定预期的输入。

0 投票
5 回答
3035 浏览

mathematical-optimization - 遗传算法

我正在尝试实现一个遗传算法来计算Rastrigin 函数的最小值,但我遇到了一些问题。
我需要将染色体表示为二进制字符串,并且 Rastrigin 的函数将数字列表作为参数,如何将染色体解码为数字列表?
Rastrigin 还希望列表中的元素为 -5.12<=x(i)<=5.12 如果我生成染色体时会产生不在该区间内的数字,会发生什么情况?

0 投票
3 回答
2690 浏览

python - 针对 TSP 问题建议的 GA 运算符?

我正在构建一个遗传算法来解决旅行商问题。不幸的是,我在突变出它们并获得更好的结果之前达到了可以维持一千多代的高峰。在这种情况下,哪些交叉和变异算子通常做得很好?

0 投票
1 回答
575 浏览

algorithm - 你有生产中的遗传算法吗?

在生产中使用遗传算法是个好主意吗?

如果您正在使用它:在什么情况下?选择主题有什么好处?您可以轻松地添加对算法的更改吗?

0 投票
2 回答
438 浏览

genetic-algorithm - 特殊调度算法(模式扩展)

问题
您认为遗传算法是否值得尝试解决以下问题,或者我会遇到局部最小值问题吗?

我认为问题的某些方面对于生成器/健身功能样式设置来说可能很棒。(如果你搞砸了一个类似的项目,我很乐意收到你的来信,而不是做类似的事情)

感谢您提供有关如何构建事物并正确解决此问题的任何提示。


我正在寻找一个很好的调度算法来解决以下现实世界的问题

我有一个这样的 15 个插槽的序列(数字可能从 0 到 20 不等):

(并且这种类型总共有 10 种不同的序列)

每个序列都需要扩展成一个数组,其中每个插槽可以占据 1 个位置。

矩阵的约束是:

  • [row-wise, ie Horizo​​ntal] 放置的个数,必须是 11 或 111
  • [row-wise] 1的两个序列之间的距离需要最小为00
  • 每列的总和应与原始数组匹配。
  • 应该优化矩阵中的行数。

然后数组需要分配 4 个不同的矩阵之一,这些矩阵可能有不同的行数:

A、B、C 和 D 是现实世界的部门。负载需要在 10 天期间合理公平地放置,以免干扰其他部门的目标。

每个矩阵都与 10 个不同原始序列的扩展进行比较,因此您有:

可能会保留这些位置上的某些位置(不确定我是否应该将其仅保留/不保留或基于功能)。 预留的位置可能是会议和其他活动

每行的总和(例如所有 A)应在 2% 内大致相同。即 sum(A1 到 A10) 应该与 (B1 到 B10) 等大致相同。

行数可能会有所不同,因此例如:

A1:5 行 A2:5 行 A3:1 行,其中单行可以是:

ETC..

子问题*

我很乐意只解决部分问题。例如能够输入:

并获得一个适当的序列数组,其中 1 和 0 在上述约束之后的行数上最小化。

0 投票
3 回答
323 浏览

python - 如何在python中将字符串和整数作为位字符串使用?

我正在用python开发一个遗传算法,染色体是由字符串和整数组成的。为了应用遗传操作,我想将这些整数和字符串组转换为位字符串。

例如,如果一个染色体是:

我希望它变成这样:

(这不是实际的翻译)。所以......我该怎么做?染色体将包含相同数量的字符串和整数,但这个数字可能因运行的一种算法而异。

需要明确的是,我想要获得的是连接的染色体中每个元素的位表示。

如果您认为这不是应用遗传算子(例如变异和简单交叉)的最佳方式,请告诉我!我对新想法持开放态度。

非常感谢!曼努埃尔

0 投票
3 回答
278 浏览

search - 如何避免遗传算法中的无效搜索空间?

我正在为一个学校项目开发一个 GA,我注意到在评估我的健身功能时,一个人相当于它的倒数。

例如,集合(1, 1, -1, 1)等价于(-1, -1, 1, -1)。为了缩小我的搜索空间并更有效地找到解决方案,如何避免我的交叉在搜索空间的后半部分进行搜索?

0 投票
2 回答
993 浏览

java - 在 GUI 中使用 GA

抱歉,如果我在移动设备上写这篇文章时不清楚,我正在努力让它快点。

我用二进制编码(基因)编写了一个基本的遗传算法,它建立了一个适应度值,并使用锦标赛选择、变异和交叉进行了多次迭代。作为一个基本的命令行示例,它似乎可以工作。

我遇到的问题是在 GUI 中应用遗传算法,因为我正在编写一个迷宫解决程序,该程序使用 GA 通过迷宫找到方法。如何将我的随机二进制编码基因和适应度函数(将所有二进制值相加)转化为控制机器人绕迷宫的方法?我已经用 Java 构建了一个基本的 GUI,由迷宫般的标签(如网格)组成,可用的路线是蓝色的,墙壁是黑色的。

重申一下,我的 GA 表现良好,并且包含任何典型的 GA(适应度方法、获取和设置人口、选择、交叉等),但现在我需要将其插入 GUI 以让我的迷宫运行。为了让机器人可以根据 GA 所说的内容向不同方向移动,需要去哪里?如果可能的话,粗略的伪代码会很棒

根据要求,Individual 是使用单独的类 (Indiv) 构建的,所有主要工作都在 Pop 类中完成。当一个新个体被实例化时,一个整数数组表示该个体的基因,基因从 0 到 1 之间的数字中随机选取。适应度函数只是将这些基因的值加在一起,并且在 Pop 类中处理选择,两个选定个体的突变和交叉。没有什么其他的了,命令行程序只是显示了 n 代的进化,每次迭代的总适应度都在提高。

编辑:现在开始变得更有意义了,尽管有一些事情困扰着我......

正如 Adamski 建议的那样,我想使用下面显示的选项创建一个“代理”。我遇到的问题是随机位串在这里发挥作用。代理知道墙在哪里,并以 4 位字符串(即 0111)布置,但这对随机 32 位字符串有何影响?(即10001011011001001010011011010101)如果我有以下迷宫(x是起点,2是目标,1是墙):

如果我向左转,我将面向错误的方向,如果它向前移动,代理将完全离开迷宫。我假设第一代绳子将是完全随机的,它会随着适应度的增长而发展,但我不知道绳子在迷宫中的工作方式。

所以,要直截了当...

适应度是代理能够移动并且靠墙时的结果。

基因是一串 32 位,分成 16 组,每组 2 位以显示可用的动作,机器人移动这两个位需要从代理中传递四个位,显示其在墙壁附近的位置。如果移动是要越过墙,则移动不会被认为是无效的,如果移动被移动并且如果找到新的墙,那么适应度就会上升。

是对的吗?

0 投票
2 回答
1027 浏览

artificial-intelligence - 量子 PSO 和带电 PSO(PSO = 粒子群优化器)

我需要实现 PSO(即带电和量子 PSO)。我的问题是:

  • 每个 PSO 使用什么速度更新策略(同步或异步粒子更新)
  • 每个 PSO 使用什么社交网络拓扑(冯诺依曼、环、星、轮、金字塔、四个集群)

目前,这些是我的问题。您的所有帮助将不胜感激。

谢谢。