日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《复杂》读书笔记(part7)--遗传算法

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《复杂》读书笔记(part7)--遗传算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記

學習書目:《復雜》- 梅拉妮·米歇爾


文章目錄

      • 遺傳算法
        • 遺傳算法菜譜
        • 掃易拉罐的機器人小黃
        • GA如何演化出好的技巧



遺傳算法


在對“機器能否復制自身”的問題給予肯定回答后,馮·諾依曼很自然地想讓計算機(或計算機程序)復制自己和產生變異,并在某種環境中為生存競爭資源。這就會遇到前面提到的生存本能以及進化和適應的問題。

20世紀60年代初,一些研究團體開始在計算機中進行進化實驗,這些研究現在統稱為進化計算。其中最為著名的是密歇根大學的霍蘭德和他的同事、學生進行的遺傳算法研究。

霍蘭德在讀費希爾的名著《自然選擇的遺傳理論》時被達爾文的進化論深深吸引。他從計算機科學的角度思考:“這就是遺傳算法的由來,我想到,是不是可以像繁育良種馬和良種玉米那樣繁殖程序。”

霍蘭德的主要興趣在于適應現象——生物如何進化以應對其他生物和環境變化,計算機系統是不是也可以用類似的規則產生適應性。他在1975年的著作《自然和人工系統的適應》中列出了一組適應性的普遍原則,并且提出了遺傳算法的構想。


遺傳算法菜譜


算法其實就是圖靈說的明確程序,就好比做菜的菜譜:一步一步將輸入變成輸出。

對于遺傳算法(GA),期望的輸出就是特定問題的解。GA的輸入包括兩部分:候選程序群體適應性函數。適應性函數用來確定候選程序的適應度,度量程序完成指定任務的能力。候選程序可以表示成位、數字或符號組成的字符串。

下面是GA菜譜。我們將下面的步驟重復代數:

  • 第1步:生成候選方案的初始群體。生成初始群體最簡單的辦法就是隨機生成大量“個體”,在這里個體是程序(字符串)。
  • 第2步:計算當前群體中各個個體的適應度。
  • 第3步:選擇一定數量適應度最高的個體作為下一代的父母。
  • 第4步:將選出的父母進行配對。用父母進行重組產生出后代,伴有一定的隨機突變概率,后代加入形成新一代群體。選出的父母不斷產生后代,直到新的群體數量達到上限(即與初始群體數量一樣)。新的群體成為當前群體。
  • 第5步:轉到第2步。

上面描述GA時似乎很簡單,但是遺傳算法已被用于解決科學和工程領域的許多難題,甚至應用到藝術、建筑和音樂。


掃易拉罐的機器人小黃


下面我們用一個更詳細的例子來進一步闡述GA的主要思想。

我有一個叫小黃的機器人,它的世界是二維的,到處是丟棄的易拉罐。我們將用遺傳算法為小黃進化出一個"腦"(即控制策略)。

小黃的工作是清理它的世界中的空易拉罐。由上圖所示,小黃的世界由10x10的100個格子組成。小黃在位置(0, 0)。我們可以假設周圍圍繞著一堵墻。許多格子中散落著易拉罐(每個格子中的易拉罐不會多于一個)。 小黃貌似不是很聰明的樣子,他只能看到東南西北相鄰的4個格子以及本身所在格子中的情況。格子可以是空的(沒有罐子),或者有一個罐子,或者是墻。

每次清掃工作小黃可以執行200個動作。動作可以是以下7種:

  • 往北移動

  • 往南移動

  • 往東移動

  • 往西移動

  • 隨機移動

  • 不動

  • 收集罐子

每個動作都會受到獎賞或懲罰,如果小黃所在的格子中有罐子并且收集起來了,就會得到10分的獎賞。如果進行收集罐子的動作而格子中又沒有罐子,就會被罰1分。如果撞到了墻,會被罰5分,并彈回原來的格子。

顯然,小黃盡可能地多收集罐子,別撞墻,沒罐子的時候別去撿,得到的分數就最高。

這是一個比較簡單的問題,人工為小黃設計一個好策略可能也不是很難。不過,有了遺傳算法我們就可以什么也不用干,我們只需要等著計算機替我們進化出來。

