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

javascript - 简单 AI - JavaScript(使用 jQuery 制作动画)

首先,我想让你知道我已经编程了几年(主要是基于 C 的语言、iOS 开发、Web 东西等)作为一种爱好,现在我对创建一个简单的 AI 产生了兴趣(大多数人们从井字游戏开始,是的,但我有兴趣使用基因编程原理制作一些东西)。我希望读者知道这一点的原因是,如果答案不太复杂(因为我还没有参加大学计算机科学课程,对孩子来说不太难理解),我将不胜感激。

这是我的目标:

条款

organsim:一个 CSS div
种群:一组生物 (5 或 10)
食物来源:另一个 CSS div

过程

  1. 产生了一个种群,每个种群最初似乎都具有相同的表型属性,但他们的技能不同(为此,速度)
  2. 生成单一食物来源(每次都相同)
  3. 在环境建立大约 5 秒后(步骤 1 和 2),生物种群需要找到一种竞争性地到达食物来源的方法
  4. 只有一种有机体可以接触到食品。到达它后,环境被重置,除了上次找到食物的生物现在受益并且它的速度等级可能会增加,而其他做得特别糟糕的生物可能会变得更慢或被终止
  5. 重复过程;用户可以观察种群的特征并查看哪些特征在进化上取得了成功等。

附加信息

如您所见,上述步骤几乎模拟了进化,但方式非常简单(与动物的真实生活情况相比,条件更少);现在这就是我在这里问的原因:我完全迷失了。我真的不知道从哪里开始(除了生成人口,我很可能会这样做以及让他们通过 jQuery 动画移动)。但能够让他们吸引食物来源是我现在做不到的。所以,我想帮助指出正确的方向。

0 投票
1 回答
683 浏览

algorithm - 多目标优化:使用 NSGA 的选择与使用 VEGA 的选择

我想知道在多目标优化中的选择上下文中,向量生成遗传算法(VEGA)和非支配排序遗传算法(NSGA)算法之间存在什么区别?

(我知道 NSGA 是基于帕累托的,而 VEGA 不是基于帕累托的。)

0 投票
1 回答
6823 浏览

python - Theo Jansen 行走机构的进化算法

有一位荷兰艺术家/工程师创造了一种非常精细的行走机制。工作原理可以看这里:

http://www.strandbeest.com/beests_leg.php

奇怪的是,他使用自制的进化算法来计算理想的链接长度,在页面底部进行了描述。

我创建了一个 Python 脚本来直观地分析循环的接地部分,它必须满足两个要求:

  1. 尽量笔直,以免上下晃动;
  2. 保持速度尽可能恒定,以免一只脚拖到另一只脚上;

这两个标准将产生“轮状”效应,机器直线前进而不会浪费动能。

问题是:

“你有什么建议可以用简单的进化迭代公式来优化腿长(通过在下面的代码中插入正确的突变),以便在考虑到上述两个标准的情况下改善步行路径?”

编辑:关于基因组候选者的“拟合规则”的一些​​建议:

  • 考虑循环的“下部”(接地),因为它对应于曲柄转数的三分之一(注意下部可能具有非水平斜率并且仍然是线性的);
  • 对这个“接地”部分的点位置应用线性回归;
  • 从线性回归计算垂直变化(最小二乘?)
  • 通过与回归线平行的一点与前一点之间的差异计算速度变化;
  • (可选)绘制这些“误差函数”的图表,可能允许在视觉上选择突变体(嘘……;o)。

