2009-11-03 67 views
12

我想模擬一些使用多主體 範例的場景,看起來NetLogoRepast是最流行的工具。NetLogo與簡易電影?

我想知道是否有人對任何一方有任何經驗,並可以告訴我更多關於它們的信息?例如,我注意到有一個像磁通圖一樣的建模選項,但我相信它相當有限。我瀏覽了官方網站上的教程和文檔,文檔似乎不多。雖然有一些例子,但我想說擴展它來模擬一個沒有專門準備好的環境,看起來像是一個無法到達的目標,儘管Repast顯然非常強大,顯然能夠處理它,給予足夠的熟悉它。

另一方面,NetLogo有更多的例子,總的來說我更喜歡它的簡單性,但它似乎更專注於模擬疾病或類似模型的傳播。我找到一本教程編寫Logo的編程書籍,所以我覺得它開始使用它會更容易。

目前,我想模擬botnetsIDS es作爲多種劑量。然而,問題在於,我必須將網絡和傳輸層抽象到可以實現的程度,並在節點之間生成流量。顯然,Repast更適合這個,但鑑於它的複雜性和缺乏文檔,我正在考慮使用NetLogo。雖然有一些NetLogo與傳統應用程序(例如:TetrisPac-Man)的例子,但我不確定它會是多麼合適。

回答

1

您可以使用名爲「數據包」的代理程序類型來模擬流量,該類型將生成並從名爲「bot」的代理程序發送到名爲「bot」或「server」的另一個代理程序。不要將數據包發送到IP地址,而是將它們發送到一對X和Y座標。

Netlogo有一個病毒如何在網絡中傳播的例子,這可能是一個很好的起點。

2

