初學編程,如何設計模擬一個螞蟻群體的小程序?求幫助?

初學python編程,想做一個螞蟻群體的計算機模擬的小程序,模擬一窩螞蟻自動築巢,覓食,繁育,死亡,搬家,戰鬥的過程。想先做個基於2D圖形的練練手,思路不太通暢。

我想是這樣的,程序的運行基於對現實螞蟻的計算機模擬,單只螞蟻的行為模式決策應當基於單只螞蟻能夠獲得信息,而不是程序員從上帝視角賦予這隻螞蟻關於全局的信息。比如說覓食時,要模擬螞蟻間的通信,而不是發給全體螞蟻一個坐標。需要仿生學,人工智慧等方面的知識。

想到一些問題,尋求各位的幫助,把你們寶貴的經驗和知識分享給我,實現以後我也會分享代碼。

1、行為模式

——單個蟻是如何決定做什麼任務的?從而實現在覓食,築巢,戰鬥,搬家,後勤等狀態間切換,這個策略涉及到單個蟻與環境交互的問題,以及蟻間通訊的問題,從環境中能獲取哪些信息來支撐單個蟻的自主決策。或者說蟻群當中存在一個管理階級來給每隻螞蟻分配任務,如果有的話,他們的管理策略是什麼。或是兩種模式結合。這個希望得到生物學專業以及人工智慧專業的支持。

——蟻巢中一隻螞蟻如何知道他該去哪個房間做什麼事,他的任務是天生的,還是有人分配的,還是無目的遊走碰到什麼做什麼?他能記住房間的路線嗎?他有固定的休息的房間嗎?

——一隻螞蟻如何決定挖掘方向,如何決定挖掘到什麼深度建立蟻巢?通道的挖掘長度如何確定,分支建立的時機如何確定?

——螞蟻挖掘時如何判斷挖掘進度,比如寬度深度等怎麼計算呢,還有,需要轉彎該怎麼計算。有兩個思路,一個是演算法生成一個通道地圖,螞蟻按圖挖。另一個思路是,讓螞蟻邊挖邊決策,判斷是否夠寬,夠長,轉彎處形狀,等等。

——螞蟻在蟻巢中尋路用什麼計算模型。如何模擬一個任意方向行走的螞蟻遇到障礙時的真實轉彎過程,而不是只能上下左右走。

——如何隨機生成一個土壤環境,以及環境對挖掘路線的影響,可能太複雜,模型後期再加吧

——建立蟻室的時機、大小、用什麼數據結構描述蟻室呢?

——根據蟻室的功能、螞蟻數量確定蟻室的大小,比如棲息、食物儲存

2、計算機描述

——螞蟻的大小如何描述,矩形還是圓形合適?

——土壤如何描述?挖掘的單位、步進。初步設想採用方格簡化描述,把土壤粒子化成一個個小方格,比如大約是一個螞蟻長度的三分之一。每次挖掘,消除一個土壤小方塊。

——挖掘通道如何描述,以及如何設計一個根據環境和前進方向的螞蟻能否通過的演算法。

——蟻窩的圖形如何描述?用什麼數據結構存儲?多邊形如何建模?

——設計一個螞蟻狀態機,狀態檢測演算法,比如挖通道狀態、挖蟻室狀態,設計狀態跳轉的條件。

——由於土塊方格動態被銷毀,如何動態生成導航網格。

暫時想這些,隨時補充


謝邀。

雖然我沒有完整的做過大遊戲,但是玩遊戲還是有很多年了。

以下是個人粗淺的看法,歡迎斧正:

遊戲,最關鍵的是設計核心玩法,有了核心玩法,其他的要圍繞核心來做。

1、挖掘策略

——確定挖掘方向,斜面通道與重力夾角是多少?

我的看法:你既然確立是是2D,那我猜測多半是垂直切面,水平夾角應該&<=45度,適當在主方向的過程中加入一點隨機數的搖擺,這樣出來的洞穴更加自然一些(當然也可以不考慮隨機搖擺,畢竟是遊戲,一切以照顧核心玩法優先)

