2015-07-19 63 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之類的操作,以查找沿道路的最短距離。