本文主要是介绍遗传算法简单入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接了一个算法设计,要用遗传算法去解决物流运输中的车辆安排,没学过这种算法,百度了一下,还是有难度的,虽然有很多资料,但是对于初学者还是太难,而且没有实例,根本就不是太理解,今天,我就拼凑一下我看过和我理解的知识,写个入门级的实例呗。
先来普及下,我认为比较简单的两个求最优化解的方法,一个叫模拟退火算法,一个就是现在要讲的遗传算法。
什么叫遗传算法呢,copy一段过来。
遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。
其中需要了解的生物知识:
种群(Population):
生物的进化以群体的形式进行,这样的一个群体称为种群。
个体:组成种群的单个生物。
基因 ( Gene ) :一个遗传因子。
染色体 ( Chromosome ) :包含一组的基因。
生存竞争,适者生存:对环境适应度高的、牛B的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。
遗传与变异
:新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。
更多的知识就不讲了,有兴趣的百度,我下面讲下我对这个算法的理解:
这个算法是用来求最优解的,对于一些问题,我们是无法通过有效的步骤来 求的其最好的解决方案,但我们可以知道它的方案有哪些,而这些方案就可以想象成不同的个体,每个个体的上面都有能够区分自己的基因,然后我们通过某种方法(函数)来淘汰哪些基因不好的个体。但在这个过程中,每个个体都有可能发生基因突变,遗传变异,进而进化。但随着时间的推移,根据达尔文理论,一定只有适者生存,而活下来的个体就是我们的最优解,上面所携带的基因就是我们的解决方案。
下面举个简单的例子,如何求下面函数的最大值,数学超级超级好的请饶过。
怎么求呢?求导那些就不要告诉我啦,其实这个和数学建模有点像O(∩_∩)O~
其实,这篇日志主要做的不是教会你遗传算法,而是补充说明一下网上没有简单实例的完整算法的不足,下面我就贴出我的算法,亲测有用,可以解决上面的问题。
://
总结:遗传算法真的很有意思哦,来自于生物知识,而退火算法,来自于金属冶炼,我觉得这个世界太神奇了,好多东西都是相通的,不说了,我可以准备去上体育课了。
O(∩_∩)O~
再次回来附上我觉得别人写得比较好相关日志,大家可以参考下。
1.遗传算法入门
2.遗传算法入门到掌握
这篇关于遗传算法简单入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!