接了一个算法设计,要用遗传算法去解决物流运输中的车辆安排,没学过这种算法,百度了一下,还是有难度的,虽然有很多资料,但是对于初学者还是太难,而且没有实例,根本就不是太理解,今天,我就拼凑一下我看过和我理解的知识,写个入门级的实例呗。

    先来普及下,我认为比较简单的两个求最优化解的方法,一个叫模拟退火算法,一个就是现在要讲的遗传算法。

    什么叫遗传算法呢,copy一段过来。

   遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。

    其中需要了解的生物知识:

     种群(Population): 生物的进化以群体的形式进行,这样的一个群体称为种群。

  个体:组成种群的单个生物。

  基因 ( Gene ) :一个遗传因子。 

  染色体 ( Chromosome ) :包含一组的基因。

  生存竞争,适者生存:对环境适应度高的、牛B的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。


  遗传与变异 :新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。  


    更多的知识就不讲了,有兴趣的百度,我下面讲下我对这个算法的理解:


    这个算法是用来求最优解的,对于一些问题,我们是无法通过有效的步骤来 求的其最好的解决方案,但我们可以知道它的方案有哪些,而这些方案就可以想象成不同的个体,每个个体的上面都有能够区分自己的基因,然后我们通过某种方法(函数)来淘汰哪些基因不好的个体。但在这个过程中,每个个体都有可能发生基因突变,遗传变异,进而进化。但随着时间的推移,根据达尔文理论,一定只有适者生存,而活下来的个体就是我们的最优解,上面所携带的基因就是我们的解决方案。



    下面举个简单的例子,如何求下面函数的最大值,数学超级超级好的请饶过。


    遗传算法简单入门_百度


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


    遗传算法简单入门_百度_02




    遗传算法简单入门_算法_03



    遗传算法简单入门_算法_04




    遗传算法简单入门_最优解_05



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


    遗传算法简单入门_最优解_06




    遗传算法简单入门_遗传算法_07



    遗传算法简单入门_算法_08



    遗传算法简单入门_遗传算法_09



    遗传算法简单入门_最优解_10



    遗传算法简单入门_遗传算法_11



    遗传算法简单入门_算法_12



    遗传算法简单入门_遗传算法_13



    遗传算法简单入门_最优解_14



    遗传算法简单入门_最优解_15



    遗传算法简单入门_算法_16



    遗传算法简单入门_遗传算法_17



    遗传算法简单入门_遗传算法_18



    遗传算法简单入门_百度_19



遗传算法简单入门_遗传算法_20



遗传算法简单入门_最优解_21

://



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


O(∩_∩)O~



    再次回来附上我觉得别人写得比较好相关日志,大家可以参考下。


1.遗传算法入门

  2.遗传算法入门到掌握