2017-04-06 84 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