微拾吧 关注:51贴子:2,732
  • 18回复贴,共1

遗传算法-笔记

只看楼主收藏回复



IP属地:广东来自Android客户端1楼2017-03-20 21:22回复
    【背景】
    求解货郎担(TSP)问题:遍历144两两互联的城市,求最短路径。
    TSP属于NP难问题,有生之年程序跑不完系列。
    蛮力求解的话,时间复杂度是144!,用斯特林公式近似一下,约等于5.547082*10^249。


    IP属地:广东来自Android客户端2楼2017-03-20 21:24
    收起回复
      【链接材料】:近来,有人对拉普拉斯妖分析数据的能力提出一个极限。这个极限是由宇宙最大熵、光速、以及将信息传送通过一个普朗克长度所需要的时间得来的,约为10^120比特。在宇宙开始以来所经历过的时间以内不可能处理比这个量更多的数据。


      IP属地:广东来自Android客户端3楼2017-03-20 21:36
      回复
        最初在演化池随机生成200个长度为144数组(个体),数组每一个元素都是城市编号。对每一个数组计算长度,是为其适应值。
        P.S:之所以是144个城市,是因为中国一共有144个城市。


        IP属地:广东来自Android客户端4楼2017-03-20 21:46
        回复
          while(跳出条件不满足){
          1.对每个个体的适应值进行由小到大排序,选取前100个,后100个kill掉。
          2.再根据规则生成100个解补上,填满演化池。
          规则有如下两个:
          通过【遗传】生成70个。
          通过【变异】生成30个。
          3.计算新生成的个体的适应值。
          }
          选取第一个解,输出。


          IP属地:广东来自Android客户端7楼2017-03-20 21:52
          收起回复
            跳出循环有两个策略:
            一个是定次,大约2000次就够了。
            还有一个策略是当前十名保持不动达20次以上时跳出。


            IP属地:广东来自Android客户端8楼2017-03-20 21:53
            回复
              【杂交算子】选取两个个体A&B,排名越靠前被选取的几率越大。再生成一个随机数n,对于A保留n位以前的数,后面砍掉,对于B把所有在A的n位以前的数挑出来删除,然后剩下的按照原来顺序粘到A的第n位后面去,是为新的个体。


              IP属地:广东来自Android客户端9楼2017-03-20 21:55
              回复
                【变异算子】随机选取一个解,被选取的概率是等可能的。再生成一个随机数m,把第m位拎出来放到第一位,是为新的个体。


                IP属地:广东来自Android客户端10楼2017-03-20 21:55
                回复
                  近年来有的研究说遗传算法可能会有一些劣等基因淘汰不掉,对策是每次迭代都保留几个最差解,保证基因的多样性。并给它们足够的被选取的概率。


                  IP属地:广东来自Android客户端11楼2017-03-20 21:56
                  回复
                    遗传算法用于解决这种问题,只需要几分钟的运算量,但其在数学上并不严谨,即使找不出更优的解也无法保证用遗传算法所生成的解一定是最优解。
                    以上。施工完毕。


                    IP属地:广东来自Android客户端12楼2017-03-20 22:00
                    回复
                      亲,可以请教下遗传算法吗


                      来自iPhone客户端13楼2017-03-21 00:15
                      收起回复