Netlogo:在这种情况下如何比较 ID 然后标记?
Netlogo: How to compare the ID and then flag in this case?
我想为 ID 最小的乌龟设置一个名为 "min-id" 的标志。我想将其他海龟标记为 "not-min-id"。但是,以下示例语法有错误。报错信息如下
" 海龟 0 运行 时出错 >
由程序 GO 调用
由按钮调用 'go' "
我可能需要你的建议。谢谢。
globals [ min-id not-min-id count-up ID ]
to go
reset-ticks
ask patch 0 0
[
sprout 1 ;;This model needs to use sprout.
]
ask (turtles-on patch 0 0)
[
set ID who
setxy min-pxcor 0
set heading 90
]
if (count turtles > 0)
[
ask min-one-of turtles [who]
[
set min-id TRUE
]
]
if (count turtles > 0)
[
ask (turtles-on patch 0 0)
[
if ID > min-one-of turtles [who] ;;This syntax has errors.
[
set not-min-id TRUE
]
]
]
ask (turtles-on patch 0 0) with [not-min-id]
[
set count-up count-up + 1
]
if (count turtles > 0) [
ask (turtles-on patch 0 0) with [min-id]
[
die
]
tick
end
您的代码有些混乱。根据您的描述,我相信您希望每只乌龟都有一个标志,表明它是否拥有最少的人数。这意味着您需要为每只海龟准备一面旗帜。但是,您已将 min-id 设置为全局变量而不是 turtle 变量。此外,您只需要标志变量一次(也就是说,您需要 min-id 但不需要 not-min-id)并将其设置为 TRUE 或 FALSE。
替换
globals [ min-id not-min-id count-up ID ]
和
globals [ count-up ID ]
turtles-own [ min-id ]
看看是否可以解决问题。同时将 min-id 初始化为 FALSE 作为 sprout
.
的一部分
说了这么多,我非常同意 Alan 的观点,如果您在调试中将 who
变量用于除打印语句之外的任何内容,您可能需要重新考虑您的代码。在您的案例中,who
编号最小的乌龟有什么特别之处让您想跟踪它?你只是想要一只恰好在特定位置的随机乌龟吗?然后 select 在该位置的随机乌龟执行 TRUE/FALSE 而无需经过 who
.
我想为 ID 最小的乌龟设置一个名为 "min-id" 的标志。我想将其他海龟标记为 "not-min-id"。但是,以下示例语法有错误。报错信息如下
" 海龟 0 运行 时出错 > 由程序 GO 调用 由按钮调用 'go' "
我可能需要你的建议。谢谢。
globals [ min-id not-min-id count-up ID ]
to go
reset-ticks
ask patch 0 0
[
sprout 1 ;;This model needs to use sprout.
]
ask (turtles-on patch 0 0)
[
set ID who
setxy min-pxcor 0
set heading 90
]
if (count turtles > 0)
[
ask min-one-of turtles [who]
[
set min-id TRUE
]
]
if (count turtles > 0)
[
ask (turtles-on patch 0 0)
[
if ID > min-one-of turtles [who] ;;This syntax has errors.
[
set not-min-id TRUE
]
]
]
ask (turtles-on patch 0 0) with [not-min-id]
[
set count-up count-up + 1
]
if (count turtles > 0) [
ask (turtles-on patch 0 0) with [min-id]
[
die
]
tick
end
您的代码有些混乱。根据您的描述,我相信您希望每只乌龟都有一个标志,表明它是否拥有最少的人数。这意味着您需要为每只海龟准备一面旗帜。但是,您已将 min-id 设置为全局变量而不是 turtle 变量。此外,您只需要标志变量一次(也就是说,您需要 min-id 但不需要 not-min-id)并将其设置为 TRUE 或 FALSE。
替换
globals [ min-id not-min-id count-up ID ]
和
globals [ count-up ID ]
turtles-own [ min-id ]
看看是否可以解决问题。同时将 min-id 初始化为 FALSE 作为 sprout
.
说了这么多,我非常同意 Alan 的观点,如果您在调试中将 who
变量用于除打印语句之外的任何内容,您可能需要重新考虑您的代码。在您的案例中,who
编号最小的乌龟有什么特别之处让您想跟踪它?你只是想要一只恰好在特定位置的随机乌龟吗?然后 select 在该位置的随机乌龟执行 TRUE/FALSE 而无需经过 who
.