Netlogo 在节点中移动代理

Netlogo 在节点中移动代理,netlogo,move,shape,shapefile,Netlogo,Move,Shape,Shapefile,我正在尝试将我的代理从我的道路网络的一个顶点移动到另一个顶点,该顶点包含以下代码。然而,我得到了一个错误,移动到预期的输入是一个代理,但没有得到任何人。 如果已经定义了新位置,那么该代码将作为slocation代理集的一部分,问题出在哪里 to go ask citizens [start-movement] move end to start-movement let nearest-node min-one-of nodes [distance myself] set slocation

我正在尝试将我的代理从我的道路网络的一个顶点移动到另一个顶点,该顶点包含以下代码。然而,我得到了一个错误,移动到预期的输入是一个代理,但没有得到任何人。

如果已经定义了新位置,那么该代码将作为slocation代理集的一部分,问题出在哪里

to go
ask citizens [start-movement]
move
end

to start-movement
let nearest-node min-one-of nodes [distance myself]
set slocation nearest-node
move-to slocation
end

    to move
    ask citizens 
    [let new-location one-of [link-neighbors] of slocation
    move-to new-location
    set slocation new-location]
    end

下面是一个完整的最低限度的工作示例,用于复制代码并添加使其运行所需的设置和品种信息

breed [ citizens citizen ]
citizens-own [slocation]
breed [ nodes node ]

to setup
  clear-all
  create-nodes 20 [ set color blue setxy random-xcor random-ycor ]
  ask nodes [ create-links-with n-of 2 other nodes ]
  create-citizens 1 [ set size 3 set color red ]
end

to go
  ask citizens [start-movement]
  move
end

to start-movement
  let nearest-node min-one-of nodes [distance myself]
  set slocation nearest-node
  move-to slocation
end

to move
  ask citizens 
  [ let new-location one-of [link-neighbors] of slocation
    move-to new-location
    set slocation new-location
  ]
end
这个很好用。正如我在评论中所建议的,最可能的问题是您的一个公民碰巧从一个没有任何链接邻居的节点开始。检查这一点的方法是
显示具有[非任何?链接邻居]的计数节点。
。错误是在链接邻居集中找不到任何代理


如果节点仅用于标记道路,则只需删除任何未标记道路的节点。如果还有其他节点,则您需要将您的公民限制为道路航路点的节点。

请确认节点是一种海龟,并且位置在
节点拥有的
语句中。是否可能选择的位置实际上没有任何
链接邻居
?也许
用[not any?]link neights来计算节点数以确保。我创建了一个繁殖节点,但slocation是移动公民自己的,如果不是的话,我得到了一个错误。我创建繁殖节点和公民自己的slocation的错误预期输入是一个代理或代理集,但得到了数字0。好的,公民也是海龟的一个品种吗?公民拥有的
是否包括位置?