with turtles turtle patches other library español diccionario ask and timer netlogo

timer - turtles - netlogo: cómo hacer que las tortugas se detengan durante un número determinado de tics y luego continuar



netlogo library (2)

Este es solo un ejemplo, ¿Cuántas garrapatas deben permanecer en el área amarilla? Asumí 15 tics y les pedí a las tortugas que también imprimieran su número de tilde en su etiqueta. Si funciona demasiado rápido, podrían perderse su estancia, así que ajuste la velocidad de funcionamiento para que su modelo vea cuándo se quedan y cuándo se mueven. Puedes tener diferentes métodos para continuar, en este solo mueven 1 parche hacia adelante.

turtles-own [count-down] to setup clear-all ask patches with [count neighbors != 8] [set pcolor blue] create-turtles 20 ask turtles [setxy random-xcor random-ycor pen-down set count-down 15 ] ask n-of 20 patches [ set pcolor yellow ] reset-ticks end to go move-turtles tick if ticks >= 720 [stop] end to move-turtles ask turtles [ ifelse pcolor != yellow [continue] [stay] ] end To continue rt random 10 fd 1 end to stay set count-down count-down - 1 ;decrement-timer set label count-down if count-down = 0 [ Continue set label "" reset-count-down ] end to reset-count-down set count-down 15 end

Estoy tratando de crear un modelo donde las tortugas caminen al azar (pero con una tendencia hacia el movimiento hacia adelante) hasta que aterricen en un parche de color amarillo que representa un objeto cebado.

Cuando una tortuga aterriza en uno de los parches amarillos, me gustaría que se detenga en ese parche y permanezca allí durante 15 tics mientras ''investiga'' el cebo.

Después de que hayan transcurrido 15 ticks, quiero que las tortugas continúen moviéndose como de costumbre hasta que encuentren otro parche amarillo.

Intenté modificar partes de este modelo de tarjeta estacionado en netlogo modeling commons pero no pude darle sentido (soy nuevo en netlogo) http://modelingcommons.org/browse/one_model/3205#model_tabs_browse_procedures

También he intentado implementar un temporizador de cuenta atrás como se describe en este hilo. ¿Cómo se puede crear un temporizador de cuenta regresiva en NetLogo?

Sin embargo, recibo un error de tiempo de ejecución ''Solo el observador puede PREGUNTAR el conjunto de todas las tortugas'' cuando intento ejecutar la simulación. ¿Alguien puede decirme dónde me estoy equivocando? ¡Probablemente en varios lugares! Gracias.

Aquí está el código que está causando el error de tiempo de ejecución:

turtles-own [count-down] to setup clear-all ask patches with [count neighbors != 8] [set pcolor blue] create-turtles 20 ask turtles [setxy random-xcor random-ycor pen-down] ask n-of 20 patches [ set pcolor yellow ] reset-ticks end to go move-turtles tick if ticks >= 720 [stop] end to move-turtles ask turtles [ ifelse pcolor != yellow [continue] [stay] ] end to continue ask turtles [rt -90 + random 181] ask turtles [ifelse [pcolor] of patch-ahead 1 = blue [ lt random-float 360 ] [fd 1] ] end to stay ask turtles [ setup-timer decrement-timer if timer-expired? [continue] ] end to setup-timer set count-down 15 end to decrement-timer set count-down count-down - 1 end to-report timer-expired? report ( count-down <= 0 ) end


Para responder solo a la parte sobre "Solo el observador puede PEDIR el conjunto de todas las tortugas", ese mensaje de error ocurre si lo hace:

ask turtles [ ask turtles [ do-something ] ]

Esto no está permitido en NetLogo porque casi siempre es accidental en lugar de intencional. Probablemente solo quisiste que cada tortuga "hiciera algo" una vez; probablemente no quisiste decir que cada tortuga "haga algo" por cada posible par de dos tortugas.

Es menos obvio que estás pidiendo a todas las tortugas que pregunten a todas las tortugas si se divide entre los procedimientos. Entonces, por ejemplo, si escribes:

to go ask turtles [ my-procedure ] end to my-procedure ask turtles [ do-something ] end

Todavía está mal por la misma razón, pero no es tan fácil de ver que solo de echarle un vistazo.

Tu código sigue este último patrón. Tienes:

to move-turtles ask turtles [ ... continue ... ] end to continue ask turtles [ rt -90 ... ] end

No creo que quieras ask turtles en el procedimiento de continue . Como llamas al procedimiento dentro de las ask turtles , ya es un procedimiento de tortuga. Sugeriría escribirlo como:

to continue ;; turtle procedure rt -90 ... end

El comentario te recuerda que está destinado a ser dirigido por tortugas. (Seguimos este estilo en todos los modelos de la Biblioteca de modelos).