例子 配对句子 - 进化算法 (Evolutionary-Algorithm) | 莫烦Python
切换视频源:

例子 配对句子

作者: 莫烦 编辑: 莫烦 2017-08-12

学习资料:

要点

如果对遗传算法有兴趣的朋友, 强烈推荐先看看我制作的动画短片 什么是遗传算法, 在动画里有了基础的了解, 在接下来的内容中, 你就如鱼得水啦.

接着上节对遗传算法的基本应用, 在这一节中, 我们用通过不同的编码 DNA 方式, 不同的 fitness 定义方式来让程序生成出自己设定的句子来.

fitness 和 DNA

上次我们提到过 GA 中最重要的就是怎么定义 fitness function, 怎么给 DNA 编码. 这次我们来句另一个例子. 比如我们有一个要生成的句子:

可以想象, 我们能够用这个句子长度的 DNA 来生成这个句子. 每个 DNA 代表一个字母. 如果对上的字母越多, 我的 fitness 就越高. 因为用一个 class 来代表 GA 会比较方便, 我们之后都用 class 来写.

而 DNA 呢, 可以都用数字, 而且可以用 ASCII 编码. 将数字转化成字符, 或者字符转数字都可以, 我们为了统一, DNA 都用数字形式.

而字符转数字可以用 numpy 的这个功能:

进化啦

如果 GA 用一个 class 代替, 那 select, mutate, crossover 都是 class 里的功能了.

上面这三个功能的算法和上节内容差不多. 所以不会再详细说明了. 你也可以去我的 github 看全部代码. 但是这个 class 中还有一个功能来将上面的三个功能联系起来. 其实这就是上节内容里面的 forloop 中的内容.

有了上面定义的这些功能, 再将其他的小部分补全. 我们就能很容易的使用这个 GA class 了.

赶紧试试这套github的[全部代码.

接下来几节内容, 我们就来看看在不同的情况中如何根据不同的标准选择 fitness 和 DNA 编码.


降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。

    进化算法 (Evolutionary-Algorithm)