问题标签 [agent-based-modeling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
349 浏览

netlogo - 如何让海龟/代理无法通过补丁?体育馆模型。提供了代码但不起作用

在此处输入图像描述

嗨,我想知道是否有人知道不让补丁进入体育馆的确切代码。我关闭了所有标记为红色斑块的大门,黑色斑块是墙壁。

这里的问题是我尝试了这些不同的代码,但补丁仍然穿过墙壁。谁能帮我?

请注意,我一次尝试了这些方法以确定是否有任何 ff. 工作。

可以帮助我的人/人将不胜感激。

根据要求,这是补丁的代码:

0 投票
3 回答
405 浏览

python - 用于更高性能计算的 c++ gis/空间库

所以我正在努力建立一个基于代理的模型,该模型在地理地图上运行——在这种情况下是叙利亚。我尝试用 python 编写它,但性能相当慢——即使经过一些优化技巧。我在想我应该转向只用 C++ 编写模型,但我不知道哪些可视化包可以合并地图?我倾向于在 C++ 中使用 gnuplot,但我一直无法找到将 gis 底图合并到该包中的方法。我不确定这在 VTK 或任何其他软件包中是否可行。我想找到一种在 C++ 中快速运行我的模型但又不会丢失地理信息的方法。有什么建议么?

0 投票
1 回答
774 浏览

netlogo - 通过滑块改变正态分布的形状

我是 NetLogo (NL) 和 Stackoverflow 的新手。我正在研究意见形成的 NL 模型,但我遇到了以下问题(谷歌搜索或其他任何东西都对我不起作用)。

首先,定义海龟拥有的属性turtles-own [opinion]。接下来,存在意见变量的随机正态分布(范围从 -1 到 1)。我希望能够解释从 -1 到 1 范围内不同形状的意见分布。这是通过使用random-normal具有两个输入的命令来完成的:均值(设置为 0)和标准。开发。(由滑块设置);即形状由标准给出。开发。价值。

这是设置功能的代码:

尽管如此,设置std.dev。滑块到 1 不会产生预期的结果(钟形分布),而是均匀分布。我不确定这是概念问题还是技术问题。

任何帮助深表感谢。

0 投票
1 回答
146 浏览

simulation - Netlogo : 为不同品种接种疫苗

我的模型代表流感通过成人和儿童两个不同品种的传播。

我想做的是为成人和儿童添加单独的疫苗接种,允许我从界面中指定两个疫苗接种值,从而为两种不同品种的海龟接种疫苗

我当前的代码如下,我想做的是使用接口值 Adult-vaccination 为该品种中的一定比例的海龟接种疫苗。

0 投票
2 回答
910 浏览

timer - 如何让乌龟面对面,等待3个滴答声,然后继续徘徊?

我对 Netlogo 和 stackoverflow 都是新手,但是您的其他帖子已经对我有很大帮助。

我目前正在尝试编写一个模型,其中代理随机游荡一个空间并让他们在遇到时停下来。“相遇”在这里的意思是“互相擦肩而过in-radius 2”。他们应该face互相,等待 2 个滴答声,然后继续移动,直到找到下一个代理。

我试图在计时器上使用 NzHelen 的问题,但并没有真正成功。

到目前为止,我设法让他们面对面。我无法将tick-command 放在代码中的正确位置。(编辑:这通过取出wait-command 解决了,感谢 Seth。--> 我不希望所有的海龟都停止移动,而只希望那些正在相遇的海龟)。我正在努力的另一件事是他们相遇的某种视觉表示,例如当他们相遇时让补丁闪烁,或者当他们相遇时在他们周围出现一个圆圈。使用wait-command,一切都会再次停止,这是我想要阻止的。

到目前为止的代码下方。

0 投票
1 回答
120 浏览

python - 在 python 或 Java 中可视化集群的包?

我正在做基于代理的建模,目前在 Python 中进行了设置,但如有必要,我可以切换到 Java。
我在 Twitter 上有一个数据集(1100 万个节点和 8500 万个有向边),并且我已经设置了一个字典/哈希图,以便键是特定用户 A,它的值是所有关注者的列表(关注用户的人一个)。“节点”实际上只是整数 ID 号(唯一),没有其他数据。我希望能够通过某种聚类方法来可视化这些数据。并非所有单个节点都必须被可视化,但我希望拥有最多 n 个关注者的节点能够被清晰地可视化,并且该节点周围的区域将代表所有关注它的人。我正在对整个地图的分布进行建模,因此我需要节点和节点周围的区域来更改颜色。理想情况下,这将是一个连续的可视化,但我不介意它只是在每次迭代时拍摄快照。
此外,我正在考虑将集群分开,这样:
如果 A 和 B 有足够的追随者可以单独可视化,并且 A 和 B 是连接的(一个跟随另一个,或者甚至是两个方向),那么它们是两者都是可视化的,但尽管被连接,但在视觉上彼此分离,因此可视化更清晰。

无论如何,我想知道 Python(最好)或 Java 中是否有一个包可以让人们轻松地完成这个工作。

0 投票
1 回答
99 浏览

netlogo - Netlogo. Patches categories from Landsat file

I am expanding a model looking at the effect of different types of fruit and fragmentation on a population of monkeys. The model reads a landsat file made up of 1's and 0s (representing forested and deforested areas) I need to reclassify the 1's into three kinds of trees. At the moment in the code I have the three types of trees randomly set, now I want them to be divided into percentages i.e 30 percent of the forested patches are blue, 50 percent are yellow, 20 are green. I have this atm: I think I have to change the:

[ if value = 1 [ set value one-of tree-types ]

I tried with n-of but I can't seem to make it work.

Any suggestions?

0 投票
1 回答
364 浏览

java - 在 Repast J 中将数据层分配给网格

我正在尝试在 Repast Java Suite 中编写 ABM,并为此使用 3D 网格。关于网格的两个问题:1)我想为网格中的每个 (x,y) 组合分配一个函数值 - 例如,对于每个 f(x,y)=x+y。因此,当代理在点 (x,y) 时,它会知道对应的 z 值是 z=f(x,y)=x+y。如何将数据层分配给网格来做到这一点?

2)同样对于同一个网格,代理应该能够知道是否访问了特定的补丁。每当代理访问该补丁时,它将被更新。

