问题标签 [genetic]

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 投票
1 回答
406 浏览

list - 突变问题 - Clojure

无法更改表示为列表的函数元素。

随机函数代码:

我还将提供一个突变功能,但仍然不够好。我需要能够评估我的陈述,所以以下内容仍然不够。

(旁注:你有任何学习clojure的链接/书籍吗?)

0 投票
4 回答
7993 浏览

c# - 如何在 C# 中绘制 XY 图?

我正在用 C# 开发一个处理特定遗传算法问题的应用程序。算法的执行提供了绘制图表所需的输出参数。图表由 2 个独立的轴组成,假设 X 是生成数,Y 表示相应的适应度函数最大值。更具体地说,我已经从 Excel 上传了图片,所以这里是:

http://img97.imageshack.us/img97/2046/graphnb.png

我的首要任务是通过允许用户(设置随机执行因素,如突变百分比、人口和世代数量、精英个体数量等)在 C# 中生成的“表单”查看生成的 XY 图,从而使该应用程序功能齐全. 我找到了部分解决我的问题的网站,但这不是重点(http://csharp.net-informations.com/excel/csharp-excel-chart-picturebox.htm)。所以我问是否有办法通过不使用任何其他应用程序来实现上述图形,但也许只有 C# 库和函数用于绘图或类似的东西?希望我说清楚了。此致。

0 投票
1 回答
59 浏览

c# - 其他类体中具有许多类型参数的类的别名(C#)

我声明了一个具有许多类型参数的类:

我怎样才能使用这样的别名:

0 投票
2 回答
473 浏览

c++ - C++ 遗传编程:调用链接器/编译器,执行编译的程序和管道输入/输出

这是一个通用问题,虽然我很确定它的某些部分已经得到回答,但我想要的是意见,而不是广泛的讨论。我打算写一篇关于进化计算和遗传编程的硕士论文,我想请 Linux/C++ 专家的意见,是否可以从遗传程序创建源代码文件,调用 gcc 编译它们,如果他们失败了编译以捕获它们失败的那些原因,如果它们确实编译以执行编译的程序(作为新进程),然后能够向该程序发送输入并捕获输出和任何引发的异常(或崩溃)。我知道这个话题太宽泛了,但我想知道是否有人认为这是不可撤销的、愚蠢的尝试,或者是否有更好的方法来做到这一点。

0 投票
4 回答
2953 浏览

md5 - Is it possible to break md5 hash using genetic algorithms?

With a knowledge of how md5 works, would it be possible to use a population based algorithm such as genetic programming to break simple passwords?

For examples, given a md5 hash for a string that is between 5 to 10 characters, we are to try to get the string back.

If yes, what could be

  • A good representation for an individual of the population
  • Selction criteria
  • Recombination methods

This is to understand the application of genetic algorithms and to know if anyone has done anything of this sort.

0 投票
2 回答
1938 浏览

genetic-algorithm - 用遗传算法、适应度、变异解决填字游戏

我正在努力为学校做一个实验室。我正在尝试使用遗传算法解决填字游戏。问题是这不是很好(它仍然太随机)我将尝试简要说明我的程序现在是如何实现的:

