我們現有的用scala編寫的城市系統(https://forge.iscpif.fr/projects/simpop2/repository/revisions/dev/show/JSimpop)和使用ABM(基於代理的模型)的仿真。每個城市在模擬中等同於一個代理。Neo4j圖形數據庫有助於存儲幾個基於時間的數據值,模擬結果
想象一下,一個模擬城市類遊戲或最好,一個紀元遊戲等,與不同的城市在世界上(我們的城市代理商的環境在)的交換型動物類型的值/產品本地化如下:
一個範圍規則(與其他城市在 局部區域的城市進行數據交換,一個範圍規則的功能)
多的市場交易規則(規則出現,因爲城市功能羽化成模擬(例如隨時間/變化,工業革命添加新的規則,新的交換範圍內),所以與其他城市的城市 連接時間時,也改變...看到這裏 約模型規則 http://www.simpop.parisgeo.cnrs.fr/models/simpop2/cities-a)
模擬後的更多信息,我們需要按時間,按城市,按城市功能導出和可視化數據。因此,我們選擇在模擬時將所有城市之間的交流歷史存儲到具有「時間」基礎密鑰的散列表中。該散列表返回一個包含城市對象+城市+與所有交換值之間關係的對象領土。
我不知道,但我認爲這是一個好主意(不是使用RDBMS更好的主意嗎?)來存儲數據,這類型關係到空間圖形數據庫(空間Neo4j的https://github.com/neo4j/spatial或其他更好的解決辦法?)。
但是我對這個解決方案有多種問題(如果它是一個很好的解決方案):
你覺得我需要存儲每次新的圖形,或在一個大圖僅結束?
=>那麼如何將這種類型的圖形存儲基於時間的屬性?
我可以使用此圖形對我的存在空間化圖形進行更復雜的查詢(計算城市之間的星型最短路徑,計算交互次數等),並將這些結果用於我的模擬?
如何導出或導入現有圖形輕鬆插入到我的模擬中?
=>那麼考慮到基於時間的區域的難度,我該如何輕鬆映射圖對象和模擬代理對象?
更新1
最後我選擇用Neo4j的空間Neo4j的,現在我試圖代表我與Neo4j的形式主義問題。我用一個比原始問題更簡單的例子來表示,我認爲,如果我能實現這種形式主義,這是一個很好的用例(第一個?)用於neo4j的未來模擬數據存儲!
市被表示與ABM(一個城市=在我們的模型中的一個代理的代理)在空間上下文(因此一個城市=一個節點)進行通信只與近鄰(半徑極限),在模擬的每個步驟。
城市在自己的市場上有一個創新池,其他城市可以得到這個創新,由城市連接一步一步。
在每一個步驟中,一個城市試圖用距離的概率函數來複制每個鄰居的創新,然後嘗試創新/創造新的創新。
創新圖很重要,因爲我想查看任何創新在時間上的擴散結果(我們的模擬步驟)。
事實很複雜,因爲創新可以消失,因爲它們每個都包含了我們去除擴散可能性後的生命屬性。
我開始一個谷歌共享圖與我的表現,如果你能幫助我糾正,這是提前偉大:)
謝謝你的建議, SR
感謝您的解釋。在這裏,我們在100個或1000個城市之間有一千個交換機,我們需要存儲1000,2000或4000個沒有問題的領域狀態(例如每年一個州,所以我們需要存儲4000年的模擬) – reyman64 2012-03-18 22:35:45
Mmh ,總共多少? – 2012-03-31 07:18:23
100.000個節點爲創新對象共享時間,4000步次數,100個城市,平均5個或10個城市逐級交換;由於我們的模型是隨機的,因此要提供更精確的關於收集到的數據的信息是非常困難的,創新似乎是概率的函數。 – reyman64 2012-03-31 14:15:16