2014-06-16 2 views
2

나는 반 거룻배로 움직이고 나머지 절반은 잠자는 거북이들, 내 모델에 원숭이 그룹을 가지고있다. 그들이 움직일 때 그들은 과일을 먹고 그로부터 에너지를 얻습니다. 움직일 때 에너지를 잃습니다. 굶어 죽을 에너지가 -10이면 (에너지 100에서 시작합니다) 나는 진드기가 하루라고 가정합니다. 지금 일어나는 일은 이동 및 수면 상태를 추가 한 후 모두 1 개 또는 2 개의 틱으로 굶어서 그 이유를 파악할 수 없다는 것입니다. 문제는 카운트 다운 또는 틱 (tick)과 관련이 있다고 생각합니다. 아래 코드의 일부입니다. 고마워요!거북이는 반나절 동안 "자고있다"

to move 
    ask monkeys [ 
    move-monkeys 
    set count-down count-down - 1 
    if count-down <= 0 
    [set state task sleep 
    set count-down 0.5 + 0.5 
    ] 
    ] 

end 

to sleep 
    ask monkeys [ 
    set count-down count-down - 1 
    set label count-down 
    if count-down <= 0 
    [set state task move 
    set label "" 
    set count-down 0.5 + 0.5 
    ] 
    ] 
end 
to move-monkeys 

    ask monkeys [ 

    set best-patch patches with-max [calories] in-radius 3 

    right random 360 fd 1 

    set energy energy - 10 ;; monkeys lose energy when they move. 

    if is-patch? best-patch 
    [ ifelse patch-here = best-patch 
[eat-fruit] 

[evaluate]] 


    if energy < 10 
     [output-print "starve" 
     set nostarve nostarve + 1 
     die] 

    ] 


      end 
+0

'set count-down 1 '대신'set count-down 0.5 + 0.5'를 쓰는 이유는 무엇입니까? –

+0

''카운트 다운 0.5 '만 가능합니까? 진드기가 하루라고 가정하고 나는 그들이 반나절 동안 그 주에 있기를 원한다. (어쩌면 내가 진드기와 카운트 다운에 대한 나의 이해에 완전히 틀리다 ...) 미안하다. Netlogo에 처음 온다. – Luna

답변

2

also posted on Netlogo user group - 코드가 있습니다.

모델에서 원숭이가 틱 사이를 돌아 다니는 것처럼 들리는군요. 따라서 매 사이클마다 원숭이가 12 시간 동안 움직입니다. 원숭이에게 화면을 업데이트 해달라고 요청하지 않는 한,이 모든 것을 보지 못할 것입니다. 이것은 잘못된 것을 발견하는 동안 도움이 될 것입니다. 당신이 할 경우에만 몇 원숭이를 사용하십시오.

일의 몇

내가

1) 왜 당신은 수면과 이동주기를 필요합니까 볼 수 있습니까? 자는 동안 에너지를 되찾고 있습니까? 그렇지 않은 경우 24 시간 중 12 시간 동안 이사하도록 요청하고 그렇지 않으면 다른 작업을하지 마십시오. 그들이 멈 추면 카운트를 12로 리셋합니다. 예 :

ask monkeys 
[ 
ifelse my-time >=0 
[move 
set my-time my-time - 1] 
[set my-time 12]     -sets my-time 12 and stops whats it's doing 
] 

2) 가장 적합한 패치를 찾아달라고 요청하지만 무작위로 이동하도록 요청합니다. 당신은 그들이 최상의 패치로 이동하기를 원합니 까? 그렇다면 최선의 패치를 사용하십시오.