netlogo vs.repast simphony?

1cklez4t  于 2021-07-05  发布在  Java
关注(0)|答案(7)|浏览(656)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

三年前关门了。
改进这个问题
我想用multiagent范例来模拟一些场景,netlogo和repast似乎是最流行的工具。
我想知道是否有人有任何一个经验,可以告诉我更多关于他们?例如,我注意到有一个类似于fluxogram的就餐建模选项,但我认为它相当有限。我查看了官方网站上的教程和文档,文档似乎很缺乏。虽然有一些例子,我想说,扩展它来模拟一个环境,它没有特别准备似乎是一个遥不可及的目标目前,尽管就餐显然是非常强大,显然能够处理它,给予足够的熟悉。
另一方面,netlogo有更多的例子,总的来说,我更喜欢它的简单性,但它似乎更侧重于模拟疾病传播或类似的模型。我发现了一个编程书的教学标志,所以我想它会更容易开始与它。
目前,我正在考虑将僵尸网络和idse模拟为多代理。然而,问题是,我必须在一定程度上抽象网络和传输层,以便能够做到这一点,并在节点之间生成通信量。显然,repast更适合这样做,但考虑到它的复杂性和缺乏文档,我考虑使用netlogo。虽然有一些netlogo与传统应用程序(例如:俄罗斯方块或吃豆人)的例子,我不确定它是否适合。

wydwbb8l

wydwbb8l1#

我从来没有试过netlogo,但我试过repast-j和simphony。这似乎simphony是好的,但目前我在改变的边缘类型,从直线到曲线卡住了。没有足够的文档和示例可用。有一次我也尝试了基于java的mason。它类似于repast-j,但速度更快。但最近梅森的发展不大。以后我想试试翡翠。

bvn4nwqk

bvn4nwqk2#

这里有一个通用的比较。
http://www.duncanrobertson.com/research/amle.pdf

ifmq2ha2

ifmq2ha23#

我有一个网页上有几个打瞌睡的netlogo多智能体模拟。我使用netlogo进行教学,我发现,一旦你通过了学习曲线,你就能以惊人的速度开发模拟。在其他所谓的代理环境(jade、repast,实际上大部分只是编程库)中需要80个工时的工作可以在2小时内完成。
另一方面,netlogo不太适合需要大量细节的模拟,比如说模拟从tcp/ip到http的网络。不管编程语言如何,这只需要大量的代码,如果你的程序超过10页,netlogo现在就糟透了。话虽如此,大多数人都会惊讶于你能在10页的netlogo代码中完成什么。

fcy6dtqo

fcy6dtqo4#

如果您已经可以用java编写代码,那么您还可以在下面的文章中比较repast、swarm、quicksilver和vseit,这些不同的免费编程库支持基于社会科学代理的计算机模拟
托比亚斯、罗伯特和卡罗尔·霍夫曼。”基于社会科学代理的模拟的免费java库的评估〉,《人工社会与社会模拟杂志》7.1(2004)。
repast肯定比netlogo更灵活,但是对于repast symphony,文档并不是很详细

zaqlnxep

zaqlnxep5#

