Recht Als Emergente Eigenschap
Een bachelorproject van Albert Hankel & Elske van der Vaart Begeleiders: Bart Verheij, Bart de Boer & Gert Kootstra
1
Inhoudsopgave 1.
Inleiding
3
2.
Theorie
4
3.
Simulatie
6 8 9 11 12
3.1 3.2 3.3 3.4
Verzamelen Landbouwen Aanvallen Partners
4.
Experiment
14
5.
Analyse
22 22 23 30 31
5.1 5.2 5.3 5.4
Stabiliteit Saillante Kenmerken Robuustheid Verklaringen
6.
Reflectie
33
7.
Conclusie
36
8.
Referentie
37
2
1
Inleiding
Het bachelorproject ‘Recht Als Emergente Eigenschap’ had als doel te onderzoeken in hoeverre juridische regels kunnen emergeren in een populatie zonder dat ze expliciet worden afgesproken. Concreet was de opdracht om eigendomsrecht te bestuderen door het simuleren van de overgang van een jagerverzamelaarssamenleving naar landbouwcultuur. Geïnspireerd door Growing Artificial Societies: Social Simulation From the Bottom Up’ van Epstein & Axtell (1996) hebben wij een simulatie ontwikkeld waarin deze overgang aan de orde komt. Hoewel de tijd uiteindelijk te beperkt bleek om zinvolle conclusies te trekken over ‘recht als emergente eigenschap’ levert onze simulatie wel enkele interessante resultaten. Dit bachelorverslag beschrijft het ontwikkelproces vanaf onze eerste theorieën omtrent de onderzoeksvraag (en de subsequente bijstelling daarvan), onze simulatie en een verantwoording van de keuzes die daarbij gemaakt zijn, de opzet en resultaten van ons experiment, een analyse van die resultaten, een reflectie op het ontwikkelingsproces en tenslotte onze conclusies.
3
2
Theorie
Om eigendomsrecht echt te laten emergeren wilden wij het inbakken van het concept ‘eigendom’ zo veel mogelijk vermijden. We wilden agents er geen intrinsiek besef van geven dat ze het land van een andere agent betraden; het moest iets zijn wat ze door evolutie vanzelf “afleerden”. Agents dienden dus met hun acties en niet met (al dan niet voorgeprogrammeerde) interne representaties te demonstreren dat ze “respect voor eigendom” hadden. Zodoende moesten individuele agents voordeel hebben bij het handhaven van eigendomsrecht; dat zulks voor boeren geldt is duidelijk, maar voor verzamelaars minder. Een landbouwsamenleving als geheel heeft haast vanzelfsprekende voordelen bij het handhaven van een zekere orde. Een boer produceert meer eten en kan meer nakomelingen onderhouden dan een verzamelaar, maar moet zelf wel een flinke investering doen en is er bovendien van afhankelijk dat anderen in de tussentijd van zijn land afblijven. Het dilemma is dat de samenleving als geheel sneller groeit als het eigendomsrecht van de boeren wordt gerespecteerd, maar elke individuele agent beter gewoon bij de buurman kan aanschuiven. Om dit probleem te omzeilen, hebben wij het concept van de “beveiliger” bedacht. Die moest precies doen wat de naam suggereert: Boeren beschermen van opportunistische verzamelaars en daar van de boer een beetje suiker voor ontvangen. We wilden agents geen vaste rollen toebedelen; dat leek ons niet erg ‘emergent’ meer. In plaats daarvan wilden we vier genen in het leven roepen: visie, metabolisme, landbouwtalent en kracht. Het idee was dat selectie vanzelf verschillende “kastes” zou creëren door één of meerdere genen te ‘optimaliseren’ ten koste van anderen. Agents met hoge visie en laag metabolisme zouden vanzelf verzamelgedrag gaan vertonen. Agents met hoog metabolisme en hoog landbouwtalent zouden altijd het beste kunnen gaan boeren. Agents met hoog metabolisme en hoge kracht zouden inherent naar beveiligingsgedrag neigen. We hoopten dat de samenleving zichzelf zou organiseren in boerderijen met beveiligers ernaast, waarschijnlijk in de wat minder vruchtbare gebieden, waar de drang tot landbouwen toch al groter moest zijn. Verzamelaars zouden zich dan daar weer omheen bewegen en periodiek tegen de beveiligers opbotsen.
4
Althans, dat was de insteek. Uiteindelijk hebben we deze verwachtingen niet kunnen toetsen, omdat we het “boeren belonen beveiligers” principe nooit geïmplementeerd hebben. De tijd was er, in de context van een bachelorproject, eenvoudigweg onvoldoende voor. Bovendien vreesden we uiteindelijk dat we agents ook nog zelf zouden moeten laten leren (ten opzichte van “genetische innovatie”) om echt aan de onderzoeksvraag te voldoen. Als individuele agents het “opbotsen tegen de beveiligers” niet afleren, is het moeilijk om te vol te houden dat de simulatie echt ‘respect voor eigendomsrecht’ behelst. Uiteindelijk hebben we besloten dat ons project te bescheiden moest blijven om serieus te proberen eigendomsrecht te laten emergeren. In plaats daarvan hebben we ons geconcentreerd op de kwestie van de overgang van jager-verzamelaars naar boerensamenlevingen. Onze verwachting was namelijk dat dit ook zonder eigendomsrecht wel interessant zou blijken, met het oog op onvruchtbare grond. Als het als verzamelaar goed toeven is, bestaat er weinig druk om landbouwtalent te ontwikkelen, maar in minder fortuinlijke omstandigheden zou landbouw wel eens uit noodzaak opmars kunnen maken. Geïsoleerd zou een landbouwsamenleving kans van slagen moeten hebben. Laag metabolisme, ofwel de mogelijkheid om relatief ver te bewegen tegen lage kosten, brengt niet veel voordeel als er in de wijde omgeving geen betere omstandigheden te bekennen zijn. Zo’n groep boeren bij elkaar, met hoog landbouwtalent en hoog metabolisme, zou in principe moeten kunnen overleven: er is verder toch niemand om van hun land te stelen. Maar daarover in hoofdstuk 5, Analyse, straks meer.
5
3
Simulatie
De simulatie bestaat uit een wereld van tegels waarop agents leven. Op tegels groeit het suiker dat agents nodig hebben om te bestaan. Tijd verloopt in epochs. Elke epoch groeit suiker met een bepaalde snelheid terug op de tegels. Vervolgens evalueert elke agent (in willekeurige volgorde) welke actie het meeste suiker oplevert en voert die actie uit. Als de situatie zich ertoe leent, vindt daarna voortplanting plaats. De actieradius en het succes van agents’ acties worden bepaald door genetische eigenschappen, die op termijn evolutie vertonen. De acties die agents kunnen uitvoeren om aan suiker te komen, hebben we gaandeweg uitgebreid. Te beginnen met verzamelen, vervolgens landbouwen en tenslotte het aanvallen van andere agents. Elke toegevoegde functionaliteit representeert een nieuwe fase in het ontwikkelproces, die wij in een aantal deelhoofdstukken afzonderlijk zullen bespreken [zie 3.1 Verzamelen, 3.2 Landbouwen en 3.3 Aanvallen]. Daarnaast hebben we een sociale innovatie bedacht, die is beschreven in deelhoofdstuk 3.4, Partners. Eerst zullen wij hieronder echter de basiseigenschappen beschrijven die de drie simulaties gelijk hebben.
Wereld & Tegels
De wereld bestaat uit een landschap van 50x50 tegels, die zijn gearrangeerd in twee ‘suikerbergen’, linksboven en rechtsonder in de simulatie, met ‘woestijn’ eromheen. Het is een platte wereld, waarbij de randen ook echt randen zijn. Op de top van elke berg ligt 6 suiker; naar de voet toe loopt dat continu af naar 0.5 suiker eenheden. In de ‘woestijn’ ligt ook op elke tegel 0.5 suiker eenheden. Op elke tegel kan maar één agent tegelijk staan. Als er suiker van een tegel wordt afgehaald groeit dat in vier epochs terug, volgens de volgende formule: als niet suikertegel x = beginsuikertegel x, dan suikertegel x = groeisnelheid * beginsuikertegel x met groeisnelheid = 0.25
Figuur 1 - Tegelwereld
formule 1 - Suiker op tegels
6
Agents & Reproductie
Elke agent heeft een geslacht (mannelijk of vrouwelijk), een reproductieve leeftijd (tussen de 15 en 55 epochs) en een maximale leeftijd (100 epochs). Elke agent heeft bovendien vier genen: visie, metabolisme, landbouwtalent en kracht. Visie is de kijkradius in tegels en heeft een decimale waarde tussen de 1 en de 6; metabolisme is de suikerverbranding per epoch en ligt voor alle agents tussen de 1 en de 4 suiker eenheden. Landbouwtalent en kracht komen pas in latere fases aan de orde. Elke agent komt ter wereld met 20 suiker eenheden. Reproductie is seksueel en vindt plaats als twee vruchtbare agents van het tegenovergestelde geslacht zich naast elkaar bevinden, met een vrij hokje naast één van beiden voor de nakomeling. Om vruchtbaar te zijn, moet een agent minimaal twintig suiker hebben en binnen de reproductieve leeftijd vallen. Beide ouders doneren vervolgens tien suiker aan het nageslacht. Per epoch kan een agent zich herhaaldelijk voortplanten zolang er maar aan bovenstaande eisen wordt voldaan. Een nakomeling krijgt voor elke genetische eigenschap òf de waarde van één van beide ouders (met vijftig procent kans op vaders’ gen en vijftig procent kans op moeders’ gen) òf een gemuteerde waarde mee (één procent kans). Bij initialisatie worden 300 agents in de simulatie gebracht, waarvan de genetische eigenschappen worden bepaald door uit een ‘pool’ van 100 ‘punten’ willekeurige hoeveelheden te trekken, die de waardes van de vier genen bepalen. Punten die aan één gen worden besteed, zijn dus niet meer beschikbaar voor andere genen. Bij een mutatie wordt de waarde van de desbetreffende genetische eigenschap van één van de ouders (vijftig procent kans) niet direct overgenomen, maar wordt de waarde aangepast. Van de waarde wordt maximaal tien procent afgetrokken of opgeteld. Dit percentage wordt willekeurig gegenereerd.
Bewegen & Doodgaan
Agents kunnen in de simulatie alleen zo ver bewegen als ze kunnen zien en kunnen bekostigen. Visie bepaalt zodoende niet alleen de kijkradius van agents, maar ook de actieradius. Verplaatsing kost bovendien suiker (zie formule 2). Wij hebben gekozen voor “verplaatsingkosten” van 0.40 suiker eenheden per tegel – een empirisch bepaalde waarde die interessante resultaten levert. Dit kan zowel schuin als rechtuit. Een agent sterft als het onvoldoende suiker heeft om in zijn levensonderhoud te voorzien (metabolisme) of als het de maximale leeftijd (100) overschreden heeft. suikerkosten bewegen van x naar y = 0.40 * afstand x naar y * metabolisme formule 2 - Suikerkosten bewegen
7
Onze ‘beweegfunctie’ wijkt behoorlijk af van wat Epstein & Axtell (1996) in hun simulatie mogelijk hebben gemaakt. ‘Verder weg bewegen’ kost in dat model geen extra energie, wat wij bijzonder onrealistisch achten. Daarnaast kunnen Epstein & Axtell’s agents zich alleen in rechte lijnen verplaatsen. Dit verklaren de auteurs door te wijzen op de ‘ondoordringbaarheid’ van delen van de echte wereld die door de ‘schuine hokjes’ wordt gerepresenteerd, maar dit vonden wij geen overtuigende verklaring. Het lijkt eerder onnodig complex.
3.1
Verzamelen
In ons eerste, eenvoudigste model hebben agents slechts één manier om aan suiker te komen, namelijk door het van de tegels af te ‘rapen’. Alle agents zijn dus verzamelaars. Hiertoe evalueren zij elke beurt welke tegel binnen hun visie het meeste suiker oplevert, bewegen erheen en rapen alle suiker op die er ligt. ‘Welke tegel het meeste suiker oplevert’ wordt bepaald door te kijken hoeveel suiker er op elke tegel ligt en dan de kosten van het ernaar toe verplaatsen (formule 2: 0.40 * verplaatsing * metabolisme) daar vanaf te trekken. Deze functie was onderwerp van een geanimeerde discussie tussen de beide auteurs. Zoals nu geformuleerd, betekent het namelijk dat agents naar ‘suboptimale’ tegels bewegen waar ze toevallig de volgende beurt het meeste suiker aan overhouden, in plaats van naar ‘betere’ tegels die iets verder weg liggen, maar op langere termijn meer suiker opleveren. We hebben dan ook een alternatieve functie overwogen, in de trant van ‘Zoek de beste tegel, kijk of de suikervoorraad voldoende is om die te bereiken, en zo ja, beweeg erheen en raap alle suiker op’. Deze functie heeft het niet gered, om twee redenen. Ten eerste omdat het een element van ‘planning’ inbrengt, dat althans door één auteur onrealistisch werd geacht. Ten tweede omdat het problemen oplevert met het teruggroeien. Een tegel met veel suiker die aan het maximum van zijn capaciteit is (volledig teruggegroeid) levert op de lange termijn minder op dan een tegel met iets minder suiker die pas één keer is teruggegroeid. Op de laatstgenoemde tegel ligt de volgende epoch tenslotte evenveel suiker als nu, terwijl de eerstgenoemde slechts vijfentwintig procent van die suiker opnieuw levert.
8
3.2
Landbouwen
In de tweede fase van ons model hebben wij landbouwen toegevoegd aan het actierepertoire van de agents. Daartoe hebben wij eerst de essentiële kenmerken van landbouw geformuleerd waaraan wij alle verdere modelaspecten hebben getoetst. Deze hebben wij afgeleid uit de situatie van boeren in ‘de echte wereld’. Ze zijn als volgt: 1) 2) 3) 4) 5)
Verbouwde grond levert meer voedsel dan onverbouwde grond. Landbouwen levert slechts op de langere termijn voordeel op. Landbouwen vereist een initiële investering. Landbouwen heeft een inherent risico van tussentijdse diefstal. Boeren verplaatsen zich relatief weinig.
De eerste vraag die rijst bij het modelleren van landbouwgedrag is welke tegels een agent in één epoch verbouwt. Alleen de eigen tegel of ook tegels daaromheen? Hoe wordt er dan geoogst? Alle tegels in één epoch of juist één voor één, waarbij de agent zich moet verplaatsen? Gegeven ons vierde genoemde landbouw aspect – het risico van diefstal – wilden we agents in ieder geval tegels laten verbouwen waar ze niet opstaan, zodat andere agents suiker van het land kunnen stelen zonder met de boer zelf in gevecht te hoeven. Vervolgens moesten we onze boeren ook relatief immobiel houden (gegeven landbouwkenmerk vijf) en het mogelijk maken te oogsten zonder te verplaatsen. Om die twee redenen hebben wij besloten landbouwen te modelleren als het bewerken van de eigen tegel en de acht omliggende tegels. Om het aspect van ‘delayed returns’ (landbouwkenmerk twee) te introduceren, kunnen boeren pas na vier epochs van hun land oogsten. In de tussentijd wordt geen suiker van het land verzameld; zo voldoen we aan de rest van het derde landbouwkenmerk, dat van de initiële investering. Nu hoefden we alleen nog te definiëren hoe we het ‘verbouwen’ zelf willen modelleren; dat wil zeggen, op welke manier verbouwde grond meer voedsel oplevert dan onverbouwde grond, oftewel kenmerk één. Het leek ons het meest reëel landbouwen te beschouwen als het versnellen van de natuurlijke teruggroei van suiker nadat het is leeggegeten. Hoe efficiënt dat gebeurt, moest afhangen van de genetische eigenschap ‘landbouwtalent’. Om landbouwkenmerk twee (‘delayed returns’) verder te versterken, wilden we het ‘extra teruggroeien’ sterker maken met het verstrijken van de epochs. Daartoe hebben we het concept van de “boerderijteller” bedacht: Een teller die bijhoudt hoe lang een tegel al deel uit maakt van een “boerderij”. Hoe snel er suiker op groeit, hangt dan af van die teller, totdat er geoogst wordt en de teller weer op 0 wordt gezet. Zo ontstaat een cyclus van vijf epochs. Het ‘teruggroeien’ gebeurt dan volgens de volgende formule:
9
suikerepoch n tegel x = suikerepoch n-1 tegel x + groeisnelheid * landbouwsnelheid * boerderijtellertegel x * ((landbouwtalentboer op tegel x)2 * 4) met groeisnelheid = 0.25 en landbouwsnelheid = 0.50 formule 3 - Suiker op boerderijtegels
Hierbij is groeisnelheid (0.25) de natuurlijke teruggroeisnelheid van alle tegels in onze simulatie en landbouwsnelheid (0.50) een parameter die wij proefondervindelijk hebben vastgesteld met het oog op interessante resultaten. Het kwadrateren van het landbouwtalent komt voort uit de wens het succes van ‘boergedrag’ sterker afhankelijk te maken van de genetische predisposities van de agents dan daarvoor het geval was. De subsequente vermenigvuldiging is ter compensatie daarvan de formule binnengekomen. Voor een ‘modale agent’, met landbouwtalent = 0.25 blijft de uitkomst zo hetzelfde (0.25 * 0.25 * 4 = 0.25). Samengevat komt het landbouwgedrag dus hierop neer: Een boer claimt zijn eigen tegel en de acht tegels daaromheen, bewerkt die vier epochs lang met een opbrengst die afhankelijk is van het eigen landbouwtalent en oogst daarna relatief grote suikerhoeveelheden. In theorie, tenminste. In de praktijk kunnen in de tussentijd natuurlijk andere agents op zijn bebouwde tegels gaan staan en daar al het suiker vanaf rapen. Daarbij wordt bovendien de ‘boerderijteller’ weer op nul gezet, zodat de boer weer van voren af aan moet beginnen. Als de boer echter tussentijds vertrekt of doodgaat, neemt de boerderijteller af met één per epoch. Elke boer kan elke epoch opnieuw de keuze maken om te verzamelen of te landbouwen. De verwachte verzamelopbrengst wordt bepaald zoals beschreven in deelhoofdstuk 3.1, Verzamelen; voor de verwachte landbouwopbrengst heeft elke agent een aparte evaluatiefunctie. Deze rekent de totale suikeroogst uit aan de hand van formule 3 (de agent heeft kennis van alle parameters) en deelt vervolgens door vijf om de opbrengst per epoch te bepalen. De actie die naar verwachting het meeste suiker oplevert (verzamelen of landbouwen), wordt uitgevoerd. Agents zijn dus volstrekt naïef en gaan ervan uit dat alle ‘potentiële’ suiker ook daadwerkelijk binnenkomt. Tegels kunnen echter niet door twee boeren tegelijk worden bewerkt.
10
Wij hebben overwogen deze evaluatiefunctie wat realistischer te maken door rekening te houden met het aantal agents dat een boer in spé om zich heen waarneemt. ‘Kijk of het druk is, zo ja, ga er dan vanuit dat maximaal X% van de oogst daadwerkelijk wordt binnengehaald.’ Uiteindelijk hebben we besloten dat achterwege te laten. Onze agents hebben al behoorlijk wat inzicht in de eigen situatie en het leek ons beter deze evaluatiefunctie maar zo eenvoudig en dus aannemelijk mogelijk te houden. We verwachtten in eerste instantie ook vooral boerenpopulaties in dunbevolkte gebieden (zie hoofdstuk 2, Theorie), wat de noodzaak nog verder verminderde.
3.3
Aanvallen
Tenslotte wilden we agents ook aan suiker laten komen door het op anderen te veroveren. Een agent kan in principe elke andere agent binnen zijn kijkradius aanvallen. Dit is er maximaal één per epoch en geldt als actie in plaats van verzamelen of landbouwen. Als de aanvallende agent sterker is dan het slachtoffer, zoals wordt bepaald door de genetische eigenschap kracht, dan wordt de verliezende agent uit de simulatie verwijderd en alle suiker die het bij zich heeft, buitgemaakt. Strijd leveren kost echter minimaal tien suiker, met een additionele verbranding die afhangt van het verschil in kracht tussen aanvaller en slachtoffer. Bovendien moet de agent die de strijd initieert, zich eerst naar het doelwit toe bewegen, waarvoor de normale verplaatsingskosten gelden zoals beschreven in formule 2. De totale opbrengst voor een agent van een succesvolle aanval wordt gegeven door de volgende formule: opbrengst aanvalagent x op agent y = suikeragent y – 110 – krachtagent x – krachtagent y – verplaatsingskostenpositie agent x naar positie agent y
formule 4 - Suiker opbrengst aanvallen
Elke agent moet dus elk epoch overwegen of er een andere agent in de buurt is die het aanvallen waard is. Een agent kan met een fout van 10% de kracht van andere agents inschatten en kijkt eerst of een overwinning op een potentieel slachtoffer waarschijnlijk is. Vervolgens wordt aan de hand van formule 4 uitgerekend wat de verwachte suikeropbrengst is van een dergelijke strijd, waarbij met een fout van 10% de suiker van de tegenstander wordt ingeschat.
11
Alleen als die suikeropbrengst groter is dan de geschatte opbrengst van zowel verzamelen als landbouwen (zoals beschreven in deelhoofdstukken 3.1 en 3.2), wordt daadwerkelijk tot de aanval overgegaan. Vanwege de inschattingsfout die wordt gemaakt bij het bepalen van de kracht van het slachtoffer, kan het ook voorkomen dat de initiërende agent de uiteindelijke aanval verliest. Dat levert het slachtoffer geen suiker op, maar leidt wel tot de verwijdering van de strijdlustige agent uit de simulatie. Overigens wordt een agent die jonger is dan twee epochs altijd met rust gelaten; dit om te voorkomen dat ouders hun eigen nakomelingen aanvallen (die per definitie naast zich staan). ‘Aanvallen’ is voor agents al met al dus een behoorlijk inspannende en risicovolle operatie. De “aanvalskosten” van ‘110 suiker eenheden – krachtaanvallende agent – kracht slachtoffer’ zijn redelijk zwaar. Deze formule is door enig experimenteerwerk tot stand gekomen, nadat bij ‘lichtvoeterige strijdmogelijkheden’ bleek dat agentpopulaties zich binnen zeer kort tijdsbestek volledig hadden uitgeroeid. Dit hangt samen met onze keuze voor seksuele reproductie: Twee agents moeten elkaar wel in leven laten om zich gezamenlijk voort te planten en dat gebeurde in eerste instantie maar weinig. Maar ook daarover in hoofdstuk 6, Reflectie, later meer.
3.4
Partners
Voordat we het idee van partners introduceerden, hadden we alle basisingrediënten van onze simulatie geïmplementeerd. Een agent kon in principe alle acties uitvoeren die we vooraf in gedachten hadden. Na een aantal runs bleek echter dat de uitkomsten van de simulatie weinig varieerden. Er kwam namelijk nooit een boerensamenleving uit naar voren. Die hadden we, voordat we ‘aanvallen’ in het model hadden verwerkt, periodiek wel gezien. De conclusie was dus dat agressie de boeren sterker benadeelde dan de verzamelaars. Daar leken ons twee redenen aan ten grondslag te liggen. Ten eerste was het voor de boer lastig om zich te reproduceren. Een uitstekende landbouwer kan in de woestijn overleven, maar beweegt daarbij nauwelijks – zoals ook de bedoeling was. Zonder een vruchtbare agent van het andere geslacht pal naast zich, stierf een agent met hoog landbouwtalent midden in de woestijn van ouderdom, zonder zijn (goede) landbouwgenen door te geven aan de volgende generatie. Ten tweede leek het ons waarschijnlijk dat boeren vaak het doelwit werden van agressieve agents. Een goed functionerende boer heeft een veel hogere suikeropbrengst dan de gemiddelde verzamelaar. De oogst komt ook ‘in één keer binnen’ zodat er een uitgesproken moment is om een boer aan te vallen. Op zich is het dus vanzelfsprekend dat landbouwers veel het slachtoffer worden van aanvallen van andere agents, maar erg interessant gedrag leverde het niet op.
12
Voor deze twee problemen bedachten wij de volgende oplossing: Zodra een agent vruchtbaar is, gaat het op zoek naar een partner – dat wil zeggen, een vruchtbare agent van het tegenovergestelde geslacht. Is een dergelijke partner niet beschikbaar binnen de kijkradius van de agent, dan verplaatst het zich richting de dichtstbijzijnde agent, onafhankelijk van geslacht of vruchtbaarheid. Als er geen agents in zicht zijn, dan loopt het zo ver mogelijk in een willekeurige richting. Bij vruchtbaarheid hebben de agents dus een drang om bij elkaar in de buurt te zijn. Dit leek ons ook biologisch wel plausibel. Als een agent een partner heeft gevonden heeft dit twee gevolgen voor het gedrag van de agent. Ten eerste kan een agent zijn partner niet aanvallen. Hoewel het wel voorstelbaar is dat in de natuur een agent zijn eigen partner zou doden, hoopten wij met deze beperking meer variatie te creëren in het lot van onze boeren. Ten tweede zoekt een agent zijn partner op, mocht deze zich niet meer naast zich bevinden. Ook dit werkt licht in het voordeel van de boeren, omdat zij altijd op hun plek blijven staan. Omdat de boeren één moment hebben waarop ze plotseling een grote suikeropbrengst binnenhalen – bij het oogsten – is het voor hun extra belangrijk zich ‘gelijk’ zoveel mogelijk voort te kunnen planten en niet eerst op zoek te hoeven naar een partner. In de tussentijd zijn ze namelijk extra aantrekkelijk om aan te vallen. Als een boer echter een partner kiest die geen boer is, dan wordt het weer lastiger om te gaan landbouwen. Het hebben van een partner brengt ook gevolgen met zich mee voor de reproductie. Hoewel het concept monogamie de agents nog steeds vreemd is, heeft een agent toch een voorkeur voor zijn partner boven anderen. Als de partner echter niet in de buurt is of niet vruchtbaar (door een tekort aan suiker of een leeftijd buiten de reproductieve range), schroomt de agent niet om zich voort te planten met elke andere vruchtbare agent die voor handen is. Als een agent zijn partner verliest (door een aanval, hongersnood of ouderdom) dan staat het direct open voor een nieuwe partner.
13
4
Experiment
Ons experiment is uitgevoerd met het volledige model, zoals beschreven in hoofdstuk 3, Simulatie. Het experiment betrof 30 runs van ieder 3000 epochs. In dit hoofdstuk zullen wij de resultaten van dit experiment beschrijven. In 23 van deze 30 runs convergeerde de populaties op beide bergen naar verzamelaarsgedrag (zie figuur 2). In drie runs (runs 8, 15 en 26) stierf de populatie op één van beide bergen uit, en was het ander bevolkt met verzamelaars (figuur 3). In twee runs (runs 14 & 27, figuur 4) werd in eerste instantie op één berg verzameld en op één berg geboerd, totdat de boerenpopulatie de woestijn doorkliefde, de verzamelaarspopulatie bereikte en de verzamelaars vrijwel uitstierven. Tenslotte (runs 6 & 30, figuur 5) ontstonden op beide bergen landbouwpopulaties die elkaar uiteindelijk bereikten. Zie grafiek 1 voor een overzicht.
2
2
Overzicht Resultaten verzamelaars
3
23
1 populatie uitgestorven invasie van 1 boerenpopulatie 2 boerenpopulaties
Grafiek 1 – Overzicht resultaten
Deze classificering van de simulaties is gebaseerd op het daadwerkelijke gedrag van de agents (verzamelen of boeren) alsmede de gemiddelde waarde van het gen landbouwtalent van alle agents in elke simulatie. Zowel in de runs die leiden tot twee bergen verzamelaars, als één berg verzamelaars en één berg uitgestorven, blijkt de gemiddelde waarde voor het gen landbouwtalent af te nemen tot onder de 0.1. Bij de ‘boerenruns’ neemt de gemiddelde waarde van landbouwtalent juist toe, tot boven de 0.85, zoals geïllustreerd in grafiek 2. In grafiek 3 is daarnaast het gemiddelde aantal verzamelaars en boeren in beide typen runs verbeeld. Hieronder eerst een samenvatting van de resultaten van ons experiment, uitgesplitst naar de verzamelaarswerelden en boerenwerelden. Een analyse van deze bevindingen en een terugblik op onze verwachtingen, zoals geformuleerd in hoofdstuk 2, Theorie, volgt in hoofdstuk 5, Analyse.
14
Figuur 2 - 2 Verzamelaarspopulaties
Figuur 4 - 1 Boerenpopulatie
Figuur 3 – 1 Uitgestorven populatie
Figuur 5 – 2 Boerenpopulaties
15
1 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0
Gemiddeld landbouwtalent verzamelaarsruns Gemiddeld landbouwtalent boerenruns
0 30 0 60 0 90 0 12 00 15 00 18 00 21 00 24 00 27 00
Landbouwtalent
Landbouwtalent
Tijd (epochs)
Grafiek 2 - Gemiddeld landbouwtalent in de ‘verzamelaarsruns en ‘boerenruns’.
Boeren & Verzamelaars 1400 Gemiddeld aantal boeren in boerenpopulatie
1200
Agents
1000
Gemiddeld aantal boeren in verzamelaarspopulatie
800 600 400
Gemiddeld aantal verzamelaars in boerenpopulaties
200
30 0 60 0 90 0 12 00 15 00 18 00 21 00 24 00 27 00
0
0
Tijd(Epochs)
Gemiddeld aantal verzamelaars in verzamelaarspopulaties
Grafiek 3 - Gemiddelde aantallen boeren en verzamelaars in de twee typen populaties.
16
Verzamelaars Alle runs die leidden tot verzamelaarspopulaties, lijken oppervlakkig vergelijkbaar. In de eerste vijftig epochs treedt vrij massale sterfte op, waarna er zo’n zestig tot honderdveertig agents overblijven. Vervolgens treedt er meestal sterk cyclische groei op, waarbij met een min of meer vaste periode per run het aantal agents sterk toeneemt en dan weer uitsterft. Zie grafiek 4 voor het agent verloop van drie representatieve, quasi-willekeurig gekozen ‘verzamelaarsruns’ (run 4, 20 en 28), een run waarbij één berg uitstierf (run 15) en tenslotte het gemiddelde agentverloop van alle verzamelaarsruns gezamenlijk.
Agents
Agentverloop Verzamelaars 800 700 600 500 400 300 200 100 0
Run 4 Run 15 (één uitgestorven) Run 20 Run 28 1
301
601
901
Tijd (epochs)
1201
Gemiddelde verzamelaarsruns
Grafiek 4 - Agent verloop in verzamelaarswerelden
Na 1500 epochs is de gemiddelde visie van alle agents binnen de verzamelaarspopulaties geëvolueerd naar een waarde tussen de 1.5 en 3.5 tegels ver, en min of meer gestabiliseerd; metabolisme is uitgekomen op een waarde tussen 1 en 1.5 suikerverbranding per epoch (met verdere daling in zicht); landbouwtalent blijft zoals gezegd onder de 0.1 en kracht is sterk variabel, met gemiddelde waardes tussen de 15 en 95 kracht voor verschillende runs. Ook deze genenwaardes zijn sterk cyclisch. In grafiek 5 zijn de gemiddelde genenwaarden voor alle verzamelaarsruns genormaliseerd naar ‘punten uit 100’: hoe hoger de waarde per gen, hoe beter het gen geoptimaliseerd is. Bij initialisatie is het totaal aan punten per agent altijd precies 100; door seksuele voortplanting kunnen echter agents ontstaan die meerdere genenwaarden geoptimaliseerd hebben. Het “totale gemiddelde puntentotaal per agent” is ook weergegeven in grafiek 5.
17
Genormaliseerde Genenwaarden
Genormaliseerde Genen Verzamelaars Genormaliseerde Gemiddelde Visie
180 160 140 120 100 80 60 40 20 0
Genormaliseerd Gemiddeld Metabolisme Genormaliseerd Gemiddelde Landbouwtalent Genormaliseerd Gemiddeld Kracht
1
301
601
901
1201
Tijd (Epochs)
Totaal Genormaliseerde Genenwaardes
Grafiek 5 – Genormaliseerde genen verzamelaars
Vervolgens is het nog de moeite waard het totaal aantal aanvallen te beschouwen dat plaatsvindt in onze verzamelaarspopulaties. Na 1500 epochs zijn er totaal tussen de dertig en driehonderd agents slachtoffer geworden van hun medesimulatiebewoners. Het gemiddeld totaal aantal aanvallen in de verzamelaarspopulaties is weergegeven in grafiek 6. Als laatste iets over het suikerbezit per agent; dit schommelt per simulatie gemiddeld tussen de twintig en dertig suiker eenheden per agent, met enkele uitschieters naar veertig stuks. Ook dit heeft een cyclisch karakter, wat verder aan bod komt in hoofdstuk 5, Analyse.
Aanvallen
Gemiddeld Totaal Aantal Aanvallen Verzamelaarspopulaties 160 140 120 100 80 60 40 20 0
Gemiddeld totaal aantal aanvallen
1
301
601
901
1201
Tijd (Epochs)
Grafiek 6 - Gemiddeld totaal aantal aanvallen in de verzamelaarspopulaties.
18
Landbouwers
De vier runs die landbouwsamenlevingen lieten zien, laten (zoals eerder vermeld) zich weer onder te verdelen in twee categorieën: één waarbij op beide bergen onafhankelijk van elkaar boerenpopulaties ontstonden, die elkaar geleidelijk ontmoeten (run 6 en run 30) en één waarbij één berg convergeerde naar landbouwgedrag en uiteindelijk de andere “verzamelaarsberg” overrompelde. In run 14 gebeurde dit rond epoch 900 en in run 27 rond epoch 3300. In onderstaande grafiek 7 van de totale agentbevolking in de verschillende runs, is de plotselinge bevolkingstoename in die runs goed zichtbaar. Daar komen we in hoofdstuk 5, Analyse, op terug. Na 1500 epochs is de bevolkingsgrootte al zo’n 1400 agents, wat slechts langzaam toeneemt naar 1600 agents na 4000 runs.
Agents
Agentverloop Boeren 1800 1600 1400 1200 1000 800 600 400 200 0
Run 6 Run 14 Run 27 Run 30 Gemiddeld
3901
3601
3301
3001
2701
2401
2101
1801
1501
1201
901
601
301
1
Tijd (epochs)
Grafiek 7 - Agent verloop in landbouwwerelden
Na 1500 epochs is de gemiddelde visie van alle agents binnen de verzamelaarspopulaties geëvolueerd naar een waarde tussen de 2.0 en 2.5 tegels ver (met uitzonder van run 27, die dan nog geen “volledige”landbouwwereld is). Na 4000 epochs is visie verder afgenomen naar 2.0 tegels gemiddeld over de vier populaties (zie ook grafiek 8). Metabolisme is al na 1500 epochs in alle landbouwruns afgenomen tot bijna één eenheid suikerverbranding per epoch, landbouwtalent stijgt in diezelfde tijd tot boven 0.9 en kracht is wisselend – na 1500 epochs tussen de 10 en de 20 voor runs 14, 27 (dan nog niet allemaal boeren!) en 30, maar veel hoger voor run 6, met een gemiddelde van 50. In grafiek 9 zijn de gemiddelde genormaliseerde genenwaarden weergegeven, op dezelfde wijze als bij de verzamelaars is gebeurd.
19
Gemiddelde Visie Boeren 3,5 3 2,5 Run 6 Run 14 Run 27 Run 30 Gemiddelde
2 1,5 1 0,5 0
3901 3601 3301 3001 2701 2401 2101 1801 1501 1201 901 601 301 1 Tijd(Epochs)
Grafiek 8 - Gemiddelde visie in landbouwwerelden.
Genormaliseerde Genen Boerenpopulaties Genormaliseerde Gemiddelde Visie
Genormaliseerde Genenwaarde
250 200 150 100 50
0 30 0 60 0 90 0 12 00 15 00 18 00 21 00 24 00 27 00
0
Tijd (epochs)
Genormaliseerd Gemiddeld Metabolisme Genormaliseerd Gemiddelde Landbouwtalent Totaal Genormaliseerde Genenwaardes Genormaliseerde Gemiddelde Kracht
Grafiek 9 – Genormaliseerde genen boeren.
Tenslotte nog iets over het aantal aanvallen en het gemiddelde suikerbezit per agent. Het totaal aantal aanvallen in de boerenpopulaties ligt na 1500 epochs al tussen de 1000 en 1500 stuks, zoals weergegeven in grafiek 10. Het suikerbezit per agent is vergelijkbaar met dat van de verzamelaars: Gemiddeld tussen de twintig en dertig suikereenheden per agent.
20
Aanvallen
Aantal Aanvallen Boerenpopulaties 8000 7000 6000 5000
Run 6 Run 14
4000 3000 2000 1000 0
Run 27 Run 30
3901
3601
3301
3001
2701
2401
2101
1801
1501
1201
901
601
301
1
Tijd (Epochs)
Grafiek 10 - Totaal aantal aanvallen in de boerenpopulaties.
21
5
Analyse
Onze voorspellingen zoals beschreven in hoofdstuk 2, Theorie, zijn niet of nauwelijks uitgekomen. Wij hadden vooral een geografische verdeling van verzamelaars en landbouwers op het oog – boeren in de minder vruchtbare gebieden, verzamelaars op de rijke suikerbergen. In plaats daarvan zien we in ons experiment dat de hele wereld per simulatie convergeert naar zuiver verzamelende of landbouwende agents. Iets dergelijks hadden we absoluut niet verwacht, maar achtten we wel interessant. Verder parametergesleutel hebben we zodoende achterwege gelaten. Voor echt statistische analyse van de resultaten van ons experiment zoals beschreven in hoofdstuk 4, is de omvang van dit bachelorproject te beperkt. In dit hoofdstuk een minder diepgravende bespreking van onze resultaten die zich vooral richt op opvallende aspecten en interessante gedragingen. Eerst iets over de stabiliteit van de ontstane situaties, gevolgd door een beschouwing van een aantal saillante kenmerken, de robuustheid onder kleine parameterwijzigingen en tenslotte een aantal voorgestelde verklaringen.
5.1
Stabiliteit
In het algemeen blijkt na 1500 epochs al een min of meer stabiele situatie te ontstaan, of het nu verzamelaars of boeren betreft. Alle simulaties hebben we minstens 3000 epochs gedraaid, zonder verdere interessante gedragingen waar te nemen. Enkele verzamelaarsruns hebben we zelfs tot 10000 epochs door laten lopen, waarbij verdere veranderingen uitbleven. Alleen metabolisme wil na 1500 epochs soms nog niet ‘uitgeëvolueerd’ zijn. Andersom blijkt een boerenwereld 10000 epochs lang een boerenwereld te blijven. Enige uitzondering op de regel ‘na 1500 epochs geen interessante gedragingen meer’ is de ‘kolonisatie’ van de tweede berg door de boerenpopulatie uit run 27. Pas rond epoch 3300 ontstaan daar op de ‘boerenberg’ boeren die efficiënt genoeg kunnen landbouwen om de woestijn over te steken. We hebben in onze dertig runs verder geen situatie aangetroffen waarbij slechts op één berg boeren ontstonden, en onze ervaringen met de verzamelaarsruns geven geen aanleiding om te veronderstellen dat na 1500 epochs nog boerensamenlevingen kunnen ontstaan uit gevestigde verzamelaarspopulaties.
22
5.2
Saillante Kenmerken
Cyclische populatiegrootte
Eén opvallend kenmerk wat uit alle resultaten met verzamelaarspopulaties spreekt, is het sterk cyclische karakter van de populatiegrootte, wat we bij sommige runs ook terug zien bij de gemiddelde waarden van kracht en metabolisme. Vaak zwelt na elke periode de populatie weer extra aan, om vervolgens weer dieper te dalen, zoals te zien in onderstaande grafiek 11, waarin het (vrij typische) agentverloop van run 4 is geschetst. Dat is wel voorstelbaar, omdat elke suikerberg in principe een vast aantal agents kan onderhouden, gegeven een bepaald gemiddeld agent metabolisme. Maar als dat aantal bereikt is, is er natuurlijk niets wat de agents ervan weerhoudt zich toch voort te planten, desnoods “in de woestijn”. Daar is het slecht toeven, met op termijn massale sterfte tot gevolg. Dat wordt ook geïllustreerd door grafiek 12, waarin het agentverloop (gedeeld door 6 voor leesbaarheid) is uitgezet tegen het gemiddelde suikerbezit per agent (in run 4) – precies dezelfde periode. Populatiedichtheid neemt toe, agentrijkdom neemt af, met decimatie tot gevolg. De overblijvers zijn dan de agents met het laagste metabolisme en het zijn hun nakomelingen die de berg weer herbevolken. Zodoende duurt het de volgende cyclus weer net iets langer totdat de draagkracht van de suikerberg overschreden wordt.
Grafiek 11 – Agentverloop run 4
23
Grafiek 12 – Agentverloop run 4 uitgezet tegen het gemiddelde suikerbezit per agent.
De landbouwruns laten dit cyclische effect dan ook niet of nauwelijks zien. Als er eenmaal een populatie is ontstaan met goede genen voor landbouwtalent, is het ook in de woestijn redelijk toeven. Nieuwe agents vestigen zich gewoon buiten de suikerberg, zodat van massale sterfte (en cyclische bevolkingsgroei) geen sprake is. Zie hiervoor ook grafiek 7 in hoofdstuk 4, Experiment, met het agentverloop van de boerenruns).
Superagents In onze allereerste ideeën omtrent dit bachelorproject zetten we in op het ontstaan van “kastes” (zie hoofdstuk 2, Theorie) met het idee dat agents door evolutie bepaalde eigenschappen konden maximaliseren ten koste van andere eigenschappen met verschillende gedragingen tot gevolg. Voor de eerste driehonderd agents geldt inderdaad dat ze “totaal” genetisch gelijkwaardig zijn, waarbij de verschillen zitten in de verdeling over de vier genen. Daarna kunnen door seksuele voortplanting in principe “super agents” ontstaan, waarbij alle vier de genetische eigenschappen de maximaal mogelijke waarde hebben aangenomen (visie 6, metabolisme 1, landbouwtalent 1, kracht 100).
24
De vraag is hoe biologisch plausibel dat is. Evolutie ‘maakt’ geen “all-round betere” individuen; alleen individuen die beter zijn aangepast aan de lokale omstandigheden. Een echt voor de handliggende methode om het ontstaan van superagents te voorkomen, konden we echter ook niet echt bedenken, zeker gegeven onze keuze voor seksuele voortplanting. In de praktijk blijkt het ook niet voor te komen. In de verzamelaarspopulaties neemt de “totale genenpool” gemiddeld een waarde aan van zo’n 170 (zie grafiek 5) en in landbouwruns komt het totale gemiddelde op iets van 220 (zie grafiek 9) “genenpunten”. Zo blijkt verzamelen ook genetisch een “dead end”.
Verschillen Verzamelaars & Boerensamenlevingen
Gegeven dat de samenlevingen geconvergeerd zijn naar verzamelaars –of boerensamenlevingen, is het interessant om te kijken naar de globale verschillen tussen de twee stabiele situaties. Nauwlettende (visuele) analyse van de gemiddelden voor visie en metabolisme leverde geen opvallende verschillen. Ook het suikerbezit per agent lijkt niet significant af te wijken. Des te interessanter is het om te kijken naar het totale agents wat de wereld bevolkt, zoals is weergegeven in grafiek 13. De bevolkingsdichtheid is in de ‘landbouwruns’ na 1500 epochs gemiddeld vier keer zo hoog als gemiddeld voorkomt in de boerenpopulaties. Het is dus zeldzaam dat een boerengemeenschap het redt – maar als het gebeurt, groeit de populatie als geheel veel sneller. Dit klopt precies met onze intuïties over wat er zich historisch op aarde heeft afgespeeld.
Grafiek 13 – Gemiddelde agent aantallen in de verzamelaar –en boerenpopulaties.
25
Een ander opvallend verschil betreft de aanvalsstatistieken. In boerenwerelden is de agressie onder agents beduidend hoger, zoals blijkt uit de onderstaande grafiek 14. Ook dit is een voor de hand liggend resultaat. Een echt goede landbouwer op een enigszins aantrekkelijke locatie kan honderden suiker eenheden binnenhalen bij de oogst. Een uitstekende verzamelaar mag tevreden zijn met twee suiker eenheden per epoch. Vanwege de hoge populatiedichtheid in een boerensamenleving komt een boer zelden aan zijn maximale oogst, maar als het een keer gebeurt, is het onmiddellijk een uitstekend doelwit voor elke andere agent die ook maar enigszins hogere kracht heeft.
Grafiek 14 – Gemiddelde agent aanvallen in de verzamelaar –en boerenpopulaties.
Invasie
We hebben al eerder beschreven dat in twee runs een boerenpopulatie de aangrenzende verzamelaarsberg “gekoloniseerd” heeft. Blijkbaar hebben gevestigde landbouwers zoveel voordelen boven verzamelaars dat onmiddellijke assimilatie optreedt. Het leuke is hoe duidelijk dat zichtbaar is in de agentverloop grafieken van de twee runs die het betreft, zoals hieronder zichtbaar in grafiek 15 van run 14 (contact rond epoch 900). De standaardafwijking van het landbouwtalent gen (grafiek 16) laat hetzelfde zien: Rond epoch 900 treedt een markante keldering op. Het is alleen wel duidelijk dat het hierbij gaat om verdringing, niet agressie – de aanvalsstatistieken nemen in dezelfde periode niet noemenswaardig toe, zoals blijkt uit grafiek 17.
26
Agents
Agents Run 14 1800 1600 1400 1200 1000 800 600 400 200 0
Agents Boeren Verzamelaars
5001 4501 4001 3501 3001 2501 2001 1501 1001 501 1 Tijd(Epochs) Grafiek 15 – Agenttotaal in run 14 Stanaardafwijking Landbouwtalent Run 14 0,5
Standaardafwijking
0,45 0,4 0,35 0,3 standaardafwijking landbouwtalent
0,25 0,2 0,15 0,1 0,05 0
5101 4801 4501 4201 3901 3601 3301 3001 2701 2401 2101 1801 1501 1201 901 601 301 1 Epochs
Grafiek 16 – Standaardafwijking landbouwtalent in run 14
27
Aanvallen Run 14 700 600
Agents
500 400
Kills
300 200 100 0 1
76 151 226 301 376 451 526 601 676 751 826 901 976 Tijd (Epochs)
Grafiek 17 – Aanvalsstatistieken run 14
Minder zichtbaar, maar toch even opmerkelijk, is wat er aan de hand is in run 3 en run 26, met name. Het viel ons het eerst op in run 3. Dit was een ‘verzamelaarsrun’ waarin het aantal aanvallen veel hoger was dan het gemiddelde. Niet alleen was het aantal aanvallen veel groter, ze werden ook in relatief korte tijd uitgevoerd, ongeveer honderd epochs. Een nadere inspectie van de overige data in deze run wees uit dat rond dezelfde periode de gemiddelde kracht van de agents flink steeg. De standaardafwijking van de kracht van ongeveer veertig (op een schaal van nul tot honderd) kelderde naar ongeveer vijf. Na deze aanvallen bleef het relatief rustig in de simulatie. Zie hiervoor ook grafiek 18 (agentverloop & aanvallen run 3) en grafiek 19 (kracht en standaardafwijking kracht run 3). Agents Run 3 900 800 700 Agents
600 500
Agents Aanvallen
400 300 200 100 0
2701
2401
2101
1801
1501
1201
901
601
301
1
Tijd (Epochs)
Grafiek 18 – Agentverloop & aanvallen run 3
28
Kracht / Standaardafwijking Kracht Run 3 120 100
Kracht
80
Kracht
60
Standaardafwijking kracht
40 20 0 1
192 383 574 765 956 1147 1338 Tijd (epochs)
Grafiek 19 – Kracht & standaardafwijking kracht run 3 Deze resultaten wijzen er op dat er plotseling een rover opstond die een hele rits agents plunderde. Aangezien agents bij geboorte de genen van hun ouders overnemen, zal de variatie tussen de genen van agents onderling steeds kleiner worden. Het plotselinge karakter zou kunnen wijzen op een mutatie in kracht. Hierdoor zou een agent sterker zijn dan de agents om zich heen en deze kunnen beroven. Omdat mutatie afhangt van de genen van de ouders, zou dit weinig impact moeten hebben. Een andere verklaring is een contact met de andere suikerberg. Vaak zijn verzamelaarspopulaties geïsoleerde kolonies op de bergen. Deze kolonies hebben dus verschillende gemiddelde waarden voor hun genen. Als onder de juiste omstandigheden een agent van de ene berg zicht zou hebben op de andere berg en een aantal agents aldaar, dan zou deze een sprong kunnen wagen. De agent zou dan flink meer kracht moeten hebben dan de agents op de andere berg. Zo kan de agent zijn gang gaan en in principe de hele kolonie plunderen, zolang het verschil in kracht maar groot genoeg is (daar hangt de suikeropbrengst tenslotte vanaf). De verandering in de standaardafwijking wijst op een dergelijk verschil dat na de aanvalsperiode geminimaliseerd wordt. Dit geldt ook voor de verandering in het gemiddelde van de kracht. Hier heeft dus ook “invasie” plaatsgevonden. Hetzelfde patroon blijkt zich voor te doen in run 26, maar dan veel vroeger in de simulatie, waardoor het effect minder groot was en zodoende minder opvallend.
29
5.3
Robuustheid
Om de robuustheid van de simulatie te toetsen hebben we tevens een aantal parameters gevarieerd. Hiervoor zijn een aantal runs per variatie gebruikt om een degelijk beeld te krijgen van het gedrag van de simulatie. Zo hebben kleine veranderingen in het minimum en het maximum van de genen visie en metabolisme weinig invloed. Er zijn wel logische verschillen; als bijvoorbeeld de range van het gen metabolisme wordt verruimd (van tussen de 1 en 4 naar tussen de 1 en 7, bijvoorbeeld), dan komen boerenpopulaties en uitgestorven bergen minder vaak voor (heden “bijzondere situaties”). Door de grotere marge wordt de waarde van dit gen belangrijker ten opzichte van andere genen. Een slecht metabolisme heeft zwaardere gevolgen, zodat er strenge selectie op plaats vindt ten koste van andere genen. Voor visie zijn de veranderingen minder merkbaar. Agents worden beweeglijker naarmate de gemiddelde visie toeneemt. Tevens is er bij hogere visie minder sprake van twee verschillende kolonies op elke berg, omdat ze elkaar eerder kunnen bereiken. Kracht en landbouwtalent zijn al relatieve waarden en lenen zich dus niet goed voor parameteronderzoek. Als de maximale hoeveelheid suiker op een tegel of de groeisnelheid van het suiker worden aangepast heeft dit vaak wel extreme gevolgen. Hoe hoger de waarden van deze twee parameters zijn, hoe vaker een boerenpopulatie ontstaat. Andersom geldt dat bij lage waarden vaker de populatie uitsterft. Deze parameters zijn redelijk gevoelig voor verandering. Dit is ergens wel logisch, omdat veel formules gebaseerd zijn op de standaardwaarden van deze parameters. Als deze aangepast worden dan heeft dit gevolgen voor bijna elk aspect van de simulatie. Bij het aanpassen van de parameter ‘verplaatsingskosten’ zijn geen onvoorspelbare situaties te zien. In principe geldt dat hoe hoger de kosten, hoe meer bijzondere situaties voorkomen. Voor een boer maken de hoge kosten niets uit, voor een verzamelaar is het des te belangrijker. Kleine veranderingen hebben weinig invloed. Ook voor de parameter ‘aanvalskosten’ geldt eenzelfde redenatie. Hoe meer energie het kost om een agent aan te vallen, hoe meer kansen de boeren krijgen. Zodra deze parameter een lagere waarde dan honderd aanneemt, sterven de agents eigenlijk altijd uit. Dit is een logisch gevolg van de formule die hiervoor gebruikt is. Het verschil in kracht kan namelijk maximaal honderd worden. Dit verschil wordt van de energie afgetrokken. Als een agent dus extra energie krijgt bij het aanvallen van een andere agent, dan staat niets de agent in de weg om dit gedrag te vertonen, ongeacht de hoeveelheid suiker.
30
Ten slotte hebben we onderzocht wat de gevolgen zijn van mutaties die vaker voorkomen of mutaties die meer impact kunnen hebben. Voor beide waarden lijken de gevolgen niet merkbaar. De variaties in uitkomsten van de simulatie blijven redelijk gelijk bij een halvering of verdubbeling van de standaardwaarde. Het lijkt belangrijker dat er mutatie is, dan hoe sterk de mutaties zijn. Echt extreme waarden hebben natuurlijk wel invloed.
5.4
Verklaringen
Hoe is het nu mogelijk dat in onze simulatie de ene keer een boerenpopulatie ontstaat en de andere keer een verzamelaarspopulatie? Het is makkelijk om te zeggen dat de type populatie emergeert uit het gedrag van de agents. Duidelijk is dat er met onze standaardwaarden voor de parameters specifieke omstandigheden moeten ontstaan waarin boeren de ruimte krijgen om zich te ontwikkelen. Welke omstandigheden dit zijn, is lastig om te zeggen. Het variëren van de parameters schept wel enige helderheid. Bij het implementeren van het aanvallen van andere agents merkten we een duidelijk verschil tussen de simulaties met alleen verzamelaar- en boergedrag en simulaties waarbij ook aanvallen mogelijk waren. Het is blijkbaar interessanter om boeren aan te vallen dan om verzamelaars aan te vallen, dit is ook terug te vinden in het aantal aanvallen bij boerenpopulaties ten opzichte van verzamelaarspopulaties – het ligt veel hoger. Het lijkt erop dat het aanvallen van andere agents, de ontwikkeling van het boergedrag onderdrukt. Dit was ook merkbaar toen de aanvalskosten omhoog werden geschroefd. Hoe hoger de aanvalskosten, hoe groter de kans op boerenpopulaties. Een succesvolle boer heeft meer nakomelingen dan een succesvolle verzamelaar, maar wordt onevenredig veel slachtoffer van geweld en diefstal. De kans dat een agent in de simulatie begint met voldoende landbouwtalent, op redelijke ondergrond, met beperkte competitie en uiteindelijk een geschikte partner, is blijkbaar niet erg groot. Alleen als er een groot aantal factoren bij elkaar komen, kan een effectieve boer zich naar volledige capaciteit voortplanten. Als meerdere agents binnen dezelfde simulatie dat overkomt, lijkt een soort kritieke massa te ontstaan die boerenpopulaties mogelijk maakt. Boeren blijven zelf natuurlijk ook relatief stil staan, en zijn minder geneigd tot aanvallen of stelen.
31
Dit verklaart ook waarom na 1500 epochs geen boerenpopulaties meer ontstaan; de ‘afweging’ tussen de verschillende genen valt weg. Aan het begin van de simulatie is een goede boer per definitie ook een slechte vechter en verzamelaar, waardoor een zelfversterkend proces ontstaat: Meer boeren betekent meer vrijheid voor nog meer boeren. Als een agent met hoog landbouwtalent zich echter niet in die ideale omstandigheid bevindt, betekenen zijn slechte genen voor metabolisme en kracht waarschijnlijk dat het zich niet zal voortplanten. Na 1500 epochs zijn er dan nauwelijks nog ‘goede boeren’ over. Het zelfversterkende proces kan ook niet meer optreden, omdat één agent met één goede mutatie onvoldoende effect teweeg brengt.
32
6
Reflectie
Gedurende het gehele project zijn er vaak momenten geweest dat we een keuze moesten maken. Regelmatig moesten we ad hoc een oplossing verzinnen voor een programmeeranomalie, dan weer zorgde een opmerking van één van de begeleiders of auteurs voor een discussiepunt. Natuurlijk hebben we ook vaak onze theoretische aanpak moeten wijzigen. De keuzes die we op dergelijke momenten hebben gemaakt zijn niet altijd de juiste geweest. Andere keuzes zijn gevoelsmatige keuzes geweest, die altijd ter discussie staan. Enkele daarvan zijn al besproken in hoofdstuk 3, Simulatie, maar een aantal wat bredere overwegingen willen we in dit hoofdstuk uitlichten. Dit vanwege de tijd die erin heeft gezeten, maar ook met het oog op anderen die wellicht aan dergelijke expedities wensen te beginnen. Onze simulatie begon als een nabootsing van de simulatie van Epstein & Axtell (1996). Een aantal van de keuzes die zij hebben gemaakt, hebben wij dus simpelweg overgenomen. Zodra we op het punt aankwamen dat we onze eigen ideeën moesten implementeren, begonnen we serieuzer na te denken over de keuzes van Epstein & Axtell. Zo zagen wij dat er erg veel parameters evolueerden of varieerden. Dit waren er zelfs zoveel dat dit onze simulatie mogelijk onnodig complex maakte. We lieten namelijk het aantal suikereenheden waarmee een agent begint variëren en evolueren, zo ook voor de maximum leeftijd van een agent. Zelfs de vruchtbaarheidsperiode van een agent kon met enkele epochs verschillen (deze was tevens seksueel afhankelijk – mannen waren langer vruchtbaar, hoewel er verder geen enkel verschil was tussen mannelijke en vrouwelijke agents). Hoe langer we hier over nadachten, hoe meer we vonden dat dit onnodige franjes waren die onze simulatie wellicht meer variatie brachten maar geen toegevoegde waarde hadden voor het doel van dit project. We besloten daarom deze parameters te standardiseren (en seksueel onafhankelijk te maken). Ook de teruggroeisnelheden van tegels hadden we aan een zekere willekeur onderhevig gemaakt, met het oog op “oases in de woestijn” voor boeren. Uiteindelijk maakt dat de uitkomsten van experimenten alleen maar lastiger vergelijkbaar en dergelijke ‘leukigheden’ zijn vlug gesneuveld.
33
Alleen de seksuele reproductie, ten faveure van aseksuele voortplanting, heeft het uiteindelijk gered. Dit is iets waarover vaak is gediscussieerd maar ook één van de eerste dingen waarover de auteurs het eens waren. Zoals bij een aantal van de hier genoemde keuzes naar voren is gekomen, wilden wij dat onze agents tot op zekere hoogte overeenkomsten vertoonden met de mens. Seksuele voortplanting was daar onderdeel van. Het is wel een keuze geweest die ingrijpende consequenties had voor ons model, omdat het voortplantingssucces van agents is bij seksuele reproductie niet alleen afhankelijk van de eigen suikerverwervingscapaciteit, maar bovendien van de ‘locatie’: Er moeten wel vruchtbare leden van het tegenovergestelde geslacht in de buurt zijn. Vooral voor landbouwers brengt dit van alles met zich mee. Eén boer in de woestijn die zich aseksueel kan voortplanten, kan zo een hele regio koloniseren. Voeg daar de eis aan toe dat er een vruchtbaar lid van het andere geslacht zich ook in de woestijn heeft weten stand te houden en het wordt al vele malen onwaarschijnlijker. Een andere duidelijke keuze die we hebben gemaakt was de hoeveelheid kennis van de wereld die een agent bezat. We hadden al vroeg besloten dat onze agents een zekere mate van intelligentie bezaten, waardoor zij de wereld op hun eigen manier konden interpreteren. Zo konden zij evalueren wat hun volgende actie zou zijn. De hoeveelheid kennis die een agent uit de wereld kan halen zal altijd ter discussie staan. Bij ons kan een agent alles wat zichtbaar zou zijn voor mensen in de natuurlijke wereld, ook zien. Agents kunnen bijvoorbeeld zien hoeveel suiker op een tegel ligt, hoeveel suiker een andere agent bij zich draagt en hoe sterk een andere agent is. Een aantal van deze waarnemingen zijn inschattingen en onderhevig aan fouten, zoals de kracht van een andere agent. We wilden agents zoveel kennis meegeven omdat we agents niet in hokjes wilden stoppen. Een agent moest helemaal zelf kunnen bepalen wat voor gedrag het zou tonen. Anders zouden er aannames gemaakt moeten worden die ons inziens afbreuk zouden doen aan het evolutionaire en emergente karakter van dit project. Ten slotte willen we nog ons algoritme voor mutaties bespreken. Zoals eerder uitgelegd, wilden we dat alle genen bij de initialisatie op zouden tellen naar honderd. Ons initiële algoritme haalde een willekeurig getal uit de ‘genenpool’ en berekende aan de hand hiervan een waarde voor het gen dat aan de beurt was. Dit getal werd van de pool afgetrokken en dit proces werd herhaald voor elk gen. Het laatste gen kreeg dan de restwaarde van de pool. Onze volgorde van toewijzing in genen was voor elke agent dezelfde, namelijk: visie, metabolisme, landbouwtalent en kracht.
34
Wat we ons niet realiseerden was dat deze vaste volgorde zorgde voor een te hoog gemiddelde voor visie (vijftig punten) en een te laag gemiddelde voor landbouwtalent en kracht (twaalf à dertien punten). Pas bij latere analyse van de resultaten van ons experiment zagen wij dat de gemiddelde initialisaties voor de genen niet gelijk waren. Hierdoor werden wij gedwongen ons experiment opnieuw uit te voeren. Uiteindelijk bleek de oneerlijke initialisatie weinig gevolgen te hebben voor de uitkomsten: Waar we eerst vier boerenpopulaties zagen in 25 runs, zien we er nu vier in dertig runs. Verder zijn wij regelmatig de mist ingegaan zoals onze grootste fout hierboven illustreert. Sommige van onze missers hadden wellicht voorkomen kunnen worden door een gedegen literatuuronderzoek. Misschien zou dat zelfs invloed hebben op andere keuzes die we hebben gemaakt. We wilden echter onze eigen interpretatie van het project uit werken. Gegeven het doel van het bachelorproject in het kader van onze opleiding, leek het zinvoller ons te concentreren op de simulatie dan op de literatuur.
35
7
Conclusie
Het eigenlijke doel van dit project, het laten emergeren van recht, hebben we niet gehaald. Desalniettemin hebben we wel interessante resultaten laten zien. Onze simulatie heeft veel eigenschappen waar we van te voren op hadden gehoopt. Zo is het bij de standaardwaarden voor de parameters niet van te voren duidelijk wat voor soort populatie er in de simulatie ontstaat. Dit emergente gedrag van de agents was voor ons een belangrijke insteek. Ook het aanpassen van de waarden van de parameters heeft logische gevolgen (het verhogen van de kosten voor het bewegen zorgt ervoor dat agents minder geneigd zijn te bewegen). Dit is belangrijk voor het begrip van de simulatie. Het verschil tussen een verzamelaarspopulatie en een landbouwpopulatie is duidelijk aangetoond. De maximale bevolkingsdichtheid in de boerenwerelden ligt veel hoger dan bij verzamelaarswerelden. Zoals verwacht is het voor de ‘samenleving als geheel’ dus beter als iedereen boergedrag vertoont. Toch is het ontstaan van stabiele landbouwsituaties relatief zeldzaam: Slechts vier op de dertig runs convergeerden naar een dergelijke oplossing. Alleen als toevallig een aantal agents met hoog landbouwtalent op aantrekkelijke locaties met rust wordt gelaten, ontstaat er een situatie die uiteindelijk voor iedereen aantrekkelijker is – dat wil zeggen, waarin de agents zich effectiever kunnen voortplanten. Dit resultaat is relatief robuust en op interessante wijze tot stand gekomen, hoewel niet altijd even verantwoord onderzocht of met referenties onderbouwd. Eén van de meer eigenzinnige aspecten van onze simulatie was de natuurgetrouwheid van de levensloop van onze agents, zoals vruchtbare levensfases, maximale leeftijden en seksuele reproductie. Dit resulteerde in de noodzaak nog een extra sociaal element in te bouwen, namelijk dat van partners. Alleen als agents moeite doen om bij elkaar in de buurt te blijven, ontstaat een situatie die het mogelijk maakt echte landbouwsamenlevingen te beginnen. Wij kunnen ons bachelorverslag dus afsluiten met een wijze les: Blijft bij elkaar en blijft vredig, en u zult gedijen.
8.
Referentie
Epstein, J.M. & Axtell, R. (1996). Growing Artificial Societies - Social Science From the Bottom Up. Brookings Institution Press MIT Press 1996 c. 228pp.
36