2014-10-14 2 views
2

슬라이더 바를 사용하는 대신 설정을 사용하지 않고 netlogo에서 시뮬레이션을 더 빠르게 실행할 수있는 코드가 있습니까? 내 코드가해야 할 일은 군중 행동을 시뮬레이트하는 것입니다. 거북이 수가 100 개가 넘으면 잘 작동하지만, 300-800 마리의 거북이를 늘리면 시뮬레이션을 완료하는 데 시간이 오래 걸릴 수 있습니다. 각 진드기는 또한 0부터 1까지 셀 수있는 시간이 매우 오래 걸리며 모든 거북이 죽을 때까지 계속됩니다. 느린 시뮬레이션을 일으키는 것으로 의심되는 한 가지는 거북이에게 대피하도록 요청할 때입니다. 대피 규칙없이 모든 것이 원활하게 진행되어 최대 수의 거북이를 세웠습니다. 대피 대책을 작성하는 다른 방법이있어 더 빨리 달릴 수 있습니까? 감사. 당신의 move 절차에Slave bar를 사용하는 대신에 시뮬레이션을 netlogo에서 더 빠르게 실행하는 방법

to go 
    ask turtles [wander fd 0.01] 

    if emergency? = true [move] 
    if all? turtles [ pcolor = red ] ;stops simuation 
    [stop] 
    tick 
end 

to wander 
    [ do..something] 
end 

to move 
    set time-to-evacuate time-to-evacuate + 1 
    ask turtles [avoid-obstacles fd 0.1] 
    ask turtles [follow-leader fd 0.1] 
    ask turtles [flock fd 0.1] 
    ask turtles with [pcolor != red] [evacuate fd 0.1] 
    ask turtles with [pcolor = red][die] 
end 

to evacuate 
    ask turtles with [color = black ] 
    [let beings-seen patches in-cone 10 135 with [pcolor = red] 
    if any? beings-seen 
    [ let target one-of beings-seen 
     face target]] 

    ask turtles with [color = white ] 
    [let beings-seen patches in-cone 5 135 with [pcolor = red] 
    if any? beings-seen 
    [ let target one-of beings-seen 
     face target]] 
end 

to avoid-obstacles 
    [do something] 
end 

to follow-leader 
    [do something] 
end 

to flock 
    [do something] 
end 
+0

'in-cone'은 계산 상 매우 비쌉니다. –

답변

1

당신은 :

ask turtles with [pcolor != red] [ evacuate ... ] 

그리고 evacuate에 당신이 :

ask turtles with [color = black] [ ... ] 

evacuate 이미 비 붉은 거북이의 모든 의해 운영되고, 그래서 모든 검은 거북이에게 매번 틱 할 때마다 무언가를하도록 요구하는 비 붉은 거북이가 있습니다.

나는 당신이 그것을 의도했다고 생각하지 않습니다.

나는 당신의 의도에 조금 생각해야하지만, 당신은 ifask 교체 evacuate의 경우 내 생각 : 당신이 무엇을 의미하는지에 아마 더 가까이

if color = black [ ... ] 

합니다.

관련 문제