Titeln Il viaggio lungo har jag burit med mig sedan sjuttiotalet. Då hörde jag ett musikstycke med detta namn. Jag har för mig att kompositören var Maurice Karkoff, men det har jag inte lyckats verifiera. Stycket lät underligt och komplicerat, men jag förstod det så att det beskrev en tonföljds vandring genom olika stämmor och instrument. Det har varit en lång och närmast omedveten dröm att få göra en bildmässig motsvarighet. Det blev inte alls som jag först tänkte mig, men det blev bra!
Struktur.
Modellen vill simulera den evolutionära utvecklingen hos varelser fästa vid havsbotten.
En enskild varelse kan ses som representant för en viss art och modellen handlar om arternas utveckling och konkurrens.
Miljöns påverkan.
Varelserna översköljs kontinuerligt av miljöns energigivande ämnen.
Dessa använder varelserna för sin dagliga överlevnad, för att bygga upp sin volym
samt för att byta ut genetisk information med omgivande varelser.
Miljöns innehåll av energiämnen varierar med tiden med en kort (daglig)
period, med en längre (månatlig) period och med lång (årlig) period.
Energiupptagning.
En varelses förmåga att ta upp miljöns energiämnen beror på varelsens yta och dess genetiska förmåga att ta upp energin.
Dess förmåga att lagra energin beror på dess totala volym och på genetisk lagrings-förmåga.
Energikonsumtion.
I sin dagliga överlevnad använder en varelse en del av den energi som den har lagrat.
Beroende på anlag och på hur stort miljöns energiflöde är, konsumerar varelsen en viss andel av sin volym.
Delning.
Varje varelse har en moderenhet, varelsens ursprungliga del, kort kallad modern.
Med en viss anlagsbetingad periodicitet kan en varelse göra en kopia, kallas son, av moderns yta.
Detta förutsätter att volymen hos modern överstiger en viss anlagsbetingad nivå. Vid kopieringen
konsumeras en del av moderns volym. Resterande volym delas mellan modern och den nye sonen i genetiskt
bestämda proportioner, men ytan hos varje del är densamma som hos modern. På så vis ökas varelsens
samlade förmåga att ta upp energi.
Genom denna utveckling får varelsen stegvis fler delar (kanske upp till ett visst maximalt antal),
modern plus ett antal söner. Delarnas samlade volym och yta är då varelsens hela volym respektive yta.
Varelsens hela energiupptag ökar därför. Upptagen energi lagras i delarna och konsumeras i förhållande till delarnas volymer.
Genetiskt inbyte och mutationer.
En varelse som just delats kallas värdvarelsen.
I samband med delning sker ett inbyte till värdvarelsen av anlag med omgivningen.
En omgivande varelse (givarvarelsen) och ett av dess anlag (de anlag som handlar om energiupptag,
konsumtion och delning) väljs ut slumpmässigt. Värdvarelsen övertar en viss del av givarvarelsens anlag.
Hur stor del beror på slump, värdvarelsens anlag och de båda inblandade varelsernas respektive volymer.
(Man kan se stor volym som mått på evolutionär framgång.)
Modellens mutationer är mycket försiktiga. Vi varje delning modifieras ytterligare en av värdvarelsens anlag
slumpmässigt med någon (genetiskt betingad) procentandel.
Termer och beteckningar.
Miljön antas bestå av ett antal kvadrater. Varje kvadrat översköljs energimängden exo per timme.
Hur stor exo är beror på tid på dygnet (D = exo.day timmar), dag i aktuell månad (M = exo.dygn dygn) och
tidpunkt på året (Y = exo.year månader). Varje månad omfattar alltså D*M timmar medan varje år omfattar M*Y månader och exo.maxtid = D*M*Y timmar.
En varelse kallas en kvirk . Den omfattar 25 kvadrater, varav mittkvadraten representerar modern, mother .
Siffrorna 1, ..., 24 anger potentiella söner sons och deras inbördes tillkomstordning.
Varelsens antal utnyttjade kvadrater kallas yta , medan de utnyttjade delarnas sammanlagda energiinnehåll
kallas varelsens volym . Sönerna bidrar med en viss andel share av sina volymer till modern.
De anlag som styr varelserna liv och delning kallas genes . Den gen som styr energiupptagningen kallas slurp ,
den som styr energilagringen kallas smask och den som styr den dagliga konsumtionen kallas rap.
Startdag för den månadsvisa delningen kallas day . Minsta volym hos modern som krävs för att delning skall äga rum är birthlevel ,
medan den procentandel som volymen minskas med vid delning kallas cost .
Hur stor andel av givarvarelsens utvalda gen som tas över vid delning anges som en procentsats med genen part
medan ändringen vid mutation anges av genen mutation .
Det är endast generna slurp, smask, rap, share, day, birthlevel och cost som kan ändras vid delning och mutation.
Formler
Initialläge för en godtycklig kvirk :
kvirk.mother.volym = random(1, ...)
kvirk.sons[j].volym = 0, j=1, ...,24
kvirk.genes.slurp = random(0, oo)
kvirk.genes.smask = random(0,1)
kvirk.genes.rap = random(0,1)
kvirk.genes.share = random(0,1)
kvirk.genes.day = random(0,M-1)
kvirk.genes.birthlevel = random(1, oo)
kvirk.genes.cost = random(0,1)
kvirk.genes.part = random()
kvirk.genes.mutation = random(0,0.1)
Formler för utvecklingen av volym från en timme till nästa:
kvirk.sons[j].volym :=
kvirk.sons[j].volym*( 1 - kvirk.genes.share ) - W[j]*kvirk.sons[j].volym*kvirk.genes.rap +
kvirk.sons[j].yta * kvirk.genes.smask * kvirk.genes.slurp*exo
om kvirk.sons[j].yta>0 annars är kvirk.sons[j].volym=0 och kvirk.sons[j].yta=0
Om kvirk.sons[j].volym<=0 sätts kvirk.sons[j].volym=0 och kvirk.sons[j].yta=0
Här är W[j]=1 om j=0,1,2,3, W[j]=1.5 om j=4,5,6,7, W[j]= 2 om j>=8
kvirk.mother.volym := kvirk.mother.volym - kvirk.mother.volym*kvirk.genes.rap +
kvirk.genes.smask * kvirk.genes.slurp*exo + kvirk.genes.share*summa( kvirk.sons[j].volym )
Om kvirk.mother.volym <=0 , byts kvirk ut mot en ny varelse med nya genes och inga sons
Formler för delning:
När tiden är framme vid kvirk.genes.day och om kvirk.mother.volym > kvirk.genes.birthlevel
letar man upp den första sonen som har yta 0. Denna antas ha index k. Om det inte finns en sådan son sker ingen delning.
Därefter sker följande:
kvirk.mother.volym := kvirk.mother.volym*( 1 - kvirk.genes.cost )
kvirk.sons[k].volym := 1
kvirk.mother.volym := kvirk.mother.volym - 1
Utdöende:
Om kvirk.mother.volym <1 vid kvirk.genes.day , byts kvirk ut mot en ny varelse med nya genes och inga sons
Formel för genetiskt utbyte:
Först väljs en av de sju generna slurp, smask, rap, share, day, birthlevel och cost ut.
Den valda genen har värdet vardgen . Därefter väljs en givarvarelse ut slumpmässigt.
Dess motsvarande gen har värdet givargen. Nytt värde på vardgen blir då det geometriska medelvärdet
vardgen := vardgen ^(1 - a)* givargen ^ a ,
där a = r ^ x , r = part och x= volym/givarvolym,
med volym = värdvarelsens volym och givarvolym = givarvarelsens volym
Formel för mutation:
En av de sju generna slurp, smask, rap, share, birthlevel och cost ut. Den valda genen har värdet gen .
Nytt värde på gen blir då
gen := gen*(0.95 + r) , där r = mutation
Formel för energiflödet:
Global variable time = 0, 1, ...,
exo = function(time, D, M, Y, a, b, c) =a*(sin(2*time*pi/D) + 1) + b*(sin(2*time*pi/M) + 1) + c*(sin(2*time*pi/Y) + 1)