先来普及下,我认为比较简单的两个求最优化解的方法,一个叫模拟退火算法,一个就是现在要讲的遗传算法。
什么叫遗传算法呢,copy一段过来。
遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。
其中需要了解的生物知识:
个体:组成种群的单个生物。
基因 ( Gene ) :一个遗传因子。
染色体 ( Chromosome ) :包含一组的基因。
生存竞争,适者生存:对环境适应度高的、牛B的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。
更多的知识就不讲了,有兴趣的百度,我下面讲下我对这个算法的理解:
这个算法是用来求最优解的,对于一些问题,我们是无法通过有效的步骤来 求的其最好的解决方案,但我们可以知道它的方案有哪些,而这些方案就可以想象成不同的个体,每个个体的上面都有能够区分自己的基因,然后我们通过某种方法(函数)来淘汰哪些基因不好的个体。但在这个过程中,每个个体都有可能发生基因突变,遗传变异,进而进化。但随着时间的推移,根据达尔文理论,一定只有适者生存,而活下来的个体就是我们的最优解,上面所携带的基因就是我们的解决方案。
下面举个简单的例子,如何求下面函数的最大值,数学超级超级好的请饶过。

怎么求呢?求导那些就不要告诉我啦,其实这个和数学建模有点像O(∩_∩)O~




其实,这篇日志主要做的不是教会你遗传算法,而是补充说明一下网上没有简单实例的完整算法的不足,下面我就贴出我的算法,亲测有用,可以解决上面的问题。
















总结:遗传算法真的很有意思哦,来自于生物知识,而退火算法,来自于金属冶炼,我觉得这个世界太神奇了,好多东西都是相通的,不说了,我可以准备去上体育课了。
O(∩_∩)O~
1.遗传算法入门
2.遗传算法入门到掌握