Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在NetLogo中使用关键字为turtles on的turtles集合_Netlogo - Fatal编程技术网

如何在NetLogo中使用关键字为turtles on的turtles集合

如何在NetLogo中使用关键字为turtles on的turtles集合,netlogo,Netlogo,从示例开始: to move-cars ask turtles with [ shape = "car"] [ ifelse not can-move? 1 [ die! ] [ ifelse [ pcolor ] of patch-ahead 1 = red [] [ifelse any? turtles-on patch-ahead 1 [] [ fd 1 ] ]] ] 这是我搬家的程序。只有在前方没有红色区域或前方没有车辆时,车辆才能移动 我遇到的

示例开始

to move-cars
  ask turtles with [ shape = "car"] [
    ifelse not can-move? 1
      [ die! ]
      [ ifelse [ pcolor ] of patch-ahead 1 = red [] [ifelse any? turtles-on patch-ahead 1 [] [ fd 1 ] ]]
  ]
这是我搬家的程序。只有在前方没有红色区域或前方没有车辆时,车辆才能移动

我遇到的问题是由ifelse第二部分中的海龟引起的,因为它检查所有海龟。我确实有好几种汽车品种,还有其他我不想检查的海龟代理商。我只想检查海龟是否为特定的海龟设置打开。在这种情况下

turtles with [ shape = "car" ]
总而言之,我想问:(大写)前面一块空地上有车形的海龟吗?

我试过了,但没用:

[ ifelse [ pcolor ] of patch-ahead 1 = red [] [ifelse any? turtles-on turtles with [shape = "car"] patch-ahead 1 [] [ fd 1 ] ]]
最后,我解决了这个问题,但这个解决方案既丑陋又多余。我检查了是否有特定的品种领先一个补丁,因为我知道我可以在
上使用品种。这是:

[ ifelse [pcolor] of patch-ahead 1 = red [] [ ifelse any? carsSN-on patch-ahead 1 or any? carsSE-on patch-ahead 1 or any? carsEN-on patch-ahead 1 or any? carsWS-on patch-ahead 1 or any? carsNS-on patch-ahead 1 or any? carsNE-on patch-ahead 1 or any? carsES-on patch-ahead 1[  ] [ fd 1 ] ] ]

您能建议更好的方法在特定代理集上使用turtles吗?

您使用[shape=“car”]的
方法存在一些语法问题,否则应该是可行的方法。您不能在海龟上使用
海龟
,因为
海龟只在补丁上下文中才有意义。同样,您需要使用
的原语
指示您想要特定补丁(补丁前1)的上的海龟。您的方法的一个变体是:

  ask cars [
    if patch-ahead 1 != nobody [
      if [pcolor] of patch-ahead 1 != red and [ count turtles-here with [ shape = "car"] ] of patch-ahead 1 = 0 [
        fd 1
      ]
    ]
  ]
另外,您在任何情况下使用
ifelse
而不是仅使用!=在if语句中(就像我在这里做的那样)


作为补充说明,我个人建议不要在不同方向行驶的汽车上使用不同的品种。我更喜欢一个能遵循相同规则的单一品种。它更干净,而且你仍然可以在品种内区分(例如,海龟自己的开始方向)。它还可以通过只处理一个品种来消除您在这里遇到的问题。也就是说,我相信在某些情况下,多品种会更好,如果它对你的模型有意义,那就太好了

您使用[shape=“car”]
的方法有一些语法问题,否则应该是可行的方法。您不能在海龟上使用
海龟
,因为
海龟只在补丁上下文中才有意义。同样,您需要使用
的原语
指示您想要特定补丁(补丁前1)的上的海龟。您的方法的一个变体是:

  ask cars [
    if patch-ahead 1 != nobody [
      if [pcolor] of patch-ahead 1 != red and [ count turtles-here with [ shape = "car"] ] of patch-ahead 1 = 0 [
        fd 1
      ]
    ]
  ]
另外,您在任何情况下使用
ifelse
而不是仅使用!=在if语句中(就像我在这里做的那样)


作为补充说明,我个人建议不要在不同方向行驶的汽车上使用不同的品种。我更喜欢一个能遵循相同规则的单一品种。它更干净,而且你仍然可以在品种内区分(例如,海龟自己的开始方向)。它还可以通过只处理一个品种来消除您在这里遇到的问题。也就是说,我相信在某些情况下,多品种会更好,如果它对你的模型有意义,那就太好了

[在这里用[shape=“car”]]计数海龟,前面的补丁1=0
效果很好。。。感谢您的帮助
[使用[shape=“car”]]的patch ahead 1=0在这里计算海龟数
效果很好。。。谢谢你的帮助