以前在学校的时候,写了一个博客介绍遗传算法,并通过Matlab实现了该算法。但是很多读者反馈说代码运行不起来。
我因为现在没有Matlab工具了,而且Matlab还是挺贵的,所以还是用Python实现以下遗传算法,供大家学习。
写这个博客主要是因为我在学校学习遗传算法的时候,没学会,只是大概知道,但是完全用不起来。但是这个算法还是很有用的,所以还是想着记录一下,让在课堂上没学会的同学,可以在这里学会,并且可以着手。
1、遗传算法介绍
遗传算法,模拟达尔文进化论的自然选择和遗传学机理的生物进化构成的计算模型,一种不断选择优良个体的算法。谈到遗传,想想自然界动物遗传是怎么来的,自然主要过程包括染色体的选择,交叉,变异(不明白这个的可以去看看生物学),这些操作后,保证了以后的个体基本上是最优的,那么以后再继续这样下去,就可以一直最优了。
2、解决的问题
先说说自己要解决的问题吧,遗传算法很有名,自然能解决的问题很多了,在原理上不变的情况下,只要改变模型的应用环境和形式,基本上都可以。但是遗传算法主要还是解决优化类问题,尤其是那种不能直接解出来的很复杂的问题,而实际情况通常也是这样的。
本部分主要为了了解遗传算法的应用,选择一个复杂的二维函数来进行遗传算法优化,函数显示为y=10*sin(5*x)+7*abs(x-5)+10,这个函数图像为:
Python实现代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import numpy as np import matplotlib.pyplot as plt x=np.arange(0,10,0.001) y=10*np.sin(5*x) + 7*np.abs(x-5) + 10 plt.plot(x,y) plt.show()