NetLogo 中可以枚举数据类型吗?
Is it possible to have enumerated data types in NetLogo?
NetLogo可以枚举数据类型吗?
假设我有一个婚姻状况变化模型。
一个代理人可以有3种婚姻状态:单身、已婚、离婚。
我想将这些状态映射为数字,以便执行时占用更少的内存。
- 单身=1
- 已婚 = 2
- 离婚 = 3
这样我就可以
ask agents with [ marital-status = single ][ get-married ]
我找到了使用 "to-report"
来做到这一点的技巧
例如:
to-report single
report 1
end
但这意味着如果我要在许多变量中有许多类别,我必须创建许多报告函数。有比这更好的解决方法吗?
谢谢:)
你的模型有多大?我的理解是代理属性无论如何至少为 8 个字节(参见 https://github.com/NetLogo/NetLogo/wiki/Optimizing-NetLogo-Runs)
我想不出一个自然的方法来做到这一点。但是,如果您真的想要,这个解决方法会起作用:将婚姻状况存储为 0、1、2。还存储一个名为 marriage-status-map 的全局变量并使用 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
NetLogo可以枚举数据类型吗?
假设我有一个婚姻状况变化模型。
一个代理人可以有3种婚姻状态:单身、已婚、离婚。
我想将这些状态映射为数字,以便执行时占用更少的内存。
- 单身=1
- 已婚 = 2
- 离婚 = 3
这样我就可以
ask agents with [ marital-status = single ][ get-married ]
我找到了使用 "to-report"
来做到这一点的技巧例如:
to-report single
report 1
end
但这意味着如果我要在许多变量中有许多类别,我必须创建许多报告函数。有比这更好的解决方法吗?
谢谢:)
你的模型有多大?我的理解是代理属性无论如何至少为 8 个字节(参见 https://github.com/NetLogo/NetLogo/wiki/Optimizing-NetLogo-Runs)
我想不出一个自然的方法来做到这一点。但是,如果您真的想要,这个解决方法会起作用:将婚姻状况存储为 0、1、2。还存储一个名为 marriage-status-map 的全局变量并使用 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