Vedo una differenza di comportamento tra un pulsante dell'agentet (patch, tartaruga, collegamento) che esegue una determinata sezione di codice e un pulsante dell'osservatore che ask
s patches
(o turtles
o links
) per eseguire la stessa sezione di codice. Si tratta di un bug in NetLogo? È un bug nel mio codice?Perché un pulsante Agentset si comporta diversamente da un pulsante dell'osservatore che chiede al gruppo agenti?
risposta
La causa della differenza di comportamento non è in realtà un bug, ma un angolo piuttosto oscuro di NetLogo. La primitiva ask-concurrent
si trova al centro di questo comportamento. Un pulsante dell'agente utilizza lo stesso meccanismo di ask-concurrent
dietro le quinte. Sostituire qualsiasi pulsante dell'agentet con un pulsante observer che utilizza ask-concurrent
per eseguire lo stesso codice sullo stesso agentet non dovrebbe modificare il comportamento del pulsante.
In genere le differenze tra ask
e ask-concurrent
non ammontano a molto. Le tartarughe possono muovere leggermente in modo diverso, ma funzioneranno praticamente allo stesso modo. In alcuni casi però, le differenze possono essere davvero drammatiche. La libreria dei modelli NetLogo fornisce un modello chiamato "Esempio concomitante" che esplora le differenze tra ask
e ask-concurrent
.
C'è anche una documentazione su questo nella Guida alla programmazione di NetLogo, nella sezione "Pulsanti di tartaruga, patch e collegamento per sempre" di http://ccl.northwestern.edu/netlogo/docs/programming.html#buttons; si applica anche la maggior parte della sezione su ask-concurrent allo http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent.
Nota: l'uso di ask-concurrent
non è consigliato. Lo sto usando qui per chiarire il comportamento, ma dovrebbe essere non essere usato in generale.
Nota 2: In generale, l'approccio più sicuro e più prevedibile è quello di non utilizzare affatto tartaruga, patch e pulsanti di collegamento. Utilizzare invece solo i pulsanti Observer e utilizzare ask turtles
, o ask links
nel codice del pulsante, a seconda dei casi.
- 1. Fare un'immagine si comporta come un pulsante
- 2. Stile un pulsante per apparire come un EditText (ma si comporta ancora come un pulsante)
- 3. Perché vi si comporta diversamente in Ubuntu rispetto a CentOS?
- 4. Ruby 1.9 Array.to_s si comporta diversamente?
- 5. Perché il compilatore si comporta diversamente con questo codice?
- 6. Perché Firefox si comporta diversamente sui margini di compressione?
- 7. perché la creazione di istanze in linea si comporta diversamente?
- 8. Subshell creato usando (...) si comporta diversamente da bash -c '...'
- 9. In che modo foo (& nil) si comporta diversamente da foo (& "not a proc")?
- 10. Allineare un pulsante al centro
- 11. Perché questa classe si comporta diversamente quando non fornisco un tipo generico?
- 12. Perché la vista [foo] si comporta diversamente da foo.view nel mio codice?
- 13. Un metodo di classe che si comporta diversamente quando viene chiamato come metodo di istanza?
- 14. Gruppo pulsante reattivo Bootstrap giustificato
- 15. Chiama Html.ActionLink da un pulsante?
- 16. La trasmissione al pulsante è ridondante - Perché?
- 17. pthread_cancel si comporta diversamente su arm e ppc?
- 18. Come aggiungere un pulsante casuale al modulo
- 19. Un ciclo 3,000,000,000 iterazioni si comporta stranamente
- 20. Attivare un pulsante al caricamento della pagina
- 21. Convalidare un modulo per assicurarsi che almeno un pulsante di opzione sia selezionato in un gruppo
- 22. Bootstrap: Come posizionare il pulsante accanto al gruppo di input
- 23. WIX gruppo pulsante di scelta
- 24. Perché un modulo Python si comporta come un singleton?
- 25. Ottiene il pulsante di opzione selezionato in un gruppo (WPF)
- 26. Perché "a is b" si comporta diversamente sulla modalità interattiva e quando viene eseguita dallo script?
- 27. Disattiva il pulsante che funziona al clic
- 28. Come si seleziona una sola divisione tra un gruppo di div come un pulsante di scelta?
- 29. Un pulsante che fa scattare un altro pulsante fa clic sull'evento
- 30. Perché questo codice si comporta diversamente con le optomisations attivate o disattivate?