一般来说,我的问题是将其他方法、数据等分配给网格接口。由于这是我的模拟的一个基本问题,如果不解决它,我将无法继续前进.. 非常感谢答案.. 谢谢!

0 投票
3 回答
487 浏览

simulation - 如何在 NetLogo 中同时运行多个程序?

我的模型中有不同颜色的海龟,每一种都按照不同的规则运行。我希望管理一只海龟(比如红海龟)运动的程序与其他管理不同颜色海龟运动的程序同时运行。

0 投票
0 回答
567 浏览

parallel-processing - 在 NetLogo 中实现并行的瓶颈是什么?

实施基于代理的模型或 ABM 建模软件(例如 NetLogo)需要解决哪些具体实施问题或瓶颈?

TL;DR 版本:

与实施 ABM 软件(尤其是 NetLogo)相关的问题是什么,以便它能够使用多个 CPU?
解决这些问题的尝试是什么?
并行化 NetLogo 需要什么?
NetLogo 在并行模式下的工作方式有何不同?

更长的版本:

目前,NetLogo 通过一次顺序处理一个代理来执行模拟。尽管通过 BehaviorSpace [6] 可以在单台机器上运行多个模型(在单独的 NetLogo 实例中),甚至是特定模型的不同配置(在单个 NetLogo 实例中),但单个模型在一个 CPU 上运行 [ 2, 3]。

还有一种通过 ask-concurrent 命令 [4, 5] 处理代理行为的伪并行模式,但它不需要在多个 CPU 上并行执行。

我读过关于在 Haskell 中并行化 NetLogo 实现它的尝试(Nikolaos Bezirgiannis 的 HLogo 实现)[1]。然而,该研究项目的作者指出,“[e] 执行结果表明,在大多数情况下,HLogo 比 NetLogo 更快,尤其是在代理数量很少的情况下。当代理数量增长到产生大量 STM 冲突时,HLogo 的性能会大幅下降。”</p>

显然,与并行执行相比,以非并行、顺序方式运行模拟会大大降低速度。NetLogo 实现不使用多处理/并行性 [关于单个模型运行] [2, 3] 的事实意味着,这样做很可能存在一些问题。这些问题是什么?如何解决?

我能够找到的有关该主题的材料:

  1. Nikolaos Bezirgiannis 的“使用 Haskell 的并发和并行性提高仿真软件的性能”论文
    http://dspace.library.uu.nl/handle/1874/284708

  2. NetLogo / 文档 / FAQ #Multiprocessing
    (“对于单个模型运行,仅使用一个处理器。”)
    http://ccl.northwestern.edu/netlogo/docs/faq.html#multiprocessing

  3. 《关于并行运行的问题》<br/> http://netlogo-users.18673.x6.nabble.com/Question-about-parallel-running-td4869363.html

  4. “如何在 NetLogo 中同时运行多个程序?” StackOverflow 上的问题
    如何在 NetLogo 中同时运行多个程序?

  5. NetLogo 文档中的 Ask-concurrent
    (“ask-concurrent 的行为是完全确定的。”)
    http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent

  6. NetLogo 文档中的 BehaviorSpace
    http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html