2015-10-21 154 views
3

我在Netlogo有一個小問題,我在幾天前纔開始工作,我試圖與兩個冒險家做一個迷宮,並且讓它們從兩個不同的起始位置開始,到最後一個地點。我的代碼的所有開始都工作得很好,可以畫出我的迷宮,但是當我想讓冒險者走的時候,只有其中一個走向正確的方向並找到出口,而第二個甚至不會沿着問題的方向前進(東)。 我認爲這個問題是在我的GO程序,但我不能達到找到解決辦法...... 這裏是我的代碼,我上的NetLogo 5.2Netlogo while while循環只有一次

to createaventurier 
create-aventuriers pointsdepart 
[set shape "person" 
set color pink 
set size 1 
move-to one-of patches with [pcolor = green] 
ask patch-here 
[set pcolor blue] 
set beta ycor 
] 
show count aventuriers         
end 

這裏的程序在做什麼它應該工作做。

to go 
set i 0 
createaventurier 
while [i < pointsdepart] 
[show count aventuriers 
ask one-of aventuriers 
[set heading 90 
    execute] 
set i i + 1 
] 
show count pas 
end 

而且它在這裏,該計劃的回報,有沒有冒險者(無代理或agentsets),而觀察者返回我有兩個人(當我想兩位冒險家)。我在代碼的開頭就對它們進行了繁殖,並且我在其他程序中使用了很多while循環,這些循環非常完美。 我對軟件並不放心,我只是在尋找一個簡單的解釋,(我的英文也不太好)。 如果您需要我的程序的其他部分,我可以發佈它,但我認爲他們不需要。如果您需要更多信息,我也可以發佈,但我希望我已經清楚。

我提前感謝你。

回答

1

這是您的代碼的簡化版本。我已經將冒險家變成了海龜,所以我不需要breeds,並對變量pointsdepart的數字2進行了硬編碼。它工作正常,總是有2只烏龜。

to setup 
    clear-all 
    ask n-of 20 patches [set pcolor green] 
    reset-ticks 
end 

to make-agents 
    create-turtles 2 
    [ set shape "person" 
    set color pink 
    set size 1 
    move-to one-of patches with [pcolor = green] 
    ask patch-here [ set pcolor blue] 
    ] 
    show count turtles         
end 

to go 
    let i 0 
    make-agents 
    while [ i < 2 ] 
    [ show count turtles 
    ask one-of turtles 
    [ set heading 90 
     forward 1 
    ] 
    set i i + 1 
    ] 
    show count turtles 
end 

這表明,問題出在你的execute功能(我與forward 1代替)。

運行我的代碼將演示一個邏輯問題。您正在循環(本例中爲兩次)並在每個循環中運行ask one-ofone-of選擇一個隨機的烏龜,所以你可能會讓它們每個運行一次你的執行代碼,或者你可能每次都選擇相同的烏龜。這是非常有可能你想要的代碼,看起來更像是這樣的:

to go 
    make-agents    ; note - should really be in setup, not go 
    ask turtles 
    [ set heading 90 
    forward 1 
    ] 
    show count turtles 
end 

此外,你一般會在go過程結束時有一個tick命令以超前的時鐘,然後go過程,所以再次運行海龜繼續移動等。這就是爲什麼我評論說,創建冒險家的電話應該真的在setup程序中,否則每次時鐘前進時會創建另外兩個冒險家。

設置過程適用於模擬開始時需要的所有東西(例如,創建冒險者,設置迷宮,爲冒險者提供初始資源)。去程序是針對正在模擬的實際過程(例如移動,從環境中獲取資源,消耗能量)。

+0

我解決了我的問題,事實上,當我打電話給第二個或任何其他冒險家時,我沒有足夠具體,我只是指定了一種冒險者用於該程序的顏色,並且確定。一開始他們都是黃色的,第一個變成粉紅色並執行程序並死亡。下一個變成粉紅色並執行程序並死亡,等等。感謝您的幫助。 –