有没有办法在netlogo中创建枚举?

有没有办法在netlogo中创建枚举?,netlogo,Netlogo,我有一些netlogo代码,我想让它更具描述性。 因此,不是: MOVE-TO ONE-OF PATCHES WITH [ PCOLOR = BLUE ] 它会说: MOVE-TO ONE-OF PATCHES WITH [ WATER ] 在java中,我将创建一个枚举来实现这一点。在Netlogo我怎么做?< /P> < P>艾伦的回答是好的,但是我也会考虑创建补丁变量,而不是依赖于补丁颜色。例如: to-report water ;patch proc report pcolor

我有一些netlogo代码,我想让它更具描述性。 因此,不是:

MOVE-TO ONE-OF PATCHES WITH [ PCOLOR = BLUE ]
它会说:

MOVE-TO ONE-OF PATCHES WITH [ WATER ]

在java中,我将创建一个枚举来实现这一点。在Netlogo我怎么做?< /P> < P>艾伦的回答是好的,但是我也会考虑创建补丁变量,而不是依赖于补丁颜色。例如:

to-report water ;patch proc
  report pcolor = blue
end
patches-own [ water? ]
如果您将每个水区的设置为
true
,则可以这样说:

move-to one-of patches with [ water? ]
这样做的主要原因是,您可能希望在某个时间点更改水补丁的颜色:例如,将其设置为略深或浅蓝色,或者使用颜色临时高亮显示具有其他特征的补丁

分离表示和程序语义通常是一种好的做法

实现这一点的另一种不同方法是在安装过程中使用水补丁创建agentset。例如,假设您将
water patches
声明为全局变量,您将执行以下操作:

set water-patches patches with [ pcolor = blue ]
然后你可以做:

move-to one-of water-patches

如果更改修补程序的颜色,
水修补程序
代理集不受影响。它可能也有点快,因为您只构造一次,而不是一遍遍地对所有补丁进行过滤。

< P>艾伦的答案很好,但我也会考虑创建补丁变量,而不是依赖于补丁颜色。例如:

patches-own [ water? ]
如果您将每个水区的设置为
true
,则可以这样说:

move-to one-of patches with [ water? ]
这样做的主要原因是,您可能希望在某个时间点更改水补丁的颜色:例如,将其设置为略深或浅蓝色,或者使用颜色临时高亮显示具有其他特征的补丁

分离表示和程序语义通常是一种好的做法

实现这一点的另一种不同方法是在安装过程中使用水补丁创建agentset。例如,假设您将
water patches
声明为全局变量,您将执行以下操作:

set water-patches patches with [ pcolor = blue ]
然后你可以做:

move-to one-of water-patches

如果更改修补程序的颜色,
水修补程序
代理集不受影响。它可能也会快一点,因为你只构建了一次,而不是一次又一次地过滤所有补丁。

Alan的答案很好,但这个问题向我提出了一个不同的概念。你真正的意思是,补丁是蓝色的,因为它是水,但你用另一种方式对它进行编码,这样颜色就表示它是水。如果你的模型的其他方面(例如,行进速度,作物类型)取决于它是否是水,那么你可以考虑不同的结构。
patches-own
[ water?
]

to setup
  ask patches
  [ set water? FALSE
    if random-float 1 < 0.2
    [ set water? TRUE
      set pcolor blue
    ]
  ]
end
自己的补丁程序
[水?
]
设置
询问补丁
[放水?错
如果随机浮动1小于0.2
[放水?真的吗
设置颜色为蓝色
]
]
终止
在这个构造中,每个补丁都有一个true/false变量,表示它是水(如果为true)。然后,您可以直接使用语句,例如
使用[water?][]
询问修补程序。您还可以设置一个全局变量来保存水补丁的补丁集,然后做出类似于
ask water patches[]


如果你有多种土地类型(如水、沙、土壤、岩石……),那么你的颜色更可能是一种方式,因为你不希望所有这些都有单独的变量。即使这样,你也可以有一个土地风格的属性,并且建筑是
用[type=“water”]

问补丁的,艾伦的答案很好,但这个问题向我提出了一个不同的概念。你真正的意思是,补丁是蓝色的,因为它是水,但你用另一种方式对它进行编码,这样颜色就表示它是水。如果你的模型的其他方面(例如,行进速度,作物类型)取决于它是否是水,那么你可以考虑不同的结构。
patches-own
[ water?
]

to setup
  ask patches
  [ set water? FALSE
    if random-float 1 < 0.2
    [ set water? TRUE
      set pcolor blue
    ]
  ]
end
自己的补丁程序
[水?
]
设置
询问补丁
[放水?错
如果随机浮动1小于0.2
[放水?真的吗
设置颜色为蓝色
]
]
终止
在这个构造中,每个补丁都有一个true/false变量,表示它是水(如果为true)。然后,您可以直接使用语句,例如
使用[water?][]
询问修补程序。您还可以设置一个全局变量来保存水补丁的补丁集,然后做出类似于
ask water patches[]


如果你有多种土地类型(如水、沙、土壤、岩石……),那么你的颜色更可能是一种方式,因为你不希望所有这些都有单独的变量。尽管如此,您仍然可以为“土地样式”设置一个属性,并使用[type=“water”]

完美地创建
ask补丁。谢谢我会接受你的回答,让我在10分钟内说清楚,我同意尼古拉斯和詹关于分开显示和程序逻辑的观点。我试图紧紧抓住所问的问题,并提供一个适用于任何属性的答案。完美。谢谢我会接受你的回答,让我在10分钟内说清楚,我同意尼古拉斯和詹关于分开显示和程序逻辑的观点。我试着紧紧抓住所问的问题,给出一个适用于任何属性的答案。哇。。。我想,伟人的想法是一样的。我们每隔几秒钟就给出了完全相同的答案!或者傻瓜很少有不同,但你的版本更符合我的自我:)我刚刚看到你的,我们给出了不同的理由和例子,所以不妨保留两个。。。我想,伟人的想法是一样的。我们每隔几秒钟就给出了完全相同的答案!或者傻瓜很少有不同,但你的版本更符合我的自我:)我刚刚看到你的版本,我们给出了不同的理由和例子,所以不妨保留bothHey Gabriel,好问题,但你可能想要