——通道的挖掘長度如何確定,分支建立的時機如何確定?

我的看法:你可以先網上搜索一下真實的螞蟻巢穴的垂直切面圖,建立一個標準的結構模型,然後挖掘時加入隨機參數進行修正。

——如何隨機生成一個土壤環境,以及環境對挖掘路線的影響,可能太複雜,模型後期再加吧

——建立蟻室的時機、大小、用什麼數據結構描述蟻室呢?

——根據蟻室的功能、螞蟻數量確定蟻室的大小,比如棲息、食物儲存

我的看法:參考真實螞蟻巢穴

2、計算機描述

——螞蟻的大小如何描述,矩形還是圓形合適?

我的看法:大部分遊戲裡面的:地圖、角色、障礙物、道具,在計算機看來都是矩形的

——土壤如何描述?挖掘的單位、步進。初步設想採用方格簡化描述,把土壤粒子化成一個個小方格,比如大約是一個螞蟻長度的三分之一。每次挖掘,消除一個土壤小方塊。

我的看法:給你一個地圖數據:

{0:[1,0,1,1,1,1,1,1,1,1],

1:[1,1,0,0,1,1,0,1,1,1],

2:[1,1,1,1,0,0,1,0,1,1],

3:[1,1,1,2,2,2,2,0,1,1],

4:[1,1,1,1,2,2,1,0,1,1],

5:[1,1,1,1,1,1,1,1,1,1],

6:[1,1,1,1,1,1,1,1,1,1],

7:[1,1,1,1,1,1,1,1,1,1],

8:[1,1,1,1,1,1,1,1,1,1],

9:[1,1,1,1,1,1,1,1,1,1]}

以上字典,key表示從地面到地下的深度,後面的list表示從左邊到右邊的泥土塊,1表示泥土,0表示通道,2表示石頭等障礙物,你把這個數據結構擴大10倍或者更多。

——挖掘通道如何描述,以及如何設計一個根據環境和前進方向的螞蟻能否通過的演算法。

——蟻窩的圖形如何描述?用什麼數據結構存儲?多邊形如何建模?

——設計一個螞蟻狀態機,狀態檢測演算法,比如挖通道狀態、挖蟻室狀態,設計狀態跳轉的條件。

——由於土塊方格動態被銷毀,如何動態生成導航網格。

我的看法:依然是上面那個數據表,你很容易計算從某一點到另外一個點需要通過哪些為0的坐標位置。

——還有通道要支持雙向通行,也就是說螞蟻挖洞時需要挖兩個單位再進行下一步挖掘,這個怎麼計算呢,還有,通道轉彎處怎麼計算呢。有兩個思路,一個是演算法生成一個通道地圖,螞蟻按圖挖。另一個思路是,讓螞蟻邊挖邊決策,判斷是否夠寬,夠長,轉彎處形狀,等等。

我的看法:玩過拼圖么?所有通道默認都是支持雙向通行(你見過只能單向的巢穴?

)而且你一個2D遊戲,不要考慮那麼多邊界問題好么。默認Z軸很寬就好。

——雙向行走的自動尋路用什麼模型,首先得解決如何生成有向路徑的問題。

——如何模擬一個任意方向行走的螞蟻遇到障礙時的真實轉彎過程,而不是只能上下左右走。

我的看法:一個遊戲,重要的是遊戲性,而不是模擬程度,建議觀察一下《紅色警戒》等2D遊戲的單位行動,一般來說設計師會做8個方向的運動效果(左上,上,右上,左,右,左下,下,右下)等。

