2012-11-22 52 views
1

我已經在這裏看了:Example codeDescription的NetLogo計算從選定點的距離四面八方

NetLogo project with vector map data

我使用矢量地圖,是道路。然後我畫道路的地方。在起點的圖像,這是拉脫維亞的首都(里加)。左邊是文茨皮爾斯市,女巫距離里加約200公里。最高的是拉脫維亞/愛沙尼亞邊界,也是大約200公里。到底部約100公里。

我想要的是計算我需要放置汽車充電站的地方。隨着平均綠色汽車可以駕駛全電池50公里。所以。我知道文茨皮爾斯大約有200公里。在那條路上我們需要4個充電站。

想法1號是從出發地充電站到全部方向每隔50千米。 (圖片上的樹符號)。此時充電站(樹木)本人將在隨機位置:

to setup-stacijas 
    set-default-shape boats "tree" 
    create-boats num-boats [ 
    set speed 0 ; min-speed + random-float (max-speed - min-speed) 
    let l one-of links 
    set size 18 
    set-next-stacija-link l [end1] of l 
    ] 
end 

to set-next-stacija-link [l n] ;; boat proc 
    set cur-link l 
    move-to n 
    ifelse n = [end1] of l [set to-node [end2] of l] [set to-node [end1] of l] 
    face to-node 
end 

問題:

如何計算距離XX公里四面八方?

Vector map with links and random charging stations

回答

1

的試劑(貼劑或龜)可以使用的距離與MOD操作者沿原始發現是50「里程」遠的倍數的其它試劑。

我假設在我們的模擬中1 patch = 1英里。
我假設「鏈接」連接到品種「節點」的海龜。
我假設START是一個包含「節點」的變量。

;; get all nodes that are multiples of 50 miles from start 
let stations no-turtles 
ask start [ set stations nodes with [ (floor distance myself) MOD 50 = 0 ] 

這並不完美,原因很多。

  • 它假設所有鏈接都是1個單位或更少的長度。
  • 在50英里範圍內穿過或沿着圓弧行駛的道路將全部包含在內,因此它們將全部擁有車站。
  • 其他奇怪的東西,我沒有想過。

其他一些迭代方法提出自己:在道路上

  1. 設置「旅行」到「滴」的充電站每50(左右)英里。

    • 在路口,旅客分裂成新的旅客出行每個分支
    • 當遊客遇到一個旅行者,如果從每個旅行者到最後「站」的總距離爲50英里以上,創建站。無論如何,兩位旅客都會死亡。
    • 當旅客發現一個現有的車站時,它會死亡。

    通過這種方式,車站將被放置在所有道路上。

  2. 用站點填充修補程序,以六邊形網格,半徑25英里。讓他們遷移。

    • 使不在道路上的車站向最近的道路移動。
    • 一個所有車站都發現了一條道路,使車站遠離50英里以外的車站<,沿道路移動(通過從地圖中心移開來打破平局)。
    • 碰到邊緣的電臺將「脫落」(死亡)
    • 因此,電臺將自己放空,並且額外的電臺將從地圖的邊緣脫落。

    這可能確實有效。

  3. Overfil與車站,然後銷燬,直到只是有剛夠

    • 道路上的每英里創建站。
    • 選擇一個站
    • ##詢問所有其它站49英里半徑死 - 其標記
    • 挑站的1個50英里。
    • 從##重複所有站都被標記。

    那一個可能不是最優的。

  4. 模擬您的道路上的汽車 - 創建他們死的車站。

    • 隨機將汽車放在您的道路上(從城市出發)。汽車可以在需要充電之前行駛約50英里(死亡)
    • 沒有車站
    • 模擬隨機在道路上行駛的汽車。
    • 當汽車撞到站它充電完全
    • 如果汽車耗盡前,死了,和該補丁/節點/位置計數器增加
    • 重複
    • 時在櫃檯補丁超過某個值,在那裏放一個站。
    • 當一個站點被創建時,50英里半徑內的所有補丁的計數器被減小到0,最接近站點,0最遠,以灰色方式。

    最終,站點會彈出它們需要的地方。這一個將很有趣。

~~ James