2017-04-06 85 views
0

我正在創建一個海龜需要尋找合作伙伴的代碼。這是程序:海龜在netlogo中尋找合作伙伴

patches-own [occupied?] 
turtles-own [partner fed?] 

to find-partners 
let singles turtles with [partner = nobody] 
if not any? singles [ stop ] 

    ask singles 
    [ lt random 50 
    rt random 50 
    fd 1 ] 

ask turtles 
[ 
    if (partner = nobody) and (any? other turtles in-radius 1 with [partner = nobody]) 
    [ set partner one-of other turtles in-radius 1 with [partner = nobody] 

    ask partner [ 
    set partner myself 

]]] 

end 

我想這個程序發生在1滴答,但它需要~500。我該如何解決這個問題?

回答

1

很難說完全沒有你的設置,但它好像while是你想要的。嘗試用while any? singles [替換if not any? singles [stop]

這個想法是,雖然有任何單身,但請繼續運行此循環。要小心,因爲如果「while」條件永遠不能滿足,模型將卡在while循環中。因此,您還需要在while循環中包含行set singles turtles with [ partner = nobody ]。所以在一起,像

to find-partners 
    let singles turtles with [partner = nobody] 
    while [ any? singles ] [ 
     ask singles 
     [ lt random 50 
     rt random 50 
     fd 1 ] 

    ask turtles 
    [ 
     if (partner = nobody) and (any? other turtles in-radius 1 with [partner = nobody]) 
     [ set partner one-of other turtles in-radius 1 with [partner = nobody] 

     ask partner [ 
     set partner myself 

    ]]] 

    set singles turtles with [partner = nobody] 

    ] 

end