是否可以在NetLogo中枚举数据类型?
比方说,我有一个婚姻状况改变的模型。
一个代理人可以具有3个婚姻状态:单身,已婚,离婚。
我想将这些状态映射为数字,以便在执行时占用更少的内存。
这样我就可以做
ask agents with [ marital-status = single ][ get-married ]
我发现了一种使用“要报告”的方法
例如:
to-report single
report 1
end
但是,这意味着如果要在多个变量中包含多个类别,则必须创建许多报表功能。有没有比这更好的解决方法?
谢谢:)
答案 0 :(得分:1)
您的模型有多大?我的理解是,无论如何,座席属性至少为8个字节(请参见https://github.com/NetLogo/NetLogo/wiki/Optimizing-NetLogo-Runs)
我想不出一种自然的方式来做到这一点。但是,如果您确实希望这样做,则可以采用以下解决方法:将婚姻状况存储为0、1、2。还要存储一个称为结婚状态映射的全局变量,并使用item
原语。所以看起来像这样:
globals [ marriage-status-map]
turtles-own [ marriage-status ]
to testme
clear-all
set marriage-status-map ["single" "married" "divorced"]
create-turtles 10
[ set marriage-status random 3
setxy random-xcor random-ycor
set color blue
]
ask turtles with [item marriage-status marriage-status-map = "single"] [set color red]
end