ask
을 사용하여 모든 거북이를 감싸고 싶지만 이 아닌은 임의 순서가 되길 원합니다. 내 솔루션이 목록을 통해 자신의 ID으로 분류 목록, 다음 루프 거북을 모두 추가하는 것입니다목록에있는 모든 거북이에게 물어 보는 방법
let sorted-turtles sort-on [who] turtles
foreach sorted-turtles [
x -> ask x [ ; x is the turtle
; do something
]
]
제대로 작동
하지만 은 크게 내 모델 속도가 느려집니다.
제 질문은 모든 거북이에게 사전 정의 된 순서로 무언가를하도록 요청하는 가장 좋은 방법입니까?
내가 직접 목록에 ask
를 사용하여 시도했다 (예를 들어 ask sorted-turtles [ print who ]
하지만 NetLogo이 ask
이 목록보다는 agentset 필요하다고 말한다. 사전에
감사합니다, 닉
"... 정렬 된 목록을 다시 만들려면"또는 목록을 업데이트하십시오. 예를 들어, 새 거북이를 만들려면 이미 정렬 된 목록의 올바른 위치에 삽입하십시오. – mattsap
@mattsap 좋은 지적. 삽입은 목록의 끝에서 (아마도 O (1)이기 때문에) 발생하기 때문에 쉽습니다. 그러나 O (n) 인 올바른 에이전트에 대한 목록을 스캔해야하기 때문에 삭제가 더 어려워 질 수 있습니다. 아니면 죽은 에이전트를 목록에 남겨두고 루프에'! = nobody'에 대한 체크를 추가 할 수 있지만 상황에 따라 많은 에이전트가 생성/제거되면 관리하기 어려워 질 수 있습니다. 그럴만 한 가치는 없어 ... –
정확하게 '기억해두면'거북이 분류는 이미 내부적으로 정렬 된 순서이기 때문에 실제로 거북이를 분류 할 필요가 없습니다 –