A lifespan-directed experiment
Objective
I wanted to run a lifespan-directed environment. Lifespan depends on
energetic conditions; mainly on ability to find food. A general fitness
such as lifespan does not impose any restriction on creatures regarding how
to find food. I expected to see an improvement in the ability to move,
and ability to move in the direction of the food. I started with a creature
capable of simple swimming (I used water because it is easier to move).
I expected creatures will move faster, and be able to activey seek food
(using smell sensors). In this experiment none of these happened,
nonetheless I was able to identify some speciation and parasitism,
although quite rudimentary.
Conditions
50x50 world, water. Because I was interested in interactions, I set the
number of simulataneously simulated creatures to 4. Death is on.
For selection, only lifespan has non-zero weight (1). Genotype similarity
linear. 300 genotypes. Energetics: starting e. of stick: 100; e. of a
dead stick: 20; idle metabolism: 3/stick/100cyc; automatic feeding: 20;
ball energy; 250. f1 genotype.
(I wanted to enable destructive collisions, but I got Runtime errors.)
Initial genotype
RRFFX[ @G:0.662,* :-1.333]RFX[@G:0.802]MMMMX[|-1:-1.569][|-1:2.367,0:-0.294]rrSIXCXXrcfSI(RX)
A simple little swimmer, 7 sticks. It can swim at speed 0.0065. On average
it lives for 3992. If it does not find any food, it lives for 3333
(100/3*100). After eating one ball, it lives for 4523 ((7*100+250)/(7*3)*100).
Losing the ability to move
Instead of moving better, creatures lost their ability to move altogether.
The main reason for this is that moving around aimlessly is not more
advantageous than staying in one place. This seems paradoxical, but
the existence (appearance) of a food ball is equally likely in the current
position A and any other position B. This is because the placement of
the balls is completely random.
(Clarify when and where are balls placed.)
Other strategies
I observed two different 'strategies' for increasing lifespan without
moving. The first is being bigger, which means a higher probability of
touching a ball. The other is being smaller, which means lower
probability, but a higher lifespan in the lucky event of touching a ball,
because of reduced metabolic requirements. I observed both of these
strategies coexisting in the population.
As generations progressed, the big creatures evolved to be even bigger
(up to 80-100 sticks and more), which small ones stayed small.
Parasitism
Creatures leave an eatable corpse after dying. The amount of energy of
the corpse is proportional to the size, thus a bigger creature leaves more
energy. This benefits creatures which will live in the future -- all
of them. If creatures become big, they increase the overall energy
inflow of the system. This benefits other creatures, mainly other big
creatures, but also some small creatures. These small parasites have
some chance of hitting upon an energy ball, or a corpse of a big dead
creature. Observing the simulation shows that big creatures touch balls
frequently, but also big corpses (energy transfer from a previous
generation). Sometimes small creatures feed on a big corpse, in which
case they live for very long. I call this parasitism.
I ran about 4000 generations.
I have the genepool from every 100th gen.
.sim file and some resulting creatures below.
# created Fri Jul 21 13:22:23 2000
# by Framsticks simulator (30-May-00) [MS Windows]
sim_params:
model:1
oldneurons:0
capacity:300
delrule:0
descol:0
debug:0
AutoKill:1
cr_c:0
cr_life:1
cr_v:0
cr_gl:0
cr_nnsiz:0
cr_di:0
cr_vpos:0
cr_vvel:0
cr_norm:0
fitfun:0
fitm:2
fitma:5
enablestats:2
cr_simi:1
testvel:9
cr_energ:0
MaxCreated:4
p_nop:50
p_mut:40
p_xov:10
xov_mins:0
Energy0:100
grow:0
corpsen:20
e_meta:3
aging:0
em_stat:0
em_dyn:0
sun:0
feed:20
feede0:250
autosave:1
overwrite:0
filecomm:0
wrldtyp:0
wrldsiz:50
wrldmap:
wrldwat:8
wrldbnd:1
mut_str:5
mut_neu:10
mut_exmod:eE
mut_exrec:S
mut_exctl:
gm_repair:1
gm_xosegm:0
geno_f1_sm0:0.05
geno_f1_sm1:0.02
geno_f1_sm2:0.02
geno_f1_sm3:0.02
geno_f1_sm4:0.1
geno_f1_nm0:1
geno_f1_nm1:0.1
geno_f1_nm2:0.05
geno_f1_nm3:0.1
geno_f1_nm4:0.05
geno_f1_nm5:0.2
geno_f1_simNN:1
geno_f1_simSN:1
geno_f1_simSS:1
geno_f1_simNS:1
geno_f1_simStr:4
geno_f4_mut1add:0.2
geno_f4_mut1del:0.2
geno_f4_mutAdd2div:0.2
geno_f4_mutAdd2link:0.2
geno_f4_mutAdd2rep:0.1
genkonw0:1
genkonw1:0
genkonw2:0
genkonw3:0
Here are some genotypes from gen 4200
st_min_lifespan:3334
st_avg_lifespan:3915.52
st_max_lifespan:10714
st_min_velocity:0
st_avg_velocity:0.000100315
st_max_velocity:0.00327094
st_min_distance:0
st_avg_distance:0.219158
st_max_distance:2.64762
FmSIX[@ = :0.000]
(X[@ T :0.713,0 :1.676,T :-2.500])
rIX
(XXXXXRRRFFXMMXXIXMMSSXRRRFSXXXXXrXMMMiXSSIX[ 0:2.975][|-1:601.997]FXX[@G:-0.844]
XMXrSIXXaMMMXSSIX[ 0 :1.391][|*:1.898,1:-0.849]FXXXMXXaMMMMXXMXMMMMiXMSSIXXaMMMMX
XXIXMMSSXRRRFFSXXXXXrXMMMiXSSIX[ 0 :1.391][|-1:601.997,0 :-4.013]IXFX[@ 0 :0.059]
[ @G:-0.946,0 :-370.967]XRFXMMMMXSSIX[ @0 :479.988][|*:-0.294,1 :981.135],FXXXMXX
aMMMMqXXMXaMMMXSSIX[ 0 :1.391][|*:1.898,1 :-0.849]FXXXMXXaMMMMXXMXaFIX[@ T :2.686
]X[|T:2.896]MMXiXSSIX[ 0 :1.391][|-1:601.997,0:-1.562,1 :1.777]XSSIX[ 0 :1.391]XX
aFIX[@ T :-3.223]X[@T:0.802]RMMMMiXSSIX[ 0 :1.391]X[ 1 :-1.716]XIXXMMSSXRRRFFXX,X
XrXMMX[@0:-4.892]MMMMiXMSSIXXaMMMMXXIXMMSSXRRRFFSXXXXXrXMMMiXSSIX[ 0 :1.391][|-1:
1.365,1 :-0.660],FXX[@G:1.126]XMXrSIXXXaX)
(q(,,RRRlaaaCFFX),XSIXXXmXXXXX,qXfIX)XmsXCFIX
(XXWXFFXSSXRRRFFSXXXXXrXSSXRRRFFXXXXrXrFMSSIIXXX[ 0 :-4.192],XMqXXMXLaMMMXSSIX[ 0
:1.391][|*:1.898,1 :-0.849]FXXXMXXaMMMMXXMXaFIX[@ T :2.686]X[|T:2.896]MMXiXSSIX[
0 :1.391][|-1:601.997,0:-1.562,1 :1.777]aMMMMXXXIXMMSSXRRRFFSXXXXXrXX[ / :-0.254]
XaXXXMXXaMMMMqXXMXLaMMMXSSIX[ 0 :1.391][|*:1.898,1 :-0.849]FXXXMXXaMMMMXXMXaFIX[@
T :2.686]X[|T:2.896]MMXiXSSIX[ 0 :1.391][|-1:601.997,0:-1.562,1 :1.777]XSSIX[ / :
1.391][|*:-2.016,1 :-4.613]XFXX[@G:-1.772]XMXrSIXXaX)