Here our goal is to learn some basics about how complex behavior can emerge from simple interactions among many very simple parts. In the different "labs" below, you can control some of the properties of the simple parts and their interactions.
Lab 1 on emergence
Source: This is actually a javascript simulation of the Ising Model from physics developed by Daniel Schroeder. This model is also mentioned in the article by Chialvo.
Simple parts: Each pixel in the blue and yellow mess to the right is one "simple part". It is simple in the sense that it can only exist in one of two states - blue or yellow.
Interactions: The pixels have a tendency to do what their nearest neighbors do. For example, a blue pixel with all yellow neighbors tends to turn yellow.
Randomness: The pixels also have a tendency to flip their state randomly from blue to yellow, or vice versa. You can control the Randomness.
Start with Size = 25 and 'Steps per frame' = 1 to get a feeling for what's going on. Increasing 'Steps per frame' makes the model reach a steady state faster.
Your goals:
Lab 2 on emergence
Source: We borrowed the simulation below from here. The video (right) of starling murmurations was posted on National Geographic's webiste.
Simple parts: Dots. They move along in a straight line forever if there are no interaction "forces".
Interactions: There are three interaction forces. Cohesion makes the dots attract each other. Separation makes the dots repel each other. Alignment makes them change their direction to be more like their neighbor dots.
Start with setting all the force terms to zero.
Then, one by one turn on the three forces. Try to get a feel for the effects of the forces.
Here your goal is to determine which values of the force parameters result in dot motion that behave the most like the starling murmurations.
Lab 3 on emergence
Source: https://pmneila.github.io/jsexp/grayscott/
Creation + destruction + spreading. Imagine that at every point in a plane (the image below), some entity is being created, destroyed, and diffusing. (Diffusion means spreading out in space.) If the creation rate is very high, then you get lots of the stuff eventually filling the area completely. If the destruction rate is very high, you get extinction of the stuff. Somewhere in the middle, between these extremes, you get surprising complex patterns emerging.
Simple parts: Pixels. Each pixel color represents how much of the entity is present at the pixel's location. Black means not much. White means lots. If you click on the picture, you create some stuff where you click.
Interactions: Pixels with lots more stuff than their neighbors give away stuff to their nearest neighbors (This is the spreading that is called diffusion). The stuff is created at every pixel at a rate controlled by the "feed rate" slider. The stuff is also destroyed at a rate that depends on how much stuff is present and on the "death rate" slider.
Your goal for this one is to create a "phase diagram". That is, you will create a 2D map of the behavior of the model for a range of 'feed rates' (0 to 0.1, in steps of 0.005) and 'death rates' (0 to 0.07, in steps of 0.005). The horizontal dimension of your map will represent 'feed rate' and the vertical dimension will represent 'death rate'. You need to decide on some system for labeling your map to describe the behavior of the model at each pair of feed and death rate values. You can decide how you want to label it. You can use pencil and graph paper or Matlab or whatever you prefer.