2016-08-17 53 views
0

請考慮下面的代碼,用於NetLogo中的相關隨機遊走。從包裹的柯西和威布爾分佈分別採用隨機轉角和隨機步長,並執行相關的隨機遊走。如何調整下面的netlogo代碼,以便它實際執行相關的隨機遊走

turtles-own [ orient step ] 

  
to-report turning-angle-range [ #min #max ] 
report #min + random-float (#max - #min) 

end 

to-report turning-angles-dist [ #correlation #mean-turning-angle] 

let turning-angle ((1 - #correlation^2)/(2 * 180 * (1 + (#correlation^2) - 2 * #correlation * cos ((turning-angle-range 0 180) - #mean-turning-angle)))) 

report turning-angle 

end 

to-report weibull-dist [ #shape #scale #mean-step-length ] 

let mean-step-length ((#shape/#scale) * ((#mean-step-length/#scale)^(#shape - 1)) * exp ((#mean-step-length/#scale)^(#shape))) 

report mean-step-length 

end 

     
to Correlated-Random-Walk 

ask turtles [ 

    pen-down 

    set orient turning-angles-dist corr-eff mean-turn-angle 

set heading orient 

set step weibull-dist 2 10 mean-move-length 

    fd step 

] 

tick 

end 

我現在遇到的問題是,相關randomwalk並沒有實際發生的方式應該。海龜在世界各地以180度的垂直線移動。我猜測應該在每個刻度上選擇的隨機角度和步長不會像他們應該那樣發生或者進入步行過程。請幫忙。

回答

1
  1. 當您粘貼一堆代碼時,確保它在複製和粘貼時運行。
  2. 問題與您的想法完全不同。要看到,請用替換爲以下內容:

to go 
    ask turtles [ 
    pen-down ;but move this to setup 
    Correlated-Random-Walk 
    ] 
    tick 
end 

to Correlated-Random-Walk 
    set heading heading + one-of [-1 1] * 10000 * turning-angles-dist corr-eff mean-turn-angle 
    set step weibull-dist 2 10 mean-move-length 
    fd 50 * step 
end 

唯一的變化是縮放的turning-angles-distweibull-dist結果。

+0

謝謝艾倫!我是堆棧交換新手,所以我正在趕上手續。我發佈的代碼實際上對我有用,所以我不確定它爲什麼不適合你。我想知道在功能本身內改變兩個分佈的縮放比例是否可能更爲謹慎! – nigus21

+0

@ nigus21您的模型使用接口全局變量。當您複製代碼選項卡時,這些不會被複制。 我同意,你應該重寫這些函數。我只是在診斷問題。 – Alan

+0

@Allan看起來,改變角度和階躍分佈函數中的縮放係數將幫助我重新調整相關的隨機遊走,如果您同意,任何建議都將受到歡迎。是的,我的模型使用接口全局變量,這也許就是爲什麼它起初不適合你的原因。謝謝。 – nigus21

相關問題