2017-05-25 43 views
1

我寫一個程序(Pass-Away-Space)來計算海龜從原點(start-patch)移動的死亡率通過了世界。每隻海龜都會根據距離原點的距離計算自己的死亡率(start-patch)。我試圖完成這個過程的代碼如下:計算海龜死亡的基礎上,從原點的距離中的NetLogo

to Pass-Away-Space 
    ask turtles [ 
    let chances 1 - exp(-1 * mortality * [distance start-patch] of turtles) 
    if chances >= 1 [die 
     set dead-count dead-count + 1 
    ] 
    ] 
end 

我得到的錯誤是預期輸入是一個數字,但得到的名單。我不確定問題是什麼,我想知道是否有人可以指出並糾正代碼的問題。這裏

回答

1

的問題是你的of turtles。由於一問步驟一次影響一個烏龜,在過程中的每個龜以上評估只是其開始修補自身距離的[distance start-patch]所有海龜代替。爲了澄清,請查看以下設置:

globals [ start-patch ] 

to setup 
    ca 
    reset-ticks 
    crt 10 [ 
    setxy random 30 - 15 random 30 - 15 
    ] 
    set start-patch patch 0 0 
end 

to incorrect-example 
    ask turtles [ 
    print ([ distance start-patch ] of turtles) 
    ] 
end 

to correct-example 
    ask turtles [ 
    print distance start-patch 
    ] 
end 

比較incorrect-examplecorrect-example程序的打印輸出,你會看到,當你使用[distance start-patch] of turtles你得到所有海龜的距離的列表。當你ask turtles評價一個turtles-own變量(包括顏色,大小等),每個龜會自動訪問自己的那個版本可變沒有必要指定哪個龜。所以,你的pass-away-space可能看起來更像下面(未經測試):

to Pass-Away-Space 
    ask turtles [ 
    let chances 1 - exp(-1 * mortality * (distance start-patch)) 
    if chances >= 1 [ 
     die 
    set dead-count dead-count + 1 
    ] 
    ] 
end