random - simulacion - tortugas netlogo
cómo seleccionar aleatoriamente un parche vecino que tenga una mayor elevación en netlogo (2)
¿Cómo seleccionar al azar entre todos los parches vecinos que son más altos en lugar del parche más alto vecino? Estaba pensando en eliminar (si elevación> = [elevación] de max-one-of neighbors [elevation] [stop]) y colocar "[stop]" en [move-to-one-of neighbors [stop]]
to move ; a turtle procedure
if elevation >= [elevation] of max-one-of neighbors [elevation] [stop]
ifelse random-float 1 < q
[uphill elevation]
[move-to one-of neighbors]
end
one-of
selecciona aleatoriamente un agente del conjunto de agentes y crea un conjunto de agentes de aquellos agentes que satisfacen la condición. También necesitarás probar que haya al menos un lugar al que ir. La selección se vería así (con la condición de umbral por determinar):
to move-up ; a turtle procedure
let candidates neighbors with [elevation >= <thresholdhold condition> ]
if any? candidates [ move-to one-of candidates]
end
Si, por el contrario, quiere elegir entre los vecinos más altos, independientemente de si son más altos que algún umbral, quiere max-n-of
. Parece que para elegir uno de los 3 más altos:
to move-up
move-to one-of max-n-of 3 neighbors [elevation]
end
; The butterfly move procedure in turtle context
to move ; a turtle procedure
if elevation >= [elevation] of max-one-of neighbors [elevation] [stop]
; Decide whether to move uphill deterministically with probability q
ifelse random-float 1 < q
[ uphill elevation ] ; move uphill
[ move-to one-of neighbors ] ; otherwise move randomly
set patches-visited patches-visited + 1
end