2012-03-17 55 views
2

我们现有的用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(一个城市=在我们的模型中的一个代理的代理)在空间上下文(因此一个城市=一个节点)进行通信只与近邻(半径极限),在模拟的每个步骤。

  • 城市在自己的市场上有一个创新池,其他城市可以得到这个创新,由城市连接一步一步。

  • 在每一个步骤中,一个城市试图用距离的概率函数来复制每个邻居的创新,然后尝试创新/创造新的创新。

  • 创新图很重要,因为我想查看任何创新在时间上的扩散结果(我们的模拟步骤)。

  • 事实很复杂,因为创新可以消失,因为它们每个都包含了我们去除扩散可能性后的生命属性。

我开始一个谷歌共享图与我的表现,如果你能帮助我纠正,这是提前伟大:)

draw

谢谢你的建议, SR

回答

0

尝试模拟OpenTSDB的模式设计http://opentsdb.net/schema.html尽管该模式遵循列家庭为基础的方法(HBase的)...

,请注意关键的设计特别,因为它提供行分组的优势(按时间段)的时间维度基于数据集

1

如何我们在谈论很多事件?您可以将不同的时间范围索引为Neo4j Spatial中的不同图层,例如每小时一层,然后搜索或分析那些有趣的。另外,您可以通过添加时间索引构造(请记住,整个图形是完整的和拓扑)来重新索引它们,请参阅http://blog.neo4j.org/2012/02/modeling-multilevel-index-in-neoj4.html

从你正在处理中的Neo4j空间索引的几何节点,你可以得到任何连通域节点(如您的活动等),因此您遍历期间任何检查。示例请参见https://github.com/bartbaas/spatial/blob/master/src/test/java/org/neo4j/gis/spatial/pipes/GeoPipesTest.java

+0

感谢您的解释。在这里,我们在100个或1000个城市之间有一千个交换机,我们需要存储1000,2000或4000个没有问题的领域状态(例如每年一个州,所以我们需要存储4000年的模拟) – reyman64 2012-03-18 22:35:45

+0

Mmh ,总共多少? – 2012-03-31 07:18:23

+0

100.000个节点为创新对象共享时间,4000步次数,100个城市,平均5个或10个城市逐级交换;由于我们的模型是随机的,因此要提供更精确的关于收集到的数据的信息是非常困难的,创新似乎是概率的函数。 – reyman64 2012-03-31 14:15:16

相关问题