标签: netlogo

R扩展断开了与NetLogo中扩展目录的连接

我想让R和NetLogo使用r扩展程序互相交谈.我传递图形对象而不是简单的变量.这意味着我需要从NetLogo导出文件并在R中导入文件,这意味着他们需要指向同一目录.代码运行完美.但是,一旦运行,NetLogo将失去与extensions文件夹的连接.

它似乎与在R中设置工作目录有关,因为以下MWE也会产生问题.

extensions [r]

to testSETWD
  r:eval "setwd(\"C:\")"
end
Run Code Online (Sandbox Code Playgroud)

成功运行后,然后尝试对NetLogo进行任何编辑,我收到错误Can't find extension ....

只要我在运行R代码后不尝试编辑,NetLogo继续工作,我可以毫无问题地使用扩展.只有当我编辑代码并运行语法分析器(绿色勾选)时才会出现问题.

我做了一个错误报告,但显然不可重现.我正在运行Windows 8.1 64位.这对其他人来说是个问题吗?

r netlogo

19
推荐指数
1
解决办法
228
查看次数

NetLogo与Repast Simphony?

我想使用多智能体范例来模拟一些场景,看起来NetLogoRepast是最受欢迎的工具.

我想知道是否有人对任何一方有任何经验,可以告诉我更多关于它们的信息吗?例如,我注意到Repast有一个类似于通量图的建模选项,但我认为它相当有限.我查看了官方网站上的教程和文档,文档似乎缺乏.虽然有一些例子,我会说扩展它来模拟一个它没有专门准备的环境,目前看起来像一个无法达到的目标,尽管Repast显然非常强大并且显然能够处理它,给予足够的熟悉它.

另一方面,NetLogo有更多的例子,总体而言我更喜欢它的简单性,但它似乎更侧重于疾病或类似模型的模拟传播.我找到了一本教授Logo的编程书,所以我觉得开始使用它也比较容易.

目前,我正在考虑将僵尸网络IDS模拟为多代理.然而,问题是我必须抽象网络和传输层到一定程度,以便能够做到这一点,以及在节点之间产生流量.Repast显然更适合这种情况,但鉴于其复杂性和缺乏文档,我正在考虑使用NetLogo.虽然NetLogo有一些传统应用程序的例子(例如:俄罗斯方块吃豆人),但我不确定它的适用性.

java artificial-intelligence agent netlogo logo-lang

12
推荐指数
3
解决办法
7885
查看次数

基于代理的仿真:性能问题:Python与NetLogo和Repast

我在Python 3中复制了一小块Sugarscape代理仿真模型.我发现我的代码的性能比NetLogo慢约3倍.它可能是我的代码的问题,还是它可能是Python的固有限制?

显然,这只是代码的一个片段,但是Python花费了三分之二的运行时间.我希望如果我写了一些非常低效的东西,它可能会出现在这个片段中:

UP = (0, -1)
RIGHT = (1, 0)
DOWN = (0, 1)
LEFT = (-1, 0)
all_directions = [UP, DOWN, RIGHT, LEFT]
# point is just a tuple (x, y)
def look_around(self):
    max_sugar_point = self.point
    max_sugar = self.world.sugar_map[self.point].level
    min_range = 0

    random.shuffle(self.all_directions)
    for r in range(1, self.vision+1):
        for d in self.all_directions:
            p = ((self.point[0] + r * d[0]) % self.world.surface.length,
                (self.point[1] + r * d[1]) % self.world.surface.height)
            if self.world.occupied(p): # checks if p is in a lookup …
Run Code Online (Sandbox Code Playgroud)

python simulation performance agent-based-modeling netlogo

12
推荐指数
1
解决办法
5002
查看次数

NetLogo乌龟留下了随着时间流逝而消失的踪迹

我有海龟穿过视线,我希望能够跟随他们走到哪里,让他们在他们身后留下痕迹,好像他们在他们去的时候冒烟.当然,我可以使用乌龟笔(pen-down),但由于有很多海龟,视野很快就会充满旧路.解决方案可能是在消散之前仅持续几个滴答的路径.但我不知道如何实现这一目标.

更具体一点:1)是否有一种技术可以使pen-down命令后面的线条在某些刻度周期内逐渐消失?2)如果没有,有没有办法在绘制之后删除使用笔绘制的几行?3)如果没有,是否还有其他一些具有类似视觉效果的技术?

netlogo

11
推荐指数
1
解决办法
1461
查看次数

将栅格数据导入NetLogo会导致所有补丁变量= 0的列

当我使用此代码将栅格图层导入NetLogo并调整世界大小时,最后一列的所有补丁变量在应包含数据时为零.这种情况仅发生在同一景观中的几个栅格上.

