Python遗传算法框架使用实例(一)使用Geatpy实现句子匹配
在前面几篇文章中,我们已经介绍了高性能Python遗传和进化算法框架——Geatpy的使用。
https://blog.csdn.net/qq_33353186/article/details/82014986
https://blog.csdn.net/qq_33353186/article/details/82020507
https://blog.csdn.net/qq_33353186/article/details/82021750
本篇就一个案例进行展开讲述:
回顾一下Geatpy的安装方法,在上面的第一个链接的文章里也有详细讲解。
我们都听过“无限猴子定理”,说的是有无限只猴子用无限的时间会产生特定的文章。在无限猴子定理中,我们“假定”猴子们是没有像人类那样“智能”的,而且“假定”猴子不会自我学习。因此,这些猴子需要“无限的时间"。
而在遗传算法中,由于采用的是启发式的进化搜索,因此不需要”无限的时间“就可以完成类似的工作。当然,需要产生的文章篇幅越长,那么就需要越久的时间才能完成。
下面以产生"Tom is a little boy."的句子为例,讲述如何利用Geatpy实现句子的搜索。之前的文章中我们已经讲述过如何使用Geatpy的进化算法框架实现遗传算法编程。这里就直接用框架。
编写"main.py”执行脚本,写入以下代码:
代码中调用了Geatpy内置的sga_new_real_templet编程模板,其中参数的含义可以使用help(ga.sga_new_real_templet)查看,也可以参见源码:
https://github.com/geatpy-dev/geatpy/blob/master/geatpy/source-code/templets/sga_new_real_templet.py
运行结果如下:
最优的目标函数值为:0.0
最优的控制变量值为:
84.0
...
46.0
最优的一代是第1624代
时间已过4.467496871948242秒
Tom is a little boy.
Geatpy的sga_new_real_templet编程模板实现了一个改进的遗传算法。采用精英保留策略,使算法的收敛性大大增强。由本例可见,使用Geatpy框架实现遗传算法非常简单。Geatpy的强大之处初现。
在后面的文章中我们将对更多的编程案例进行详解。欢迎继续跟进,感谢!