2017-12-18 26 views
0

나는 내가 죽을 일부 에이전트에게 다음과 같은 코드가 있습니다자신의 색상을 변경

breed [ readers reader ] 
breed [ pallets pallet ] 
breed [ trucks truck ] 

readers-own [ 
    truck-being-served 
    pallet-being-served ] 

to complete-service [ ?reader ] 
    ask ?reader [ 
     ask pallet-being-served [ die ] 
     set pallet-being-served nobody 
     ask truck-being-served [ 
     if not any? pallets-in-truck [ 
      ask self [ die ] 
      ask myself [ 
      set truck-being-served nobody 
      set color green 
      set next-completion-time 0 
      ] 
     ] 
     ] 
    ] 
end 

경우 pallet-being-servedtruck-being-served는 팔레트 트럭 요원을. 문제는 내부의 ask myself [...이 작동하지 않는 것 같습니다. ?reader 에이전트의 색상이 녹색으로 바뀌지 않기 때문입니다. 여기에서 제가 방금 살해 한 에이전트 ?reader 또는 truck-being-served을 언급하고 있는지 확실하지 않습니다. 색상을 녹색으로 변경하고 싶습니다. ask myself [ ...은 독자 상담원을 언급합니까?

감사합니다.

+0

당신이 (아마도'self' 문) 언급하는 거북 무엇을 모르는 경우 -이 문제를 디버깅하는 가장 쉬운 방법은 코드의'요청 self' 블록에'print' 문을 사용하는 것입니다. – JenB

+0

'ask self'는 NetLogo에 쓰기에 적절하지 않습니다. _always_는'foo'만으로 ask self [foo]를 대체 할 수 있습니다. 항상 똑같은 것을 의미합니다. –

답변

2

죽은 거북에게 무언가를하도록 요청하면 효과가 없습니다. 또한 문제를 보여주는 실행 가능한 최소 예제를 제공하십시오.

globals [next-completion-time] 
breed [ readers reader ] 
breed [ pallets pallet ] 
breed [ trucks truck ] 

readers-own [ 
    truck-being-served 
    pallet-being-served ] 

trucks-own [pallets-in-truck] 

to setup 
    ca 
    create-readers 1 
    create-trucks 1 
    create-pallets 1 
    ask reader 0 [set truck-being-served truck 1] 
    ask truck 1 [set pallets-in-truck pallets] 
    ask reader 0 [set pallet-being-served one-of [pallets-in-truck] of truck 1] 
end 

to complete-service ;reader proc 
    ask pallet-being-served [ die ] 
    ask truck-being-served [ 
    if not any? pallets-in-truck [ 
     ask myself [ 
     set color green 
     set next-completion-time 0 
     ] 
     die 
    ] 
    ] 
end 

to test 
    setup 
    ask reader 0 [complete-service] 
end 
+0

고맙습니다. 내 잘못이라고 생각합니다. 나는 나 자신에게 묻는다. 아마 나는 트럭으로 운행하는 것을 언급하고있다. 나는 독자 요원의 색깔을 바꾸고 싶습니다. 그러나'ask-being-served [...]를 부탁드립니다. 두번째로 본 후에 나는 당신의 해결책을 이해할 수 있다고 생각합니다. 대단히 감사합니다, 당신 말이 맞아요. – pablo