这是我在 Python + GTK 中的代码,它对问题提供了一些直观的见解:(编辑:现在参数化的幻数会受到mut's 值的变异)

0 投票
1 回答
1821 浏览

geometry - 通过遗传算法进行二维形状优化

我最近才开始学习遗传算法,现在正尝试在物理模拟中的 2D 形状优化中实现它们。模拟为每个形状生成一个标量。(我想这有点类似于 boxcar2d http://boxcar2d.com/

二维形状实际上是几个二维“子形状”的结合。每个子形状都存储为角度/半径列表。然后将 2D 形状存储为子形状列表的列表。这是我现在的染色体。

现在为了健身,我可能会使用模拟产生的标量。我的问题是,我应该如何进行选择和繁殖过程?锦标赛会更合适,还是我想将截断与比例选择结合使用?另外,你如何找到一个好的突变率/种群大小等

抱歉这么多问题,但提前谢谢。我真的不知道从哪里开始。

0 投票
2 回答
955 浏览

math - 遗传算法的适应度函数和选择

我正在尝试设计一个非线性适应度函数,其中我最大化变量 A 并最小化变量 B。问题是最大化 A 在单个数字值上更为重要,几乎是对数。B 需要最小化,与 A 相比,它在较小(小于 1)时变得不那么重要,而在较大(>1)时变得更重要,因此呈指数衰减。

主要目标是优化 A,所以我猜一个类比是 A=利润,B=成本

我应该以保持一切积极为目标,以便我可以使用轮盘赌选择,还是使用等级/锦标赛类型的系统会更好?我的算法的目的是优化形状。

谢谢

0 投票
1 回答
251 浏览

python - 多处理 | 抓住一个退出的口译员

我正在研究一个进化计算问题,我正在使用出色的ECSPY模块来实现它。我使用的适应度值来自一个非常复杂的动力学模拟。问题是我不喜欢让我的模拟炸弹防弹的方法;它非常没用,因为进化过程可能会出现simu引擎无法解决的情况。然而,约束生成器返回可解决的场景是过度约束的事情。

所以我的方法很简单;如果模拟时间太长,或者崩溃,好吧,我会让达尔文的仁慈处理它

我正在使用多处理模块来评估候选人的适合度。如何在几秒钟内捕获一个有段错误的解释器或杀死它?

提前谢谢了,

-jf

0 投票
4 回答
535 浏览

algorithm - 我可以始终将仅可变算法转换为单一分配并且仍然有效吗?

上下文

这个问题的背景是我想玩基因表达编程(GEP),一种进化算法的形式,使用Erlang。GEP 使用基于字符串的 DSL,称为“ Karva notation ”。Karva 表示法很容易翻译成表达式解析树,但翻译算法假设实现具有可变对象:不完整的子表达式在翻译过程的早期创建,并且它们自己的子表达式稍后用原来的值填充在创建它们时未知。

Karva 表示法的目的是保证在没有任何昂贵的编码技术或遗传密码更正的情况下创建语法正确的表达式。问题是,对于像 Erlang 这样的单赋值编程语言,我必须在填充每个子表达式时不断地重新创建表达式树。这需要一个便宜的 - O(n)?- 更新操作并将其转换为可以在指数时间内完成的操作(除非我弄错了)。如果我找不到将 K 表达式转换为表达式树的有效函数算法,那么 GEP 的一个引人注目的特性就会丢失。

问题

我很欣赏 K 表达式翻译问题非常模糊,所以我想要的是关于如何将一种固有的非功能性算法(利用可变数据结构的算法)转换为不具有功能性的算法的建议。纯函数式编程语言如何适应计算机科学早期产生的许多算法和数据结构,这些算法和数据结构依赖于可变性来获得所需的性能特征?

0 投票
1 回答
2311 浏览

python - 使用 Pyevolve 进行帕累托排名

我目前正在使用 Pyevolve 包来解决一些遗传算法问题。我想知道在 Pyevolve 包中是否有任何使用 Pareto 排名的例子,因为我有多个评估函数。

如果不存在,您能否提供一些帕累托排名算法的伪代码。我想自己实现它。

谢谢!!

0 投票
2 回答
17144 浏览

artificial-intelligence - 如何定义适应度函数?

我正在开发一个项目,该项目将具有一组选定的数据,并且每个数据将具有不同的属性。我将需要使用适应度函数来使用属性选择与我选择的场景最匹配的数据。

但是,我真的没有找到任何解释如何定义我自己的适应度函数的网站。我所拥有的只是它是遗传算法的一部分,这就是我所拥有的。那么,我可以在这里得到一些指示吗?

0 投票
2 回答
300 浏览

hash - 哈希函数是否与进化算法的基本假设相矛盾?

  1. 进化算法使用适应度函数来选择跨代生存的候选者(“适者生存”)。我相信所有适应度函数都假设候选人的值越接近期望值,他们的输入(“键”)必须越接近期望的输入。

  2. 加密散列函数具有“生成具有给定散列的消息是不可行的”的属性。我理解这意味着值的“接近性”与键的“接近性”之间几乎没有相关性或没有相关性。

将这两者放在一起,这是否意味着“适者生存”假设对于加密哈希函数是错误的?意思是,如果您想使用进化算法来尝试找出密码哈希值的倒数,那么适应度函数会将您引向错误的方向。值的“接近性”和键的“接近性”之间的相关性是进化算法的先决条件吗?