Universe of Fish

Ken Webb
December 18, 2019

In the Cybernetics Bookclub, we have discussed the concept of closed and open systems, and how these two types of systems differ from each other. JP has approached it from the perspective of the mathematical equations presented by Bertalanffy. Jen and I use Agent-Based Modeling (ABM), and are more comfortable thinking of closed and open systems from an ABM perspective.

ABM, also called Individual-Based Modeling (IBM), focuses on the interactions between individuals. The math approach, using Ordinary Differential Equations (ODE), focuses on the changing values of variables. Change over time is important in both approaches.

Jen and I explore the concept of "exploitation" using simple ABM models. One series of models involves a universe with worlds that contain oceans and islands. Each ocean contains fish, and each island has fishermen who catch fish. We explore what happens when we vary the number and kinds of each of these types of objects.

I also explore how to use Math concepts, notations, and tools in my models. As much as possible, in this workbook, I will use set notation, and basic concepts from the area of discrete mathematics.

For example (using a simple notation, based an Set Theory and Discrete Mathematics):

# Note: the numbers within brackets, for example the 0 in {0}, are identifying labels, and are NOT counts
nodes.universes = {0} # there is one universe identified as "0"
nodes.worlds = {0} # each universe contains one world
nodes.oceans = {0} # each world contains one ocean
nodes.fish = {0,...,99} # each ocean contains 100 fish; all fish are of the same type, and there is no way to distinguish one fish from another
nodes.islands = {0} # each ocean contains one island
nodes.fishermen = {0} # each island contains one fisherman

Here's another version of the same thing, with multiple instances of some parts of the model:

nodes.universes = {0} # there is one universe identified as "0"
nodes.worlds = {0} # each universe contains one world
nodes.oceans = {0} # each world contains one ocean
nodes.fish = {0,...,99} # each ocean contains 100 fish;
nodes.islands = {0,1,2} # each ocean contains three islands identified as "0", "1", and "2"
nodes.fishermen = {0,1} # each island contains two fishermen; so in total there will be 6 fishermen

In a non-existent universe, where each set is the empty set, the notation would look like this:

nodes.universes = {}
nodes.worlds = {}
nodes.oceans = {}
nodes.fish = {}
nodes.islands = {}
nodes.fishermen = {}

In addition to the structure specified above, each fish and each fisherman has a behavior. Fish swim around in the ocean. Fishermen try to catch and eat fish that come close to the shore. Fish do not replenish themselves, and eventually there are no fish left.

Characteristics of the basic model

plot

This is a standard plot, with a perfectly straight line, always decreasing.

Fish in the Ocean (10 Fishermen) (1.0 probability of catching a fish) 1 1 100 2 5 1.0 ocean_50 0 1 2 3 4 5 6 7 8 9 10 0 25 50 75 100 Time (timestep) Number of Fish

In this plot, each fisherman has about a 50% (0.5) probability of catching a fish each timestep. Note that the plot is a straight line with random fluctuations, always decreasing or the same.

Fish in the Ocean (10 Fishermen) (0.5 probability of catching a fish) 1 1 100 2 5 0.5 ocean_50 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 0 25 50 75 100 Time (timestep) Number of Fish

This plot shows what happens when something in the environment suddenly adds new fish to the closed system.
At around timestep 45, I pasted the following XML as the first child of the Ocean node. This added 50 more fish.

<_-.fish>
<Fish multiplicity="50"/>
</_-.fish>
this doesn't work
![plot 1.1](https://gist.githubusercontent.com/kenwebb/2cded6cb001104e801983e27ea532e05/raw/ec4045be344801d38daa03cd4b64c01eef159014/plot01.svg?sanitize=true "plot 1.1")

this does work

Fish in the Ocean (5 Fishermen) (0.1 probability of catching a fish) 1 1 100 1 5 0.1 ocean_50 0 17 34 51 68 85 102 119 136 153 170 187 204 221 238 255 272 0 40 80 120 160 Time (timestep) Number of Fish

I will include additional plots.