——單個蟻是如何決定做什麼任務的?從而實現在覓食,築巢,戰鬥,搬家,後勤等狀態間切換,這個策略涉及到單個蟻與環境交互的問題,以及蟻間通訊的問題,從環境中能獲取哪些信息來支撐單個蟻的自主決策。或者說蟻群當中存在一個管理階級來給每隻螞蟻分配任務,如果有的話,他們的管理策略是什麼。或是兩種模式結合。這個希望得到生物學專業的支持。

我的看法:請觀察真實世界的螞蟻巢穴,很多科普視頻。這個也和你的遊戲核心玩法有關係,先想好你的核心玩法。


對於初學者,我建議還是把「生命遊戲」寫寫吧,相對簡單。

就題目里的想法,我不是打擊題主,你的主要問題不在於編程,而是你把自己當成了產品經理,就差個程序員了。


太高深了。

我有個類似的主題:WSN的模擬,但是Python在這方面不算很強,一方面GIL限制了多線程。另外一方面速度不佔優勢。我也在找替代的工具。


謝邀。

我想你是聽說過蟻群演算法然後就誤會了吧?!

蟻群演算法是一種群體計算,用來解決NP問題,通過保留之前搜索狀態空間時的相關信息來提升搜索效率的。這方面有很完整的書籍與演算法介紹,沒必要自己重頭來的。

至於你說的東西,我認為對於一個初學者來說,難度太大了,沒必要。python是腳本級的語言,根本就不需要花費太多的精力,用的時候熟悉一下就可以了。


太高大上了。。。。而且就像其它答案里說的,功能太多了。我覺得題主可以選擇一個方面嘗試一下。至於ai方面可以參考fifa這種遊戲的ai,叫啥狀態機?


謝邀!這個提問如此之長,很有意思,你娃多半是要走上編程的不歸路了,哈哈!

提問是一個宏大的構想,但是你必須先把事情簡單化,一步你不可能跳到終點去;其實也沒有終點,很多內容過於精緻、細節化,但一大半的細節內容是在很後期才會出現,等你真走到那兒了,你會發現其實細節是無窮無盡的,永遠都有提升空間。

建議:階段化。你需要設定最初的、版本1的簡單的目標;然後可能版本2、版本3的大致目標,再往後的東西就別去想了。

記住,最開始的重點是實現,不是精緻。要是追求完美,你將一直沒有成品(哪怕是簡單、粗糙的)出來,這會嚴重地打擊你繼續的願望。而一直有階段性的完成,這是很大的自我激勵。


對於一個初學者,這個模型顯然是too hard to realize.

這個和python關係不大,主要是數學模型。建議你先看看「種群競爭模型」,看懂這個了,再了解一下「隨機過程」、「馬爾科夫鏈」,基本上可以做一個簡單的蟻群動態模型了。

當然,你要先明確,你是想學數學模型,還是想學python。

想學python,就沒必要搞這個。


這是不是需要蟻群演算法?!!!這都是研究生才有的課題。。。你確定你是初學!!!


這也太難了吧,好幾個世界級的難題,真把這些搞定了你估計獲得好幾個諾貝爾獎了


小程序?這簡直是那一個億的小目標啊!

我認為最大的難點不在編程,而在於人類還沒把螞蟻的行為模式研究清楚吶。


謝邀。

我首先想知道你想解決什麼問題。


我的建議是這樣 你可以試著寫幾個群落 這幾個群落能做的事一樣 但是辦事優先策略不一樣

然後這個集群落放在一個環境里 讓他們運行 模擬他們在同一個環境中成長

說白了 就是幾個代碼一起玩dota啊 可以試試 蠻好玩的


開始可以更簡單,土塊和螞蟻都只佔一方格,在地下可以認為四周都是土,都可攀爬,忽略重力,空洞連通就能走過去。如果沒玩過,可以玩一下《Minecraft》、《輻射:避難所》找靈感。


推薦閱讀:

為什麼仿生機器人(仿動物、人形)的反應遲鈍?
為什麼高達和變形金剛非要做成人型?

TAG:人工智慧 | Python | 計算機模擬 | 螞蟻 | 仿生學 |