几个月前,当我不得不为我的模拟选择一个框架时,我或多或少遇到了同样的问题。我看了一下餐食,网志,蜂群和翡翠。netlogo很不错,我试着编写一些简单的测试应用程序,但由于我想用java作为编程语言,netlogo不是最好的选择。repast拥有编写大型模拟所需的几乎所有内容,而且有许多项目(尤其是在社会科学领域)使用了repast。我在repast方面的问题是:糟糕的api文档,传递给方法或构造函数的参数从来没有被使用过,也没有任何意义(看看源代码)和大量的样板代码。我用的是玉(http://jade.tilab.com/)现在我真的很高兴。社区很好,他们的邮件列表非常活跃。好吧,jade只是一个库和一个基于代理的建模框架。你没有得到任何东西像那些视觉编辑器在就餐,你将不得不写你自己的工具可视化的结果。
干杯

busg9geu

busg9geu6#

简而言之:这取决于您想要使用的编程范式或语言,以及您想要的代理设计:
如果你想要一个低入门高上限语言允许快速原型,但复杂的模拟,并愿意学习一个新的范例(避免循环)使用netlogo。好的文件。
如果您想在高度并行化的集群上使用一个真正的应用程序,或者只想使用javagroovy,或者需要一个特定的java库,请使用repast或更好的repast来实现高性能计算(但是要避免relogo,因为它非常慢)。温和的文件。
如果您想用fipa通信为认知代理建模(而不是被动的),最好使用jason或更好的jacamo,它支持agentspeak+java(因此您也可以使用您最喜欢的java库),而且不需要groovy。糟糕的文档(很多不详细的特性和命令以及糟糕的、太复杂的、没有注解的示例)。
详细回答:免责声明:我对netlogo比较有经验,但我也使用了repast和其他一些类似jason的工具。
基本上,netlogo和repast的区别在于,使用netlogo,您将拥有一个更简单的框架,但您需要学习如何使用面向turtle和patch的范例进行编程,而在repast中,您必须学习java groovy背后的机制,但最终您将获得更大的灵活性。在这里,速度并不是一个真正的标准(见下文)。
更清楚地说,如果您最大限度地使用turtles和patchs本机函数,就可以在netlogo中高效地编程。例如,如果要实现*,而不是实现节点列表,则应直接使用修补程序并使用以下内容对其进行过滤:

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]

另外,如果你找不到一种有效的方法来做你想做的事情,一定要检查是否有扩展存在(也可以在这里的库和工具下检查),就像现在的原生矩阵扩展,它允许我在netlogo中建立一个有效的神经网络。
另一方面,repast可能比netlogo更灵活(因为您可以访问所有java库),但是要复杂一些,因为您必须知道如何处理groovy。
如果你只是对速度感兴趣,不要使用relogo(netlogo-like syntax for repast),它已经被证明比netlogo慢了很多(见下面的2012年文章)。在任何情况下,您最好尝试使用上述技巧实现netlogo,或者如果您想以后真正使用您的应用程序,还有一个名为repast for high performance computing的发行版,它消除了海龟和补丁对象带来的大部分过载,因此,它可以用于实际应用。netlogo也有一个类似的扩展,可以在集群中并行计算,但这不是一个正式的发行版。
如果您想了解更多关于不同平台的信息,请看一下2006年的精彩回顾:
railsback,s。f、 ,lytinen,s。l、 和Jackson,s。k(2006). 基于agent的仿真平台:回顾与发展建议。模拟,82(9),609-623。
2012年,本文更新了netlogo vs relogo:
莱蒂宁,s。l、 和railsback,s。f(2012年4月)。基于agent仿真平台的发展:netlogo5.0和relogo综述。第四届基于agent的建模与仿真国际研讨会论文集。
/编辑:我引用了杰森,但没有透露更多细节。如果你想模拟认知代理(而不是被动代理),你可以在netlogo中使用非官方的bdi扩展来实现这一点,它工作得很好,但是有点有限(但是它很容易扩展,因为它是纯netlogo),但是你最好的选择是使用一个专门设计的框架来模拟认知代理,并完全支持agentspeak。
jason非常好,因为您可以使用完整的agentspeak语言+java来实现技术方面的功能。事实上,你可以只使用agentspeak(我也这么做了)来完成整个项目,但是你也可以制作更多面向java的版本,这取决于你想如何设计你的程序,结果或多或少是一样的。这为您的设计工作流程提供了很大的灵活性。
提示:在文档中搜索“jason internal actions”,以获得可用agentspeak命令的良好描述。
另外,如果你对jason感兴趣,你可能会对jacamo(=jason+cartago+moise)感兴趣,jacamo是三个项目作者合作的结果,目的是建立一个成熟的认知代理框架,该框架还可以对复杂环境(人工制品理论)和多代理组织(角色、团体、任务等)建模。
最后一个框架我知道,但没有机会尝试是梅森,它支持二维和三维环境。从来没有机会尝试这个,所以我不知道这与其他人相比,但你可以尝试一下。

9wbgstp7

9wbgstp77#

您可以使用名为“packet”的代理类型来模拟流量,该代理类型将从名为“bot”的代理派生并发送到另一个名为“bot”或“server”的代理。不是将数据包发送到ip地址,而是将它们发送到一对x和y坐标。
netlogo有一个病毒如何在网络中传播的例子,这可能是一个很好的起点。

相关问题