蟻跡尋綜

按設定按鈕你可以更改一些環境變數,也可以更改單個螞蟻的屬性。 為什麼小小的螞蟻能夠找到食物? 構想,如果我們要為螞蟻設計一個人工智慧的程式,那么這個程式要多么複雜呢?

程式運行說明

首先您要保證你的瀏覽器支持java applet,然後能夠正確載入這個程式。在此前提下,按開始按鈕,螞蟻們開始從窩裡出動了,尋找食物;他們會順著地形爬滿整個畫面,直到找到食物再返回。其中,淺藍色的點表示食物,黃色的點表示窩,霧狀的點表示螞蟻留下的信息素,紅色的點表示障礙物,白色的動點就是螞蟻了。
按設定按鈕你可以更改一些環境變數,也可以更改單個螞蟻的屬性。在設定參數視窗中顯示了整個螞蟻群中找到的從它的窩到食物的最短路徑。使用環境參數設定和個體螞蟻的設定可以讓你觀察到這些參數是怎樣影響螞蟻的行為的。其中信息素的大小和消散的快慢直接決定了螞蟻找到食物的快慢。編輯地圖讓你能夠隨心所欲的更改螞蟻的環境,你會看到,無論你怎樣精心巧妙的設計地圖,小螞蟻最終都能找到食物!我們為你準備了一個地圖庫,可以自動調出不同的地圖。

預期的結果

各個螞蟻在沒有事先告訴他們食物在什麼地方的前提下開始尋找食物。當一隻找到食物以後,它會向環境釋放一種信息素,吸引其他的螞蟻過來,這樣越來越多的螞蟻會找到食物!有些螞蟻並沒有象其它螞蟻一樣總重複同樣的路,他們會另闢蹊徑,如果令開闢的道路比原來的其他道路更短,那么,漸漸,更多的螞蟻被吸引到這條較短的路上來。最後,經過一段時間運行,可能會出現一條最短的路徑被大多數螞蟻重複著。

原理

為什麼小小的螞蟻能夠找到食物?他們具有智慧型么?構想,如果我們要為螞蟻設計一個人工智慧的程式,那么這個程式要多么複雜呢?首先,你要讓螞蟻能夠避開障礙物,就必須根據適當的地形給它編進指令讓他們能夠巧妙的避開障礙物,其次,要讓螞蟻找到食物,就需要讓他們遍歷空間上的所有點;再次,如果要讓螞蟻找到最短的路徑,那么需要計算所有可能的路徑並且比較它們的大小,而且更重要的是,你要小心翼翼的編程,因為程式的錯誤也許會讓你前功盡棄。這是多么不可思議的程式!太複雜了,恐怕沒人能夠完成這樣繁瑣冗餘的程式。
然而,事實並沒有你想得那么複雜,上面這個程式每個螞蟻的核心程式編碼不過100多行!為什麼這么簡單的程式會讓螞蟻乾這樣複雜的事情?答案是:簡單規則的湧現。事實上,每隻螞蟻並不是像我們想像的需要知道整個世界的信息,他們其實只關心很小範圍內的眼前信息,而且根據這些局部信息利用幾條簡單的規則進行決策,這樣,在蟻群這個集體裡,複雜性的行為就會凸現出來。這就是人工生命、複雜性科學解釋的規律!

1、範圍

蟻觀察到的範圍是一個方格世界,螞蟻有一個參數為速度半徑VR(一般是3
),那么它能觀察到的範圍就是VR*VR個方格世界,並且能移動的距離也在這個范
圍之內。

2、環境

螞蟻所在的環境是一個虛擬的世界,其中有障礙物,有別的螞蟻,還有信息素,信息素有兩種,一種是找到食物的螞蟻灑下的食物信息素,一種是找到窩的螞蟻灑下的窩的信息素。每個螞蟻都僅僅能感知它範圍內的環境信息。環境以一定的速率讓信息素消失。

3、覓食規則

在每隻螞蟻能感知的範圍內尋找是否有食物,如果有就直接過去。否則看是否有信息素,並且比較在能感知的範圍內哪一點的信息素最多,這樣,它就朝信息素多的地方走,並且每隻螞蟻多會以小機率犯錯誤,從而並不是往信息素最多的點移動。螞蟻找窩的規則和上面一樣,只不過它對窩的信息素做出反應,而對食物信息素沒反應。

4、移動規則

每隻螞蟻都朝向信息素最多的方向移,並且當周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,並且,在運動的方向有一個隨機的小的擾動。為了防止螞蟻原地轉圈,它會記住最近剛走過了哪些點,如果發現要走的下一點已經在最近走過了,它就會儘量避開。

5、避障規則

如果螞蟻要移動的方向有障礙物擋住,它會隨機的選擇另一個方向,並且有信息素指引的話,它會按照覓食的規則行為。

6、播撒信息素規則

每隻螞蟻在剛找到食物或者窩的時候撒發的信息素最多,並隨著它走遠的距離,播撒的信息素越來越少。
根據這幾條規則,螞蟻之間並沒有直接的關係,但是每隻螞蟻都和環境發生互動,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當一隻螞蟻找到了食物,它並沒有直接告訴其它螞蟻這兒有食物,而是向環境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。

相關詞條

相關搜尋

熱門詞條

聯絡我們