Practical Problem 13: Chemotaxis
The goal of this problem is to design a simulation of chemotaxis. In chemotaxis bacteria or other single cell organisms emit a chemical that diffuses and other individuals sense it. The other individuals move up the gradient of the chemical and also start emiting the chemical.
Simulation 1
Write a simulation in which turtles move around randomly (speed and wiggle, you know the drill).
Turtles should have a turtles-own
variable that we call emissionrate that is the probability at which a turtle
emits a chemical into the environment.
Patches should have a patches-own
variable that is the concentration of the chemical at the patch, we can call it smell
.
When turtles emit a chemical the concentration of the chemical is set to 1 on the patch that is hosting the turtle. You can implement this like so
ask turtles [
if random-float 1 < emissionrate
[
ask patch-here [set smell 1]
]
]
Because the smell diffuses you should have a command diffuse smell D
in the go function where D
is the diffusion parameter for which we need a slider. The smell chemical should also decay with a certain factor which you can accomplish like so:
ask patches [
set smell smell * (1 - decay)
]
]
where the decay is also a parameter (slider) between 0 and 1.
Color the patches according to the local concentration of smell. You may want to check out the command scale-color
in the manual.
When the program runs you should have turtles moving around that leave traces of smell that washes away, becomes blurry and disappears.
Simulation 2
Now we want turtles to respond to the smell concentration. In addition to the wiggle movement turtles should investigate patches in a radius $R$ and see where the concentration of smell is highest and turn their heading into that direction. And implementation could look like this:
ask turtles [
let p max-one-of patches in-radius R [smell] ; this identifies the patch with the highest smell
if [smell] of p > smell [ ; if the smell at p is larger than the smell where the turtle is turn towards it
face p
]
]
Play with the parameters and see if you can find a scenario where all the turtles accumulate.