NetLogo是否可以枚举数据类型?

时间:2018-08-31 00:33:26

标签: netlogo

是否可以在NetLogo中枚举数据类型?

比方说,我有一个婚姻状况改变的模型。

一个代理人可以具有3个婚姻状态:单身,已婚,离婚。

我想将这些状态映射为数字,以便在执行时占用更少的内存。

  • 单= 1
  • 已婚= 2
  • 离婚= 3

这样我就可以做

ask agents with [ marital-status = single ][ get-married ]

我发现了一种使用“要报告”的方法

例如:

to-report single
   report 1
end

但是,这意味着如果要在多个变量中包含多个类别,则必须创建许多报表功能。有没有比这更好的解决方法?

谢谢:)

1 个答案:

答案 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