Slime mold

From Simulace.info
Revision as of 23:23, 20 January 2019 by Kadj02 (talk | contribs) (Method)
Jump to: navigation, search

Introduction

Slime mold (or more accurately physarum polycephalum) is a slime mold that inhabits shady, cool, moist areas, such as decaying leaves and logs. Like slime molds in general, it is sensitive to light; in particular, light can repel the slime mold and be a factor in triggering spore growth. The interesting factor of this mold for my purpose of simulation is the smart-like path finding. This was demonstrated by Harvard Magazine in a topic of solving a simple 2D maze, with finding the shortest path. Also in another demonstration was proven, when the researchers place food at cities on the map, the fungus collaborates, spreading out to map many possible configurations and then dying away to highlight the shortest routes between cities and the most efficient overall system map. For more see: link (http://harvardmagazine.com/2010/05/networked-web-extra)

Problem definition

The biggest challenge of this simulation is the correct format of the pattern movement when the mold spreads. The ability to find most effective route while keep this randomized movement pattern is the alfa and omega of the whole simulation. The movement itself is useless without considering the mold is also living organism and as every living organism its main purpose is to survive. Therefore there has to be a resource in place to be capable of deciding when the mold actually dies. This resource is of course possible to replenish by some interaction with the environment – and that’s surviving in a nutshell. In order to correctly replicate the well know pattern movement from nature the agents have to be compliant with two vital rules. Diffusion-limited aggregation describes how replicate such pattern with particles moving corresponding to a Brownian motion.

DLA-alorithm

A DLA consists of particles that attach to each other. How they attach is described here. First of all, we start with a complete empty space and put one particle somewhere in it. Now, a second particle is 'fired' at an infinitely distance away from this particle. This new particle keeps moving randomly in the empty space until it collides with the already placed particle. At this moment, the particles attach to each other and are settled. Now a third particle is fired likewise, and the same procedure repeats itself over and over.

Brownian motion

If a number of particles subject to Brownian motion are present in a given medium and there is no preferred direction for the random oscillations, then over a period of time the particles will tend to be spread evenly throughout the medium. Thus, if A and B are two adjacent regions and, at time t, A contains twice as many particles as B, at that instant the probability of a particle’s leaving A to enter B is twice as great as the probability that a particle will leave B to enter A.

Software

Simulation is created using Netlogo 6.0.2.

Model

Agents

Agents are spawned and placed on the edge of the world facing in to the center. Every tick they move unpredictably and if they reach to the edge they will deleted. In this instance we call the agents spores and they only purpose is to die. One way I already mentioned, the second is to bump to a slime mold cell. The creation of new spores depends on current number of spores in the simulation (to prevent from clustering) and on the resources of the mold in this world. Every unit of resource is one agent which is capable of creating one slime mold cell. Their visibility can be switch on and off by user. Spores are created from resource called “endurance of mold” every cycle up to number defined by “spores by cycle”.

Slime mold

The yellow pixels represent the slime mold itself. Those cell are static and are waiting for incoming spores to help them find food (spread). Current number of mold cell are displayed in the plot “Number of mold cells” with additional exact number. The origin point can be put directly in to the center of the world. Also the number of the origin points can be up to 5 and they are going to be generated in random points in defined radius.

Food

The food is represented in this simulation as a red pixels. The amount of these pixels can be shifted up to 50 by user and are generated randomly in defined radius around circle. The amount of gained resources can be also adjusted up to 20000 with slider named “power of food”. Once agent (spore) connects the slime mold with a food pixel the mold gains that defined amount of resources immediately.

Method

In every tick agents move forward in a random matter and if there is a collision with a mold cell, they transform itself in that cell also - spreading in to space. The randomized spawning was a little bit tricky without the ability to correctly generating signed integers. To workaround this I came up with:

ifelse random 1 = 1 [set originX random-float 80] [set originX random-float -80]  ;;true random signed int
ifelse random 1 = 1 [set originY random-float 80] [set originY random-float -80]  ;;true random signed int

In a setup we set the patch size to a much smaller number, otherwise the patterns would not have been so visible. After setting all user-depended inputs there is endless cycle of wandering spores waiting to be terminated.

Results

The pattern replicating was u huge success. There are really obvious similarities between our simulation and the video showcasing the spreading of the mold. Also the food which is founded by the mold is very clear on the plot of the resources.