2014-11-26 2 views
0

"거북이"라고 불리는 과정에서 거북이가 이미 빈 카드를 향해 돌았 으면, 거북이에게 빈 패치를 앞으로 옮기라고 알려주는데 어려움을 겪고 있습니다.거북을 NetLogo의 앞쪽 빈 패치로 옮깁니다.

 let ahead patch-ahead 1 
    let vacant-ahead ahead with [not any? turtles-here ] ;;this line needs fixing 
     if any? turtles  
        [turn-turtle if vacant-ahead [fd 1]] 

이 오류는 생성되지만 해결 방법은 없습니다.

WITH expected input to be an agentset but got the patch (patch 1 -2) instead. 
error while solute 2 running WITH 
    called by procedure MOVE-TURTLE 
    called by procedure GO 
    called by Button 'go' 

그냥보다 읽기 쉬운 방식으로 일부 의견에 회신 : 난 그냥 내 코드의 작은 조금 밖으로 찍은 것처럼 나는 그것을 아주 잘 설명 생각하지 않는다 죄송합니다. 어쩌면 이것이 더 합리적 일 수 있습니다.
to go 
ask turtles 
[move-turtle] 
end 

to move-turtle 
turn-turtle 
if (not any? turtles-on patch-ahead 1) 
[fd 1] 
end 

그래서 나는 단지 그들이 "싹"경우와 같은 바람직하게는, 전체 패치를 차지, 앞서 빈 패치 1 "턴 거북이"로 설정되어있는 거북이를 이동하려면이 코드를합니다. 감사!

+0

패치가 비어 있지 않으면 어떻게 될까요? –

+0

기본적으로 오류는 단일 패치에서 "함께"사용할 수 없다고 말합니다. 코드에서 "ahead"변수를 하나의 패치 (patch-ahead 1)로 정의하고 "with"를 사용하여 "vacant-ahead"변수를 정의하려고합니다. 이는 집합이 아닌 무언가의 하위 집합을 만들 수 없기 때문에 불가능합니다. 코드의 목적이 무엇인지는 분명하지 않습니다. 정확히 거북이가해야 할 일은 무엇입니까? – drstein

+0

기본적으로 단어에서 나는 단지 빈 자리로 앞으로 1 이동하도록되어있는 거북이 싶습니다. 비어 있지 않으면 아무것도하지 않습니다. 예를 들어 'and'를 대신 사용해 보았습니다. '앞에 (앞쪽에) 그리고 (거북이 - 여기에)'을 비워 둡니다. 그러나 그것은 도움이되지 않습니다. –

답변

1

ahead을 단일 패치로 사용하려면 조금 다른 것을하고 싶다고 생각하는 소리가납니다. 따라서 아마도

to move 
    ifelse (any? turtles-on patch-ahead 1) [ 
    turn-turtle 
    ][ 
    fd 1 
    ] 
end 
+0

본문의 편집 내용을 참조하십시오. 시도해 주셔서 감사합니다! –

관련 문제