NetLogo 中可以枚举数据类型吗?

Is it possible to have enumerated data types in NetLogo?

NetLogo可以枚举数据类型吗?

假设我有一个婚姻状况变化模型。

一个代理人可以有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