2017-03-14 14 views
1

저는 Netlogo를 처음 사용하고 있으며, 깊은 목소리로 들려 왔습니다. 각각의 거북이는 1 ~ 9 사이의 숫자 인 가변 식민지를 가지고 있습니다. 나는 그와 같은 식민지 번호를 가진 가장 가까운 이웃을 향한 거북이의 얼굴을보고 싶다. 그런 다음 움직입니다 (그 비트는 잘 작동합니다). 순간에 나는이 작품과 하나의 중앙 위치로 이동하는 모든 거북이를 얻을 수다른 거북에게 해당 변수에 대해 설명하기

let newTurtle min-one-of other turtles [10] 
let variableA [ask newTurtle [colony]] 
ifelse colony = variableA newTurtle [face newTurtle] [rt random 360] 
move-forward 

이 : 나는 무엇을 시도했다

let newTurtle min-one-of other turtles [10] 
face newTurtle 
move-forward 

는 식민지에 대한 이웃에게 물어 거북이를 얻는 것입니다 , 같은 방향으로 움직이면 다른 방향으로 움직인다. "예상 된 문자 값"은 현재 두 번째 줄과 관련된 오류입니다. 이것이 정확히 내가 원하는 것은 아니지만이 작업을 수행 할 수는 없다는 것을 알고 있습니다. 이 문제 또는 내 주요 문제에 대한 도움을 주시면 감사하겠습니다 !! 감사합니다

답변

2

첫 번째 블록에서 min-one-of을 사용하면 주요 문제가 발생할 수 있습니다. dictionary entry for that primitive을 확인하고 리포터가 매개 변수 중 하나 인 것을 요구하므로 "[10]"이 작동하지 않습니다. 또한 min-one-of은 실제로 리포터의 가장 낮은 값을 묻습니다. 그래서 저는 여러분이 조금 다른 방식으로 접근해야한다고 생각합니다. 이것을 다음 단계로 나눌 수 있습니다.

ask turtles [ 
    let my_colony other turtles with [ colony = [colony] of myself ] 

이는 행동 거북이가 속한 세상의 모든 거북이 구성 "my_colony"라는 임시 변수를 만들 것이다 : 첫째, 같은 식민지있는 그 거북을 식별 할 행동 거북이를 얻을 수 거북이와 같은 식민지. 그런 다음, 거북이가 그 그룹의 가장 가까운 구성원을 선택하기를 원합니다.

여기 let target min-one-of my_colony [ distance myself ]

, min-on-of 대한 agentset는 "my_colony가"및 리포터가 가장 작은 값을 갖는 "my_colony"의 거북를 반환하는 "[자신 거리]"이다 동일한 코드 블록 거북이와 거리가 멀다. 그런 다음 대상이 존재하는지 확인하십시오. 그렇지 않으면 특정 식민지에 거북이가 하나만 있으면 오류가 발생합니다. 동일한 코드 블록에서 여전히 :

if target != nobody [ 
     face target 
     fd 1 
    ] 

잘하면 그게 시작 됐으면 해명이 필요한지 알려주세요.

+0

굉장! 그건 의미가있다, 나는 그것을 줄 것이다. 다시 한 번 감사드립니다. – pokeairguy