2015-01-08 3 views
1

실제로보고 할 논리 조건을 얻지 못하는 것 같습니다. 필자는 "and"로 연결된 여러 논리를 가지고 있는데, 각각의 논리는 그 자체로 사실을보고하고, Im이 거짓으로 연결되면 연결됩니다. 내 코드에 오류가 있어야하지만 찾을 수는 없습니다. 어떤 도움이라도 좋을 것입니다. 내가 GF의 +와 거북이의 수에 대한 모니터를논리적으로보고 할 수 없게됩니다.

globals [ 
     GF-Threshold 
     GF-Probablility] 

turtles own [ GF+?] 

patches own [ GF ] 

to setup [ 
    ask patches [ set GF 30] 
    ask turtles [ set GF+? false] 
    set GF-threshold 20 
    set GF-Probability .9 

to go [ 
    ask turtles [ check phenotype ] 

to check phenotype 
    [ if GF+? = false and GF > GF-threshold and random-float 1 < GF-Probability [ set GF+? true] 

: 아래

는 관련 코드? = true. 위의 코드를 사용하면 모니터에 0이 표시됩니다. 하지만 논리가 사실로보고되어야하므로 모니터에 0보다 큰 값이 표시 될 것으로 예상됩니다. 각 논리를 자체적으로 시도 했으므로 모니터에서 0이 아닌 값을 표시합니다. 내 코드에 잘못된 것이 있습니까? 또한 패치와 거북이 사이의 의사 소통 문제라고 생각하여 여기에 패치를 사용해 보았습니다.

to check phenotype 
    [ if GF+? = false and [GF] of patch-here > GF-threshold and random-float 1 < GF-Probability [ set GF+? true] 

답변

2

코드에 아무런 문제가 없습니다. 이것은 내가 사용했던 것입니다. (예를 들어 실행되도록 구문을 수정했습니다, 예제 코드를 작성할 때 몇 줄을 삭제했다고 가정합니다). 이것은 두 가지 가능성이 있음을 의미합니다. 첫 번째는 거북이를 만들지 않았다는 것입니다 (설치시 해당 줄을 추가해야했습니다).

globals [ 
     GF-Threshold 
     GF-Probability] 

turtles-own [ GF+?] 

patches-own [ GF ] 

to setup 
    clear-all 
    create-turtles 50 
    ask patches [ set GF 30] 
    ask turtles [ set GF+? false] 
    set GF-threshold 20 
    set GF-Probability .9 
end 

to go 
    ask turtles [ check-phenotype ] 
end 

to check-phenotype 
    if GF+? = false and GF > GF-threshold and random-float 1 < GF-Probability 
     [ set GF+? true] 
end 

둘째, 모니터 코드가 문제입니다. 다음은 내가 사용한 코드입니다.

count turtles with [GF+? = true] 

부울 (GF +?)이 true 또는 false인지 확인하기 위해 구문을 사용했습니다. if GF+? = true 대신 if GF+?을 입력하고 if GF+? = false 대신 if not GF+?을 입력 할 수도 있습니다.

+0

실제로 코드 구문이 올바르지 않습니다. 귀하의 예제 코드를 가져 주셔서 감사합니다. 이 코드는 실제로 그 자체로 작동한다는 것을 알지만, 모델에 넣을 때 실제로는 그렇지 않습니다. 나는 다른 일이 있어야합니다. 이상하게도'if GF +? '를 사용한다면? ! = true'' if if GF +? = false'라면 모니터가 예상대로 응답 할 수 있습니다. 이것은 나에게 매우 이상하게 보입니다. 또한'GF + if not if GF +? '를 사용하여 예제를 사용했지만 "T/F가 예상되었지만 숫자가 0"이라는 오류가있었습니다. 아마도 이것은 내가보고있는 것과 관련이 있습니까? 나는 부울을 사용하여 Im라고 생각할 때 숫자를 사용하고 있습니까? 감사합니다 – user3887089

+0

observador> [GF +? = false] 옵저버 : 0 observador> [GF +?]로 카운트 한 거북이. ! = true] 옵저버 : 320 – user3887089

+0

위의 명령은 설치 절차에 따라 명령 창에 제공됩니다. 나는 이것이 어떻게 다른 대답을 줄 수 있는지 이해하지 못한다. – user3887089

관련 문제