set rasterLayer gis:load-dataset "x.asc"
resize-world 0 (gis:width-of rasterLayer) -1 0 (gis:height-of rasterLayer) -1
gis:set-world-envelope gis:envelope-of rasterLayer
gis: apply-raster rasterLayer 
Run Code Online (Sandbox Code Playgroud)

在调整世界大小时没有'-1',我得到一列NaN值(将栅格数据导入NetLogo导致NaN值的行/列).

这个光栅的尺寸是正确的; 0值的列不是额外的值,这意味着某些数据会丢失.

gis raster netlogo

10
推荐指数
1
解决办法
82
查看次数

NetLogo两个agentsets操作

我有两个代理集.有找到的功能:

  1. 两个(交叉点)中存在的代理的代理集
  2. 代理的代理集,存在于一个而不是另一个中

我发现手动实现这一点非常困难,特别是在需要三重内部时 ask

理想的用法类似于with语法:

let cross set1 and-in set2
let uniq set1 with [color = red] not-in set2
Run Code Online (Sandbox Code Playgroud)

简单的事情,例如"代理集X中的代理A?" 是有问题的

intersection netlogo

9
推荐指数
1
解决办法
2445
查看次数

NetLogo 实验设置

我正在 Netlogo 中处理模型,但在理解如何设置“实验”时遇到问题。在我的模型中,我有一个矩阵,其中包含我感兴趣的所有值(总共 6 个),并且只要满足条件(每次杀死 X 只海龟时)都会更新矩阵,基本上捕获了那个时候的模型。矩阵中先前的值被清除,因此矩阵是 1x6,而不是 10000x6 矩阵,每个快照只更新一行。

我想做的是设置一个实验来运行我的模型数百次,每次收集这个矩阵以获得第一个 X 数量的快照或直到发生 Y 个刻度。但是我在实验设置中看不到这样做的方法?

这是可能的,还是我必须创建 100x6(100 个快照),然后以某种方式将该矩阵导出到 CSV?

我从未在 Netlogo 中设置过实验,因此这可能非常容易或完全不可能。

netlogo

9
推荐指数
1
解决办法
111
查看次数

Netlogo嵌套循环

基本上,我的问题是嵌套循环如何在netlogo中工作.我已经尝试在彼此之间嵌套两个while循环,但是内部循环似乎没有正常运行(正确地是它们在其他语言中的工作方式).如果我使用两个不同的循环,它按预期工作.netlogo中的循环工作类似于汇编语言中的标签,因此它会跳转到第一个标记时注意到它.

我问的原因是因为我一直在尝试使用不同类型的循环,或者为内循环创建一个过程,这会损害我的代码的可读性.这是一个例子,我在一个制表符分隔文件中读取为补丁分配值:

file-open "map2.txt"
let i max-pycor
let j min-pxcor
while [i >= min-pycor] [
 repeat 33 [ask patch j i [
    ifelse file-read = 1
      [set pcolor white]
      [set pcolor black]
    ]
    set j j + 1
  ]
  set i i - 1
]
file-close-all
Run Code Online (Sandbox Code Playgroud)

我想删除重复33循环并使用while循环来使用可变大小的世界.

netlogo

8
推荐指数
1
解决办法
4271
查看次数

NetLogo:TO-REPORT的含义是为假人解释的?

我有一个问题需要理解to-reportreport在NetLogo中的作用,即使它看起来非常有用,我也无法找到用"人类风格"语言编写的帮助.

在NetLogo dictionnary http://ccl.northwestern.edu/netlogo/docs/dictionary.html#report中 我可以找到以下定义to-report:

to-report procedure-name
to-report procedure-name [input1 ...]
Used to begin a reporter procedure.

The body of the procedure should use report to report a value for the procedure. See report. 
Run Code Online (Sandbox Code Playgroud)

并为report:

report value
Immediately exits from the current to-report procedure and reports value as the result of that procedure. report and to-report are always used in conjunction with each other. See to-report for a discussion of how to …
Run Code Online (Sandbox Code Playgroud)

patch report netlogo

8
推荐指数
1
解决办法
2084
查看次数

将Netlogo源文件包含在另一个中

如何将一个Netlogo文件中的过程包含在另一个文件中?基本上,我想将遗传算法的代码与我的(相当复杂的)适应度函数分开,但是,显然,我希望健身记者(将驻留在"fitness.nlogo"中)可用于遗传算法代码,可能是"genetic.nlogo".

如果可以完成,如何导入过程,并执行代码?它是否像Python一样,导入模块几乎执行模块中的所有内容,或者像C/C++那样,文件是盲目地"加入"的?

这可能是一个愚蠢的问题,但我在谷歌上找不到任何东西.Netlogo文档说明了一些关于__includes可以解决这个问题的实验性关键词,但那里没有太多解释.也没有例子.

任何提示?我应该去__includes吗?它是如何工作的?

include netlogo

7
推荐指数
1
解决办法
1493
查看次数