2015-07-19 64 views
0

我正在努力制定一种方法或算法,以使我的代理商沿着道路旅行,同时避免通过“建筑物”以达到食物区域和返回家园为目标。我已经对建筑物和道路进行了编码,但沿着道路的运动证明是困难的。该计划显示了一个8 x 8网格的城市,道路是线路,建筑物是网格的正方形。我把这些建筑物编码为屏障。我需要代理商朝着目的地的最佳路径前进。这是我的代码:寻找netlogo中的代理商

to get-aid 
    ask humans 
    [ 
    ifelse (energy >= 500) 
    [ 
     ifelse (patch-here = origin) 
     [ 
     set energy energy - 10 
     stop 
     ] 
     [ 
     face origin 
     avoid-barrier 
     forward 1 
     set energy energy - 20 
     ] 
    ] 
    [ 
     face min-one-of centres with [aid > 0] 
     [distance myself] 
     avoid-barrier 
     forward 1 
     set energy energy - 20 
    ] 
    ] 
end 

to avoid-barrier 
    if (nobody != patch-ahead 1) and ([barrier?] of patch-ahead 1) 
    [ 
     right 90 + random 180 
     right random 40 
    ] 
end 
+1

你的问题是什么? –

+1

安德鲁,在塞思的评论中扩大了:“沿着道路移动被证明是困难的”:以什么方式?代理商是否根本不移动?他们在某些时候被卡住了吗?他们正在离开道路吗?穿过建筑物?在特定行发生错误吗?尽量提供足够的信息,以便其他人可以找出你需要帮助的东西。 (请记住,我们没有剩下的程序。)如果你向我们展示的代码显示了任何显然不相关的东西(能量?),这也会有所帮助 - 这甚至可以帮助你自己解决问题。 – Mars

+0

我已经设置了白色的补丁是道路,代理可以一起移动。棕色斑块是建筑物,他们无法穿过,并且充当障碍。我的问题是,我希望代理商在沿着道路行驶时使用最佳路线到达目的地,但不通过建筑物。有没有更简单的方法来编码避开障碍的路径移动?由于我的代码看到代理商碰到障碍,转向另一个方向寻找目标。 – andrew

回答

0

我不知道这会工作,我没有代码工作,但是我建议这个所以有人更了解比我可以使它发挥作用。您可以考虑在各个交叉路口创建海龟(隐藏),并为允许的道路提供链接(也隐藏)。然后,您可以使用nw(网络)扩展来执行诸如path-to之类的操作,以查找沿道路的最短距离。