官术网_书友最值得收藏!

看完剛才的例子,你大概會覺得多主體模擬方法很強大,很好用,于是躍躍欲試想構建自己的多主體模擬模型。但是,一個現實的問題馬上就會讓你冷靜下來:我要怎樣構建這樣的模型呢?如果要用C語言、Python這樣的編程工具構建一個類似于體育場館人群疏散問題的多主體模型,的確不那么簡單。你至少要先熟悉這些編程語言的語法,懂一些面向對象編程的知識,還要學會如何用這些編程語言去畫圖、做動畫、分析統計數據,等等。換言之,這些編程工具無法讓你一下子把注意力集中到實現多主體模型的互動規則本身上,而是要先把大量精力放到如何搭建這樣的平臺等非核心問題上。

所以說,工欲善其事,必先利其器。要想搞多主體模擬,就必須借助專業的多主體模擬平臺,這樣才會更省力。說到多主體模擬平臺,目前已有不少,比如Swarm、Repast,還有比較新的如AnyLogic和NetLogo等。而在所有這些平臺中,NetLogo是最適合入門的好工具。

為什么這么說呢?因為NetLogo有如下幾大特點,特別適合初學者學習使用。

一、上手簡單

這一點對于初學者來說是最關鍵的因素。筆者(張江)在北京師范大學給一年級本科生開過一門名為“復雜性思維”的課程,在這門課程中,NetLogo是他們的必學工具。事實證明,無論什么專業,哪怕是文科生,所有一年級的本科生都能輕松入門,動手開發出簡單的多主體模擬程序。

NetLogo之所以這么友好,首先是因為它的界面異常地簡單清晰,連新手都可以很輕松地在上面開發程序。2.1節會講到,只需要點幾下鼠標,寫下幾行代碼,就可以完成一個多主體模擬程序。

其次,從編程語言上來說,NetLogo采用了一種類似于自然語言(英語)的語法,自然且直接,這就使得沒有任何編程基礎的人反而會比有一定編程基礎的人更容易上手。

但不得不承認,這只是對于入門來說的。如果要完成大型項目,甚至成為NetLogo高手,那么,基礎的編程知識和基本的邏輯思維訓練還是必需的。所以,到了后期,具有編程經驗的學生顯然會更有優勢。

二、范例豐富

互聯網時代,我相信即使是最有經驗的程序員,也不會親自敲所有代碼,而會到網上借鑒別人的代碼或思路。同樣,我們學習NetLogo也要借鑒更多的代碼范例。

好消息是,安裝NetLogo之后就會自動獲得一個豐富的范例庫,其中包含了上百個不同領域的多主體模型。所以,你完全不需要自己從零開始構建模型,而是應該從這些范例庫中找到可以借鑒的,然后加以改造。這樣做,你不僅可以學到NetLogo高手是如何寫程序的,還能夠更加高效地完成自己的任務。

三、功能強大

盡管NetLogo有著“傻瓜式”的界面和語法,但并不意味著它的功能也很簡單。事實上,隨著使用NetLogo的經驗越來越豐富,你會發現這是一個深不見底的巨大寶庫。

首先,你既可以按照默認模式把它當作模擬世界中的樂高玩具去搭積木,也可以將面向對象編程、并行計算,甚至是分布式人工智能等高端理念揉進自己的NetLogo程序之中,它都能勝任。總而言之,NetLogo是一個通用的編程工具,理論上,它可以實現任何任務。

其次,NetLogo其實不僅僅是一個編程工具,它還是一個平臺,集成了很多其他工具。比如,要想完成系統動力學的模擬,你可以使用它的“System Dynamics Modeler”模塊(見第10章);再比如,為了重復實驗并分析數據,你可以使用它的“BehaviorSpace”模塊(見第8章)。

最后,NetLogo還有很多高級玩法。比如,你可以將NetLogo與C語言或著名的數學軟件Mathematica相連,從而動態地調用這些開發工具的強大功能。你甚至可以將NetLogo布局到局域網環境中,實現多臺計算機的聯動,從而完成一些小型的多人博弈實驗。

接下來,我們就來看幾個用NetLogo程序實現的多主體模擬的簡單例子。

主站蜘蛛池模板: 阿拉善左旗| 丹阳市| 大洼县| 盐池县| 柘城县| 大关县| 蓬莱市| 边坝县| 富锦市| 东莞市| 库尔勒市| 张家港市| 眉山市| 乳源| 枣庄市| 平潭县| 左云县| 武乡县| 衢州市| 慈溪市| 右玉县| 区。| 万山特区| 镇安县| 梁河县| 昌都县| 菏泽市| 河源市| 清河县| 苗栗县| 纳雍县| 广宁县| 甘南县| 米泉市| 临武县| 集安市| 新竹县| 洪雅县| 天镇县| 即墨市| 双柏县|