下面我們用遺傳算法來為小黃進化出一個好策略。

要做的第一步,就是搞清楚我們想要進化的到底是啥?也就是說具體策略是啥?

一般來說,策略指的是一組規則,規則給出了在各種情形下你應當采取的行動。那么多少種可能的情形呢?小黃可以看到5個格子(當前格子、東、南、西、北),每個格子可以標為空、罐和墻。這樣就有243種可能情形(353^535種可能)

比如說,下面這張策略表顯示的就是一個策略:

要知道下一步怎么做,小黃只需要查看策略表。

小黃在(0, 0)位置時,查到對應的行動是往西移動。因此它往西移動一格,結果一頭撞到墻上。

我之前并沒有說這是個好的策略,尋找好策略不關我的事,這事歸遺傳算法管。

我們寫了一個遺傳算法程序來進化小黃的策略。算法中,群體里每一個個體都是一個策略(與各種可能情形相對應的行動列表)。也就是說,對于上面策略表中的策略,GA用來演化的個體就是最右側243個行動依次列出的列表。

現在,我們再次解釋一下GA的工作原理:

  • 第1步:生成初始群體,初始群體有200個隨機個體,程序中用一個偽隨機數發生器來進行各種隨機選擇。

從現在開始我們重復1000次步驟2~步驟4。

  • 第2步:計算群體中每個個體的適應度。比如說,通過讓小黃執行100次不同的清掃任務來確定策略的適應度。每次將小黃置于位置(0, 0),隨機撒一些易拉罐(每個格子至多1個易拉罐,格子有易拉罐的概率是50%)。然后讓小黃根據策略在每次任務中執行200個動作。小黃的得分就是策略執行各任務的分數。策略的適應度是執行100次任務的平均得分,每次的罐子分布都不一樣。
  • 第3步:進化,讓當前群體進化,產生出下一代群體,直到新群體有200個個體。進化的步驟如下:(a)根據適應度隨機選擇出一對個體A和B作為父母。策略的適應度越高,被選中的概率則越大。(b)父母交配產生兩個子代個體。隨機選擇一個位置將兩個數字串截斷;將A的前段與B的后段合在一起形成一個子代個體,將A的后段與B的前段個體合在一起形成另一個子代個體。?讓子代個體以很小的概率產生變異。以小概率選出1個或幾個數,用0到6之間的隨機數替換。
  • 第4步:新群體產生200個個體后,回到第2步,對新一代群體進行處理。

GA如何演化出好的技巧


要回答GA如何演化出好的技巧這個問題,我們可以看一看策略是如何一代一代改進的。下圖繪制出了每一代中最佳策略的適應度:

由上圖可以看出,前300代提高得很快,此后的提高要慢一些。

第1代有200個隨機生成的策略,可以想象它們都很糟糕。最好的策略適應度才-81,最糟糕的到了-825。在一些環境設定中,小黃移動了幾步就卡住了,之后在整個任務過程中都停止不動。在一些情況下,則不停地撞墻,直到任務結束。有時候則一直不斷地去撿罐子,雖然當前位置上沒有罐子。

到第10代,群體中最佳策略的適應度已經變成正數了。這個策略經常會停滯不動,有時候還會在兩個格子之間不停地來回移動。但基本不怎么撞墻。

到200代時,最好的策略已經具有向罐子移動并撿起罐子這個最重要的能力—至少大部分時候是這樣。不過,如果周圍沒有罐子,它也會浪費很多時間用來隨機游走。

到了400代,適應度超過了400分。

到800代時,GA發現了將罐子留作相鄰罐子的路標的技巧

GA就這樣不斷改進最佳適應度。


在實際應用中,GA經常能演化出有用的答案,但是很難看出為什么會有用。這是因為GA找到的好答案與人類想出的相當不同。美國國家航空航天局(NASA)的遺傳算法專家羅恩曾這樣說:“進化算法是探索設計死角的偉大工具。但是,我們經常發現進化出來的設計完全無法理解。”

總結

以上是生活随笔為你收集整理的《复杂》读书笔记(part7)--遗传算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。