我正在建立一个模型,其中乌龟会根据不同的搜索条件为资源“修补”补丁的子集。
我正在尝试创建报告,以返回排序的补丁程序列表或代理集,然后龟可以将其用作搜索的路线。
由于某种原因,我无法将行程存储在乌龟拥有的变量中。
一个示例记者是:
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
作为观察者吗?
这是类型问题吗?我不能将座席集存储为已命名的龟拥有的变量吗?
是否可以使用列表而不是代理集来执行相同的操作?
谢谢
答案 0 :(得分:2)
根据您的描述,这是一个范围界定问题。但是问题不在于您尝试与观察者一起使用let
,而是let
的范围。在您要尝试的意义上,NetLogo并不是真正的交互式-由let
创建的变量在行尾被丢弃。
如果您键入let test 3
,按Enter,然后键入show test
,您将得到相同的错误。但是,如果您输入let test 3 show test
,则它将返回3。
您为什么需要控制台中的此功能?如果是用于测试,则可以通过show availability
轻松地查看它。如果您在模型运行时将其用于海龟,则它不是交互式的,没有问题。