幾個月前,我不得不爲我的模擬選擇一個框架時,我幾乎有同樣的問題。我看着重新包裝,NetLogo,Swarm和Jade。 NetLogo很好,我試着寫一些簡單的測試應用程序,但由於我想用Java作爲我的編程語言,NetLogo並不是最好的候選人。備份幾乎包含了編寫大型模擬所需的一切,並且有很多項目(特別是在社會科學領域)使用了備份。我的Repasts問題是:糟糕的API文檔,傳遞給方法或參數的參數,這些參數從不使用,根本沒有任何意義(查看源代碼)以及大量樣板代碼。 我現在正在使用Jade(http://jade.tilab.com/),我真的很滿意。社區很好,他們的郵件列表非常活躍。好的,Jade只是一個基於代理的建模的庫和框架。你沒有像Repast中的可視化編輯器那樣得到任何東西,你必須編寫自己的工具來顯示結果。

乾杯

0

我從來沒有嘗試過的NetLogo,但我試過就餐-J和Simphony。看起來Simphony很好,但目前我被困在將邊緣類型從直線改爲曲線類型。沒有足夠的文檔和示例可用。 有一次我嘗試了基於java的梅森。它與Repast-J類似,但速度更快。但最近梅森沒有太多的發展。 我想稍後嘗試一下Jade。

12

我有一個網頁夫婦打盹netlogo multiagent simulations。我使用netlogo進行教學,我發現,一旦你通過學習曲線,就可以快速開發模擬。在其他所謂的代理環境(Jade,Repast,其實大部分只是編程庫)中需要80個工時的東西可以在2個小時內完成。另一方面,netlogo對於需要大量細節的模擬並不是很好,例如模擬網絡從TCP/IP到HTTP的整個過程。無論編程語言如何,這隻需要大量的代碼,而netlogo目前很糟糕,如果你的程序長達10頁以上的話。話雖如此,大多數人會驚訝於你可以在10頁的netlogo代碼中完成什麼。

10

簡短的回答:這取決於你想爲你代理的編程範式,或者您想要使用的語言,以及設計:

  • 如果你想有一個低入口 - 高天花板語言允許快速原型設計,但複雜的模擬,並願意學習一個新的範例(避免循環)使用NetLogo。良好的文檔。

  • 如果你想真正的應用到高度並行羣集使用或只是想使用Java的Groovy或需要特定的Java庫,你的目的,使用就餐或更好的Repast for High Performance Computing(但要避免ReLogo這是很慢)。溫和的文件。

  • 如果你想認知代理(而不是反應)與FIPA通信模型,更好地利用Jason或更好JaCaMo支持AgentSpeak + Java的(所以你也可以使用自己喜歡的Java庫),而且也沒有要求的Groovy。糟糕的文檔(很多非詳細的功能和命令,以及不太複雜的未評論的示例)。

龍答: 免責聲明:我比較有經驗,但的NetLogo我也用餐飲和其他一些像賈森。

基本上,NetLogo和Repast之間的區別在於,使用NetLogo你會有一個更簡單的框架,但你需要學習如何編程一個面向龜和麪向補丁的範例,而在Repast中,你將不得不瞭解Java Groovy背後的機制,但最終會獲得更大的靈活性。速度並不是真正的標準(見下文)。

更清楚的是,如果您最大限度地使用海龜和補丁原生函數,您可以在NetLogo中高效編程。例如,如果你想實現A *,而不是執行節點的列表,你應該直接使用斑塊和過濾他們使用的東西是這樣的:

ask patchs with [criteria1 = value and criteria2 = value2] [do-some-stuff] 
ask patchs with-min [criteria][do] 
let var [somevalue] of min-one-of patches [criteria] 

此外,如果你不能找到一種方法,高效地做你想做的事情,一定要檢查if maybe an extension exists(在庫和工具下也檢查here)以達到你的目的,就像現在的本地矩陣擴展,它允許我做一個efficient neural network in NetLogo

另一方面,由於您必須知道如何處理Groovy,所以Repast可能比NetLogo更靈活(因爲您可以訪問所有Java庫),但更復雜一點。

如果您只對速度感興趣,請不要使用ReLogo(類似於NetLogo的簡易語法),這已經顯示出比NetLogo慢很多(請參見下面的2012年論文)。在任何情況下,你最好的選擇要麼嘗試與的NetLogo實現使用上面的招數,或者如果你想使用你的應用程序的實際後,也有一個叫就餐高性能計算分佈,去除大部分的過載與烏龜和補丁對象,因此它可以用於真正的應用程序。 A similar extension exists for NetLogo以並行化方式進行羣集計算,但它不是官方發佈版本。

如果您想了解的各種平臺的更多相關信息,這裏是2006年一個好的評論:

Railsback, S. F., Lytinen, S. L., & Jackson, S. K. (2006). Agent-based Simulation Platforms: Review and Development Recommendations. SIMULATION, 82(9), 609-623.

而本文的在2012年的更新版本的NetLogo處理VS ReLogo:

Lytinen, S. L., & Railsback, S. F. (2012, April). The evolution of agent-based simulation platforms: A review of netlogo 5.0 and relogo. In Proceedings of the Fourth International Symposium on Agent-Based Modeling and Simulation.

/編輯:我舉傑森但沒有透露任何更多的細節。如果你想認知代理(而不是活性劑)的模式,你可以這樣做在的NetLogo使用非官方BDI extension效果很好,但有點限制(但它是很容易擴展,因爲它是純粹的NetLogo),但你最好的選擇是使用這是一個專門設計用於在AgentSpeak的全面支持下爲認知代理建模的框架。

Jason,因爲你有機會獲得一個完整的AgentSpeak語言+ JAVA來實現在技術方面是非常好的。事實上,你可以只使用AgentSpeak(我做了)做整個項目,但你也可以讓更多的面向Java的版本,它給你,你要如何設計你的程序,結果將是或多或少相同。這爲您的設計工作流程提供了很大的靈活性。

提示:在文檔中搜索"Jason internal actions"獲得可用AgentSpeak命令的一個很好的說明。

此外,如果您對Jason有興趣,您可能會對JaCaMo(= Jason + Cartago + Moise)感興趣,這是三個項目作者合作的結果,可以構建一個完整的認知代理框架,複雜的環境(包括工件理論)和多代理組織(角色,團隊,任務等)。

我知道但沒有機會嘗試的最後一個框架是Mason,它支持2D和3D環境。從來沒有機會嘗試這一個,所以我不知道這與其他人相比如何,但你可以嘗試一下。

+0

要了解更多關於Jason的信息,我建議使用這本書:在AgentSpeak中編寫多Agent系統使用Jason http://jason.sourceforge.net/jBook/jBook/Home.html – 2017-09-05 13:01:13

0

如果你已經可以在Java代碼中,你也可以看看下面的紙就餐水銀,並VSEit,不同的免費提供支持的社會編程庫之間的比較科學的基於代理的計算機模擬

Tobias, Robert, and Carole Hofmann. "Evaluation of free Java-libraries for social-scientific agent based simulation." Journal of Artificial Societies and Social Simulation 7.1 (2004).

就餐肯定比的NetLogo更靈活,但是文檔不是很詳細的就餐交響樂團