问题标签 [evolutionary-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 投票
4 回答
1263 浏览

python - 密码细菌:进化的数学行为

我不打算在我的博客上放一个链接,但我没有任何其他方法来澄清我的真正意思。这篇文章很长,分为三部分(1 , 2 , 3),但如果你好奇的话,还是值得一读的。

很久以前(至少 5 年)我编写了一个生成“数学细菌”的 python 程序。这些细菌是具有简单的基于操作码的遗传密码的蟒蛇对象。你可以给他们一个数字,他们会根据代码的执行返回一个数字。我随机生成它们的遗传密码,并将环境选择应用于那些产生类似于预定义预期值的结果的对象。然后我让它们复制、引入突变并进化它们。结果非常有趣,因为他们的遗传密码基本上学会了如何求解简单的方程,即使对于训练数据集的不同值也是如此。

现在,这东西只是一个玩具。我有时间可以浪费,我想满足我的好奇心。但是,我认为在研究方面已经取得了一些成果……我希望在这里重新发明轮子。您是否知道像我编程的那样创建计算机内细菌的更认真的尝试?

请注意,这并不是真正的“遗传算法”。遗传算法是当您使用进化/选择来针对给定评分函数改进参数向量时。这有点不同。我针对给定的评分函数优化代码,而不是参数。

0 投票
2 回答
1710 浏览

.net - 什么是用于 .NET 的良好遗传算法 (GA) 或粒子群优化 (PSO) 框架?

我想知道你们建议用于实现 PSO 或 GA 等进化优化技术的好的、稳定的框架是什么?

我已经编写了自己的并且我喜欢它们,我有兴趣比较或添加现有的稳定的(或者如果它们是可靠且可扩展的,则只使用它们)。

0 投票
1 回答
3671 浏览

c++ - 什么是对 2d 骨架估计有用的 opencv 函数(递归质心)

可能重复:
从绘制的轮廓中“使用 Opencv 估计和可视化 2d 骨架”的最佳算法是哪个

用于 2d 骨架估计的 Opencv 函数或步骤

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 投票
3 回答
1668 浏览

evolutionary-algorithm - 遗传/进化算法和局部最小值/最大值

我遇到过几篇建议使用模拟退火之类的方法来避免局部最小值/最大值问题的帖子和文章。

我不明白为什么如果您从足够大的随机人口开始,这将是必要的。

是否只是另一项检查以确保初始人口实际上足够大和随机?还是这些技术只是产生“良好”初始种群的替代方法?

0 投票
3 回答
2690 浏览

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

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

0 投票
2 回答
275 浏览

evolutionary-algorithm - 进化算法退化为模拟退火的问题:突变太小?

我在理解进化算法时遇到了问题。我多次尝试使用这种技术,但我总是遇到同样的问题:退化为模拟退火。

可以说我的初始人口(括号中的健身)是:

A (7), B (9), C (14), D (19)

交配和突变后,我有以下孩子:

AB (8.3), AC (12.2), AD (14.1), BC(11), BD (14.7), CD (17)

在消除最弱的之后,我们得到

甲,乙,乙,交流

下一回合,AB 将再次配对,结果约为 8,将 AC 推出。下一轮,AB 再次将 B 推出(假设突变改变适应度主要在 >1 范围内)。

现在,仅仅几圈之后,池中就充满了最初最适合的候选者(A,B)和这两个的突变(AB)。无论初始池的大小如何,都会发生这种情况,只是需要更长的时间。比如说,初始人口为 50,需要 50 个回合,然后所有其他人都被淘汰,从而将整个设置转变为更复杂的模拟退火。一开始我也和自己交配了候选人,使问题恶化。

那么,我想念什么?我的突变率是不是太小了,如果我增加它们会消失吗?

这是我使用它的项目: http ://stefan.schallerl.com/simuan-grid-grad/ 是的,代码有问题,界面很糟糕,但我现在懒得修复它 - 和小心,它可能会锁定您的浏览器。更好地使用 chrome,即使认为 firefox 一次也不比 chrome 慢(可能图像比较的跟踪得到了回报,耶!)。如果有人感兴趣,可以在这里找到代码

在这里,我只是放弃了 ev-alg 的想法并进行了模拟退火。

ps:我什至不确定模拟退火——它就像进化算法,只是人口规模为 1,对吧?

0 投票
1 回答
386 浏览

java - 在 Eclipse 中设置 java 配置。多个 .param 文件

我将使用ECJ进行基因编程,而且我已经很多年没有接触过 java 了。我正在设置 Eclipse 环境,但遇到了一些问题。

ECJ 源代码有几个包,并且附带了几个示例程序。我通过转到运行配置并添加-file pathToParamsFile到程序参数来运行一个示例程序(称为 tutorial1)。这使它指向该教程的 params 文件并运行该示例。

在我正在测试的一个新示例中(来自包 gui)有两个参数文件。我尝试只指向一个参数文件,并且在控制台中运行了一个程序,但应该有一个没有加载的 GUI。

我不确定我做错了什么。任何帮助将不胜感激。

0 投票
5 回答
11317 浏览

python - 预测事件顺序的机器学习算法?

简单的机器学习问题。可能有很多方法可以解决这个问题:

有 4 种可能的事件的无限流:

'event_1', 'event_2', 'event_4', 'event_4'

事件的顺序不是完全随机的。我们将假设大多数事件的出现顺序有一些复杂的模式,而其余事件只是随机的。不过,我们并不提前知道这些模式。

收到每个事件后,我想根据过去事件的顺序来预测下一个事件将是什么。所以我的问题是:我应该为这个预测器使用什么机器学习算法?

然后预测器将被告知下一个事件实际上是什么:

问题是预测器应该维持多长时间的历史,因为维持无限的历史是不可能的。我会留给你来回答。尽管出于实用性考虑,答案不能是无限的。

所以我相信这些预测必须通过某种滚动历史来完成。因此,添加新事件和使旧事件过期应该是相当有效的,例如,不需要重建整个预测器模型。

对我来说,特定的代码而不是研究论文将为您的回复增加巨大的价值。Python 或 C 库很好,但任何事情都可以。

更新:如果每一轮可以同时发生多个事件怎么办。这会改变解决方案吗?

0 投票
1 回答
124 浏览

java - 不是发送数字,而是将代码传递给基因编程中的个人?欧洲法院

我将 ECJ 与 Java 一起使用。我有一群人,我都想拥有相同的大脑。

基本上,我想用 GP 进化大脑。我想要if 语句的“ if-on-enemy-territory”和“ ”之类的东西,以及终端的 “ ”或“ ”或“ ”之类的东西。if-sense-targetgo-homemove-randomlyshoot

但是,这些语句需要是完全可执行的 Java 代码。我怎么能用 ECJ 做到这一点?

例如:

我希望有一个名为“ moveRandom”的终端。如果我要在我的士兵课程中编写这个代码,它看起来像:

现在我怎样才能制作一个将执行此代码的终端?