如果我有拼图(# 是块,0 是空白)

以及作为该谜题解决方案候选词的集合。我的 DNA 只是作为一维阵列的矩阵。

我的第一组人从我的话包含的字母池中随机生成了 DNA。

我使用轮盘赌选择进行选择。有一些关于组合和突变机会的参数,但如果发生突变,那么我总是会改变 25% 的 DNA。我用我的字母池中的随机字母对其进行更改。(这可能会产生负面影响,因为突变会破坏已经形成的单词)

现在是适应度函数:我横向和纵向遍历矩阵:如果我找到一个单词然后 FITNESS += word.lengh +1

如果我发现一个字符串是某个单词的一部分,那么 FITNESS += word.length / (puzzle_size*4) 。无论如何,它应该给出一个介于 0 和 1 之间的值。因此它可以从“工具”中找到“到”并将 X 广告到 FITNESS,然后在它从“工具”中找到“太”并将另一个 Y 添加到 FITNESS 之后。

我的几代人实际上并没有随着时间的推移而改善。它们看起来是随机的。因此,即使在 400 代之后,池中的 1000-2000(这些数字并不重要),当解决方案应该有 6 个单词时,我也会得到一个包含 1-2 个单词(2 或 3 个字母)的解决方案。

0 投票
1 回答
135 浏览

r - R中的输入数组

您好,请找到下面提到的代码。我想要的是根据我想要进行的某些条件检查向我的数组添加值。如果这些值是合格的,那么它们应该添加到数组中,否则它们应该被丢弃。但是,我无法获得所需的数组。在这方面的任何帮助都会有很大帮助。

我的代码是:

所以我想做的就是只将那些数据添加到长度小于 30 的数组b中。Y

0 投票
2 回答
2546 浏览

algorithm - 遗传算法和俄罗斯方块

我使用遗传算法创建了一个俄罗斯方块播放器,并面临一些问题。我已经阅读了很多相关的作品,但他们没有给我足够的关于 GA 的细节。

问题是我的代理似乎很快就卡住了……我使用评估函数涵盖了 4 个特征:高度、覆盖的孔、平整度和清除的行数。我读了一些使用相同评估的论文,并且能够执行数千行。

在 600 代之后,拥有 100 名智能体,最好的智能体平均只能做 260 行,这是蹩脚的。所有代理都在演奏相同的乐曲序列。

我的 GA 的详细信息:

世代:600 人口:100

基因:4 个浮点值的数组,介于 0 和 1 之间。

均匀交叉以一定的概率发生,并以一定的概率在两个父母之间交换基因。

突变以一定的概率发生,在这里我尝试了 3 种不同的方法:交换基因,用随机值替换基因,或向基因添加一些噪声值。

我有 50% 的精英率,并注意到一些优秀的特工被选中并生出更差的特工,污染了人口。

选择是轮盘赌...

如果有人能给我关于交叉和变异的最佳方法的详细信息,我很感激!

谢谢,很抱歉这么长的帖子!

0 投票
1 回答
14981 浏览

matlab - 在 Matlab 中使用遗传算法找到“y=x*x”的最小值

有人可以帮我解决这个问题吗?我是 Matlab 的新手......而且我有点难以理解如何在 Matlab 中创建和使用遗传算法。如果有人可以帮助编写一些非常简单的代码来搜索指定函数的最小值/最大值。我读到应该使用 gatool ......但我无法理解 Matlab 帮助网络的示例。我正在执行以下步骤:

  1. 在文本编辑器中,我输入下一个:

    /li>
  2. 然后我启动GATOOL并指定这个函数,比如@parabola

  3. 设置变量数(等于 2)
  4. Initial range = [-10;10].
  5. 其他参数设置为默认

    当我按下Start按钮时,我看到了一个结果:

    Fitnessfcn 中的错误:输入参数“x”未定义。

0 投票
1 回答
734 浏览

algorithm - TSP的GA算法方法

我建立了一个GA算法来解决TSP。

这是在 Norvig 的书 (AIAMA) 中的一个练习。他建议我们阅读 Larrañaga 对陈述等问题的看法。我在那里学习了一些交叉运算符和突变,并尝试了其中的一些,看看哪个更适合我。我还根据每条路径的成本详细阐述了一个适应度函数。

好吧,尽管我对我的算法设计有很多疑问,但我以前从未使用过 AI,所以我不知道我的方法是否适用于 GA。

这是我所做的:

我采用了路径向量(我的初始人口)

然后在每个循环中,我通过增加成本顺序来组织这个向量,并在这个向量中选取最好的 X 路径并删除其他路径。

然后我应用 XOver 和 Mutation(以一定的速率)并将它们放在向量的旧删除值的位置。

然后我做同样的事情(订单向量 - 提取最佳等)

并继续这样做,直到它稳定下来。

这是一个好方法吗?如果不是给我一些北方。因为当我选择了最好的并且没有保留它们(只是通过 Xover 和突变从它们中创建了一个全新的流行音乐)时,我没有得到好的结果。这样(保留最好的——在一些实验中,我只保留最好的)我有更好的结果,结果总是收敛并且很快

状态表示:对于状态表示,我选择使用路径表示(我从一开始就在使用它,并在我阅读了 Larrañaga 等之后决定坚持使用它),如下所示:假设我们有 5 个城市和访问第一个城市,然后是第二个,然后是第三个......我们的路径表示将是 (1, 2, 3, 4, 5)

初始人口生成:实际上我是生成代表城市的随机点(这就是本书要求我做的,在封闭的正方形中生成随机点) - 但为了比较,我生成了一个人口并在比较时坚持使用它结果——我想如果我不坚持一个特定的人群,我就不会知道我的进步

最适合的人:最适合的人是那些旅行费用最高的人。(我不知道我是否应该 - 在这个问题中 - 使用其他东西作为参数

交叉:我尝试了一些交叉运算符,并将我的结果与书中介绍的结果进行了比较,最后使用了一个 Order CrossOver(Larrañaga 等人(1999)):这个交叉从两个随机切割(形成一个子路径)父路径,然后从另一个父路径(从第二个剪切开始,而不是在位置“0”)复制路径的其余部分(该子路径内尚未访问的城市) - 添加它们出现在另一个路径中的城市父母。

例如:路径 (1 2 3 4 5) (3 4 2 1 5) 选择子路径 (234) 和 (421) 作为后代 (5 |2 3 4| 1) (5 |4 2 1| 3) <- | 里面的部分 | 来自父母一方,另一部分来自另一方父母

突变:对于突变,我选择了 IVM(反转突变)方法。它从原始路径中获取一个子路径,并将其插入(反转)到一个随机点。

示例:路径(1 2 3 4 5)子路径(2 3 4)和5后随机插入

生成:(1 5 | 4 3 2)