创建补丁的“初级”代理集

时间:2019-04-17 08:58:04

标签: netlogo

我正在建立一个模型,其中乌龟会根据不同的搜索条件为资源“修补”补丁的子集。

我正在尝试创建报告,以返回排序的补丁程序列表或代理集,然后龟可以将其用作搜索的路线。

由于某种原因,我无法将行程存储在乌龟拥有的变量中。

一个示例记者是:

to-report availability

    let sorted-patches sort-on [ ( (space - occupants) / space ) ] patches with [space > 0]

    report sorted-patches

end 

当我在控制台中执行show availability时,它会打印出我期望的补丁顺序列表。

但是,如果我这样做

let test-variable availability
show test-variable

它返回

ERROR: Nothing named TEST-VARIABLE has been defined. 

这是否是范围问题,我可以不使用let作为观察者吗?

这是类型问题吗?我不能将座席集存储为已命名的龟拥有的变量吗?

是否可以使用列表而不是代理集来执行相同的操作?

谢谢

1 个答案:

答案 0 :(得分:2)

根据您的描述,这是一个范围界定问题。但是问题不在于您尝试与观察者一起使用let,而是let的范围。在您要尝试的意义上,NetLogo并不是真正的交互式-由let创建的变量在行尾被丢弃。

如果您键入let test 3,按Enter,然后键入show test,您将得到相同的错误。但是,如果您输入let test 3 show test,则它将返回3。

您为什么需要控制台中的此功能?如果是用于测试,则可以通过show availability轻松地查看它。如果您在模型运行时将其用于海龟,则它不是交互式的,没有问题。