I tråden Är evolutionsmekanismen impotent? har tiran och jag diskuterat genetisk programmering (GP) men diskussionen är värd en egen tråd. Se inlägg 66 81 89 92 93 94 96 101 102 103 104 116 130 131 147 (jag tror jag fått med de flesta)
Tyvärr så är den här tråden ganska teknisk men jag hoppas att fler än tirian och jag vill delta. Jag sammanfattar lite vad jag sagt tidigare i olika sammanhang.
GP är en metod där man efterliknar darwinistisk evolution för hitta nya lösningar på ett givet problem. När metoden implementeras och körs på ett stort antal datorer så har man visat att man kan få tidigare okända lösningar. Metoden brukar implementeras i datorprogram men principiellt går det att utföra metoden för hand. Det endas problemet vore att det då skulle ta tusentals eller miljontals år att få fram några resultat.
Programmet skapar ett antal individer som har vissa egenskaper som styrs av en uppsättning gener. Genom slumpvisa förändingar av generna (dvs mutationer), utbyte av gener mellan individer (crossover/sexuell reproduktion) eller borttagende av gener skapas en ny generation av individer. Bland dessa väljs sedan ut vilka som är bäst på att uppfylla ett förutbestämt mål. Processen upprepas (oftast ett mycket stort antal gånger) tills någon individ har tillräckligt god måluppfyllelse.
Processen kan beskrivas mer i detalj:
1. Välj ut en initial population
2. Utvärdera lämpligheten för varje individ i populationen
3. Upprepa till man är nöjd:
- 1. Välj ut den bäst lämpade individen för reproducering
- 2. Skapa en ny generation genom crossover och mutationer och producera avkomma
- 3. Utvärdera lämpligheten för varje barn
- 4. Ersätt de sämst rankade individerna i populationen med barnen
I mitt första inlägg refererade jag till en artikeln i Scientific American (F). Den beskriver allmänt GP och speciellt ett exempel där man använt GP för att ta fram elektroniska filter med vissa karaktäristiska. Elektroniska filter är uppbyggda av elektriska komponenter såsom motstånd, kondensatorer och spolar och beroende på hur man kopplar dem och vilka komponentvärlden man använder kan man få mer eller mindre filterverkan. Man testar ett filter genom att koppla in en spänningsgenerator i ena änder av filtret och en mäturustning i den andra änden. Ett s.k. högpassfiler skall släppa igenom signaler med hög frekvens och spärra ut signaler med låg frekvens. Bandpassfilter skall bara släppa ignenom signaler inom ett visst frekvensband - mycket användbart i radiosammanhang. Programmet böjar med ett antal enkla kopplingar (individer) och ändrar komponenterna (=generna) mellan varje generation. Cross-over t.ex. innebär att två kopplingar utbyter delar av sina kopplingar med varandra. Måluppfyllelsen mäts genom att man beräknar hur bra de olika individerna uppfyller målkriteriet som t.ex. kan var en specifikation för ett bandpassfilter.
Vid körning av GP-programmet så återupptäckte man sex kretskopplingar som hade patenterats under 1900-talet och dessutom hittade programmet en konstruktion som hade bättre prestanda än alla tidigare kända och som man patenterade. Intressant var att konstruktion är så komplex så det inte går att förstå hur den fungerar trots att den bara innehåller ca 20 komponenter.
Det andra exemplet (T) handlar om handelsresandeproblemet (the travelling salesman problem TSP) där det gäller att välja kortaste väg om man skall besöka ett antal städer en och endast en gång. Ett enkelt problem som det inte finns någon algebraisk lösning på. Varje resväg är en individ i populationen och dess genetiska information lagras som en linjär lista med en stad inklusive dess position per rad. Vid konstruktionen av en ny individ så kastas generna (städerna) om i listan. Vid cross-over så lånar en individ delar av listan från en annan individ och genererar resten av listan slumpmässigt. Vid test av måluppfyllelsen beräknar man den totala sträckan. I denna artikel kallas individen för kromoson. I artikeln visar man Javakoden för programmet.
Det tredje problemet (F) handlar om att skapa den funktion inom intervallet -1 till +1 som ligger närmast en förutbestämd kurva. Ett exempel är funktionen max(x*x,x+3*y). I början av körningen skapas ett antal enkla funktioner (individer). I artikeln kallas dessa lite förvirrande för program. Elementen i funktionen (max, x,*, +, 3 etc) motsvarar generna. Funktionen förändras genom att man förändra, lägger till eller tar bort termer och faktorer. Funktionen representeras i ett binärt träd där operationer, variabler och konstanter finns i varje nod. Cross-over realiseras genom att delar av det binära trädet byts mellan två individer.
Med hänvisning till artiklarna, speciellt E, hävdar jag att GE visar på att skapelser som verkar var utförda av en intelligens kan uppstå genom en algoritm (som kan implementeras på datorer) som verkar genom slump och urval. Om jag har rätt så medför detta att vi har ytterligare en kandidat som kan skapa intelligenta konstruktioner förutom evolution och ID. (om detta se även tråden Kan ID någonsin vara en förklaring för någonting och i så fall vad?).
Motargument bl.a. tirian kommit med är
- informationen om konstruktionen finns inbakad redan i startvillkoren så resultatet är endast en optimeringsfunktion utan egen intelligens.
- lösningen är begränsad av sina startvillkor och har endast begränsat värde.
(du får fylla på, tirian)
Det problem som diskuteras är TSP problemet. Och ska vi gå in på detaljer måste vi nog ta det exemplet snarare än elektronik exemplet. Elektronik exemplet innehåller alldeles för många (för oss) okända faktorer som vi inte vet om.
Men principiellt är det ju samma resonemang.
Om man tittar i Java koden ser man att definitionen av gen (TSPGene.java) är ganska enkel. Däremot innehåller kromoson definitionen (TSPChromosone.java) en hel del kunskap om hur en kromoson byggs upp.
Det är ganska uppenbart i detta enkla exempel att man behöver koda in kunskap om hur en kromoson byggs upp och hur man ska utvärdera en kromosonen.
Så vad kan vi dra för slutsatser av det?
Hej tirian!
Jag har lite svårt att läsa koden eftersom jag inte kan Java. Dessutom hitttar jag inte TSPchromosone. (Hur gör man för att göra fig 1 läsbar). Men vad intresse har det egentligen hur lång koden är?
Intressant är vad som skrivs efter fig 2.
“However, as you glance through the code you’ll notice that through the use of interfaces and externally defined parameters, extendability of the genetic algorithm can be easily achieved to solve, or rather optimize, problems with similar representations. For example, these representations can include permutation problems with unique genes (such as the TSP), permutation problems without unique genes (meaning a gene may be included zero to many times in a single chromosome), and real-parameter problems in which the genes represent real numbers and their bounds. I leave it to you to develop such a framework, a framework in which all you have to do is set the genetic algorithm parameters and gene data externally and run the genetic algorithm without any source code modification. Solving the other types of problems described above then becomes a matter of appropriate problem definition rather than sophisticated programming.
Detta berör vad jag talat om tidigare. Avsnitt 3.2 i algoritmen (se inlägget ovan) berör ändringar i generna. Denna del är helt beroende av hur generna representeras. I TSP-programmet så lagras generna som en linjär lista där varje rad i listan motsvarar en stad. Ordningen i listan representerar den ordning som städerna skall besökas. Alla problem som kan representeras på det sättet kan hanteras med exakt samma program i 3.2. (Representationen motsvarar det jag tidigare har kallat topologi). Om man ändrar problemet så att man får besöka varje stad flera gånger så ändras representationen av generna något (flera lika gener blir tillåtna) och algoritmen 3.2 ändras också. Alternativt om man har ett annat problem som kan ha samma representation av gener som TSP, dvs en linjär lista så behöver 3.2 inte ändras alls. Däremot måste utvärderingsfunktionen 3.3 ändras för att passa det nya tillämpningen. (Tyvärr klarar jag inte av att identifiera 3.2 i Javakoden, du kanske kan hjälpa mig).
Med hänvisning till artiklarna, speciellt E, hävdar jag att GE visar på att skapelser som verkar var utförda av en intelligens kan uppstå genom en algoritm (som kan implementeras på datorer) som verkar genom slump och urval.
Motargument bl.a. tirian kommit med är
- informationen om konstruktionen finns inbakad redan i startvillkoren så resultatet är endast en optimeringsfunktion utan egen intelligens.
- lösningen är begränsad av sina startvillkor och har endast begränsat värde.
(du får fylla på, tirian)
Nils G
Jag skulle vilja fylla på motargumentet mot att GP bara verkar genom slump. I en tidigare tråd så behandlas frågan om evolution är deterministisk eller slumpmässig? Argumenten där tycker jag också kan användas här.
Jag håller med tirian att genetisk programmering är inget annat än ickelinjär optimering av en given funktion med hjälp av slumptal som den drivande motorn. Frågan är om optimeringsprocessen slumpmässiga karaktär medför att funktionens struktur som optimeras också är helt slumpmässig? Mitt svar får nog bli att så inte är fallet men det skulle vara roligt att få lite kommentarer om det kan vara sant? Jag vill stärka tirians påstående att initialvillkoren är determinerade med följande:
För att kunna optimera en funktion så måste både initialvillkoren och funktionens koefficienter alltid i någon grad vara determinerade. Ta som ett exempel följande uppdateringsschema,
x_n+1 = x_n + slumptal.
Lösningen, dvs fördelningen av x_n vid n=N, N=stort tal, är fördelningsfunktionen för slumptalet (för normalfördelning så är lösningen A*exp(-ax^2/2) ) vilket kan beskrivas deterministiskt. Koefficienten i det här fallet är en 1’a framför slumptalet. För det generella har vi:
X_n+1 = X_n + a(X,t)dt + b(X,t)\sqrt(slumptal)dt
Där a(X,t) och b(X,t) bestämmer lösningen. Även fast a och b beror på slumptalet X så är strukturen hos a och b determinerade e.g. a(X,t) = X^2.
Det var lite vad jag hade att säga. Några kommentarer?
Du anser att GP inte verkar genom slump. Till en del kan jag hålla med men det beror väl lite på vad man menar. Några funderingar
1. Om GP inplementeras i ett dataprogram där slump implementeras med en pseudoslumpgenerator, vilket är det normala, så kommer lösningarna att vara helt deterministiska eftersom en pseudoslumpgenerator också är i grunden determinisk. Men om man kopplar in en riktig slumpgenerator till datorn så blir lösningen slumpmässig.
2. Om lösningsrymden är linjär i någon mening så kommer lösningarna (individerna) att hamna i en kontinuerlig lösningsrymd som man kan beskriva med en fördelningsfunktion som är deterministisk. Jag kan inte tillräckligt för att säga vad som krävs men jag är tveksam om sökningarna/utvecklingen i GP är sådan att lösningarna går att karaktärisera med en fördelningsfunktion.
Min känsla efter att läst speciellt artikeln E om filtren så strävar man efter att lösningsrymden inte skall vara kontinuerlig. Med hjälp av mutationer så strävar funktionen mot ett maximum men detta kan vara lokalt. För att undvika att man fastnar där så använder man cross-over som kan ‘slänga iväg’ funktionen ut i nya delar av lösningsrymden. Jag tror det då blir svårt att tillämpa en fördelningsfunktion.
3. Jag frågar mig dock om det egentligen spelar någon roll om vad vi kallar Gp för, t.ex. “ickelinjär optimering av en given funktion med hjälp av slumptal som den drivande motorn”. Påverkar det mitt påstående om att GE kan generera lösningar som verkar skapade av en intelligens?
Jag är ledsen men jag kan inte tillräckligt om matematiken där för att hänga med.
Jag håller med tirian att genetisk programmering är inget annat än ickelinjär optimering av en given funktion med hjälp av slumptal som den drivande motorn. Frågan är om optimeringsprocessen slumpmässiga karaktär medför att funktionens struktur som optimeras också är helt slumpmässig? Mitt svar får nog bli att så inte är fallet men det skulle vara roligt att få lite kommentarer om det kan vara sant? Jag vill stärka tirians påstående att initialvillkoren är determinerade med följande:
För att kunna optimera en funktion så måste både initialvillkoren och funktionens koefficienter alltid i någon grad vara determinerade.
Sista meningen: Varför det, förstår inte.
Ta som ett exempel följande uppdateringsschema,
x_n+1 = x_n + slumptal.
Lösningen, dvs fördelningen av x_n vid n=N, N=stort tal, är fördelningsfunktionen för slumptalet (för normalfördelning så är lösningen A*exp(-ax^2/2) ) vilket kan beskrivas deterministiskt. Koefficienten i det här fallet är en 1’a framför slumptalet.
Ja, men vad har detta med det determinerade initialvilkoret att göra?
För det generella har vi:
X_n+1 = X_n + a(X,t)dt + b(X,t)\sqrt(slumptal)dt
Där a(X,t) och b(X,t) bestämmer lösningen. Även fast a och b beror på slumptalet X så är strukturen hos a och b determinerade e.g. a(X,t) = X^2.
Har fördjupat mig alldeles för mycket i diskussionen med Roger Viklund och mitt riktiga jobb för att ha haft tid att ägna mig åt detta. Men låt mig ge några snabba synpunkter.
Nils G - 03 Oktober 2008 07:28 -
Detta berör vad jag talat om tidigare. Avsnitt 3.2 i algoritmen (se inlägget ovan) berör ändringar i generna. Denna del är helt beroende av hur generna representeras. I TSP-programmet så lagras generna som en linjär lista där varje rad i listan motsvarar en stad. Ordningen i listan representerar den ordning som städerna skall besökas. Alla problem som kan representeras på det sättet kan hanteras med exakt samma program i 3.2. (Representationen motsvarar det jag tidigare har kallat topologi).
Det här är väl ungefär rätt, det finns ju självklart olika sätt att implementera den genetiska algoritmen. Men jag valde att referera till en objekt orienterad lösning eftersom de brukar vara enkla att förstå.
Om vi ska gå in på det exempel jag hänvisade till ser det ut så här:
TSPGene - representeras en stad som i princip bara består av namn och x,y koordinater.
TSPGenePool - är en lista med alla möjliga gener (städer) som kan förekomma.
TSPChromosome - denna klass beskriver hur man bygger en individ i populationen. Det är den som lagrar generna som en lista i din beskrivning ovan. Den ansvarar för implementation av stora delar av 3.2 och 3.3.
TSPPopulation - innehåller en massa initial värden som måste finjusteras för att få bästa resultat. Detta är saker som mutations hastighet, antalet barn och så vidare.
TSPGeneticAlgorithm - innehåller egentligen bara en loop som anropar metoden reproduce i TSPPopulation
Nils G - 03 Oktober 2008 07:28 -
Om man ändrar problemet så att man får besöka varje stad flera gånger så ändras representationen av generna något (flera lika gener blir tillåtna) och algoritmen 3.2 ändras också. Alternativt om man har ett annat problem som kan ha samma representation av gener som TSP, dvs en linjär lista så behöver 3.2 inte ändras alls. Däremot måste utvärderingsfunktionen 3.3 ändras för att passa det nya tillämpningen. (Tyvärr klarar jag inte av att identifiera 3.2 i Javakoden, du kanske kan hjälpa mig).
Om vi då skulle vilja ändra koden så man får besöka varje stad flera gånger är det klassen TSPChromosome som behöver skrivas om. Det man måste göra är att ändra metoden getEndGenes så den tillåter duplicat av gener. Om man inte även lägger till regler för hur städer får besökas kommer programmet rätt snart spotta ur sig en lista med samma stad, eftersom denna sträcka blir kortast.
Om vi skulle ändra vad TSPGene representerar men fortfarande kan beskriva relationen och ordningen mellan objekten med en lista skulle TSPChromosome bara behöva skriva om sin getFitness metod.
Om jag nu hade valt en annan typ av algoritm än den genetiska algoritmen hade jag kunnat uppnå precis samma resultat utan att involvera någon slump. Det enda nackdelen är att den lösningen förmodligen inte hade varit lika effektivt.
Så för att uppnå dessa resultat behövs vare sig genetiskt algoritm eller slump, även om det är en bra och effektiv metod för denna typ av optimeringslösningar.
Jag har tittat lite mer i koden. Det verkar som precis som du säger att TSP chromosome behandlar både 3.2 och 3.3 Det borde vara enkelt att dela upp programmet så att man får en del (kalla den CA) som behandlar 3.3 delen och en del (kalla den CB) som behandlar 3.3 delen (ev. måste man inkludera även andra delar än från TSPchromosome).
Antag att vi har ett annat problem som använder samma datastruktur som TSP dvs en linjär lista där varje element används en och endast en gång. För att implementera detta problem behöver man då endast ändra på CB medan CA kan vara oförändrad. Ta ett exempel:
HUS. Vi har ett antal hus som har samma bottenyta men med olika många våningar. Husen ligger på samma sida längs en gata. Hur skall man ordna dem så att så många fönster som möjligt inte direkt vetter mot något annat hus. Lösningen är väl ungefär att lägga höga hus och låga hus blandade men jag vet inte om det finns någon algebraisk metod. Det borde dock fungera bra med Genetisk Programmering.
Detta styrker då min generella tes att så länge som man kan representera ett problem med en viss datastruktur, (topologi) så krävs endast ändring av utvärderingsalgoritmen 3.3.
Intressant är även att även om det finns algoritmer för TSP utan genetisk programmering så krävs ingen kunskap om dessa vid implementeringen av TSP-chromosome eller CA specifikt. Vid konstruktion av TSP eller husproblemet så krävs alltså endast
1. den generella kunskapen om hur man skriver genetisk programmering
2. kunskapen om hur man skriver den del (3.2) som modifierar generna om dessa representeras av en linjär lista
3. den specifika kunskapen om hur man utväljer nästa generation som är specifikt för det enskilda problemet (3.3)
Detta styrker då min generella tes att så länge som man kan representera ett problem med en viss datastruktur, (topologi) så krävs endast ändring av utvärderingsalgoritmen 3.3.
Intressant är även att även om det finns algoritmer för TSP utan genetisk programmering så krävs ingen kunskap om dessa vid implementeringen av TSP-chromosome eller CA specifikt. Vid konstruktion av TSP eller husproblemet så krävs alltså endast
1. den generella kunskapen om hur man skriver genetisk programmering
2. kunskapen om hur man skriver den del (3.2) som modifierar generna om dessa representeras av en linjär lista
3. den specifika kunskapen om hur man utväljer nästa generation som är specifikt för det enskilda problemet (3.3)
Nils G
Bara några korta kommentarer, som jag egentligen inte har tid med
Om du anser att slumpen skapar något via GP (i ex. TSP problemet), hur förklarar du då att samma typ av information kan skapas utan slump?
Vad är det då som ‘skapar’ informationen?
Sedan måste du självklart kunna tillämpa den algoritm du vill använda på det problem du vill lösa. Om du vill göra ett program som effektivt ska sortera 100,000 tals objekt (enligt någon given regel) är det ju bra om du känner till hur en quicksort algoritm fungerar. Använder du en enklare algoritm kanske programmet fungerar, men det blir förmodligen tämligen långsamt.
GP är bara (principiellt sett) en mer avancerad quicksort algoritm fast för andra typer av problem (i.e. optimeringsrelaterade problem).
En annan sak man kan likna GP vid är diverse design patterns. Där finns ‘creational patterns’, som ex. Abstract Factory och Singelton, och en uppsjö andra typer av design patterns.
Det GP däremot inte är är en programmerings paradigm. Där finns många varianter, men GP hör inte dit utan är beroende av vilken programmeringsmetodik den implementeras i, exempelvis den objekt orienterade paradigmen som exemplet var kodat i.
Så vad är egentligen unikt med GP som inte kan sägas om andra algoritmer och/eller design mönster?
Och vad är det då som dessa algoritmer och/eller design mönster egentligen skapar?
Om du anser att slumpen skapar något via GP (i ex. TSP problemet), hur förklarar du då att samma typ av information kan skapas utan slump?
Vad är det då som ‘skapar’ informationen?
Det här är en inte helt enkel fråga. Så här tror jag. När Gallileo rullade kulor på en lutande bräda så fick han information genom att göra observationer av experimentet han arrangerat. Informationen föreställer jag mig skapades av experimentet och han registrerade informationen. Om jag skriver ett program som simulerar trafik i ett datanät så utför jag också ett experiment som genererar information. I programmet ingår en slumpgenerator (som kan vara en kvasislumpgenerator eller en riktig, det spelar ingen roll). Programmet generar information i form av data för fördröjningar, köstorlekar etc. Om jag skriver ett program med GP-algoritmen så genererar programmet data om lösningar etc. Det är detta som är informationen och det som skapar informationen är experimentet/programmet precis som i de tidgare exemplen. Att det ingår slump i programmet är inte väsentligt.
Sedan måste du självklart kunna tillämpa den algoritm du vill använda på det problem du vill lösa. Om du vill göra ett program som effektivt ska sortera 100,000 tals objekt (enligt någon given regel) är det ju bra om du känner till hur en quicksort algoritm fungerar. Använder du en enklare algoritm kanske programmet fungerar, men det blir förmodligen tämligen långsamt.
GP är bara (principiellt sett) en mer avancerad quicksort algoritm fast för andra typer av problem (i.e. optimeringsrelaterade problem).
Här håller jag inte med alls. Problemet att sortera tal i en förutbestämd ordning är ett problem där lösningen är känd, där man (människan) känner till ett antal algoritmer för att lösa problemet (varav Quicksort är en). För sådana problem lämpar sig GP inte alls. GP är ett optimeringsprogram och sådana lämpar sig bäst för problem som inte har någon (känd) algoritm som löser problemet och där lösningsrymden är mycket stor så att vanligt trial and error inte fungerar.
TSP-problemet har en mycket stor lösningsrymd men kan lösas exakt även för ett stort antal städer (här stöder jag mig på wikipedia.en) men det finns heuristiska metoder som liknar GP som löser problemet ungefärligt mycket snabbare. Jag vet inte om GP är bättre än de andra metoderna. Anledningen till att andra metoder än GP fungerar, tror jag, är att man kan komma ganskap långt med en intuitiv uppfattning om hur en lösning kan se ut och på så sätt konstruera olika algoritmer som kan testas och förbättras.
Det finns problem som är ännu mer svårlösta än TSP t.ex. problemet att skapa ett bra filter. Här finns det inte bara en mycket stor lösningsrymd utan det finns inga sätt att skapa algoritmer som leder fram mot målet att skapa en optimal lösning. Bl.a. beror nog detta på att utvärderingen av en lösning är ganska komplicerad och att värdet av en lösning varierar kraftigt med små ändringar av in-värdena. GP erbjuder då en unik metod att skapa nya lösningar.
En annan sak man kan likna GP vid är diverse design patterns. Där finns ‘creational patterns’, som ex. Abstract Factory och Singelton, och en uppsjö andra typer av design patterns.
Det kan jag inte uttala mig om eftersom jag inte känner till dessa design patterns men när jag läser wikipedia så få jag intryck att det mer handlar om programmeringsmetoder än optimeringsalgoritmer men jag är väldigt osäker.
Det GP däremot inte är är en programmerings paradigm. Där finns många varianter, men GP hör inte dit utan är beroende av vilken programmeringsmetodik den implementeras i, exempelvis den objekt orienterade paradigmen som exemplet var kodat i.
Här håller jag helt med.
Så vad är egentligen unikt med GP som inte kan sägas om andra algoritmer och/eller design mönster?
Och vad är det då som dessa algoritmer och/eller design mönster egentligen skapar?
Om vi lämnar design-mönster åt sidan eftersom jag inte vet riktigt vad det är så blir mitt svar:
GP är en optimeringsalgoritm som
1. söker lösningar i stora lösningsrymder och som
2. inte kräver att man har några kunskaper om hur en bra lösning skall se ut utan endast kräver att man kan utvärdera lösningarna.
Till skillnad från andra algoritmer (vad jag vet) så har GP
3. skapat lösningar som är mer komplexa än vad människor skapat och därmed ger inryck av intelligent design
4. Indirekt är GP en illustration av vad man kan åstadkomma med slump och urval vilket har viss bäring på evolutionsteorin.
Och vad programmet skapar, jo ny information. —-
Parentetiskt så tycker jag att Genetisk Programmering är ett dålig benämning. Evolutionär algoritm vore bättre men det går väl inte göra något åt GP verkar vara ett etablerat begrepp. I optimeringssammanhang använder man ju termen programmering för vissa algoritmer som Linjär Programmering och Dynamisk Programmering.
tirian - 16 November 2008 06:27 -
Varför inte ta med information som uppstått via quicksort algoritmer eller genom att applicera MVC modellen.
MVC ( = Model-view-controller?) har väl inte med optimeringsalgoritmer att göra?
Borde du inte lägga ner genetisk programmering exemplen, eftersom det uppenbarligen kan skapas samma typ av information utan slump.
Nu känner jag inte till några algoritmer som kan skapa nya lösningar på samma sätt som GP dvs kunna skapa lösningar som är lika kvalificerad som de som människor skapar och därmed ger intrycka av att vara skapad av en intelligent designer. Dessutom slumpen är endast en del av algoritmen.
Jag flikar in bara som kortast här om det går bra.
Nils G - 14 Februari 2009 08:26 -
Nej!! Du missar totalt vad jag säger. Jag säger att för att ett reglersystem skall fungera effektivt så måste det finnas återkoppling. Högre liv kräver reglersystem så alltså finns det reglersystem i naturen. Frågan är hur de uppkommer. Om evolutionen är riktig så har evolution utvecklat återkopplade reglersystem (och genetisk programmering har simulerat detta). Du måste visa att det är omöjligt för evolution att utveckla återkopplade reglersystem för att detta skall vara ett argument för din sak. Att intelligenser kopierar naturen är inget argument för att naturen skapats av intelligenser.
För att kunna fortsätta diskutera så måste vi reda ut ovanstående.
Men din jämförelse insinuerar ju att naturens reglersystem uppstått via design, inte via naturalistiska processer. För vad man än påstår om evolutionär programmering så är både metoden, algoritmen och själva dataprogrammen väl genomtänkta och designade för specifika ändamål.
Det är ju inte så att man kastat tärning och gjort någon slags urvalsprocess för att komma fram till vare sig metod, algoritm eller dataprogram, eller hur?
Så vad säger egentligen din jämförelse?
Möjligen att du skulle kunna argumentera för teistisk evolution med denna liknelse, det kanske skulle fungera.
Detta är en fråga som jag redan inte besvarat ;). I en diskussion med Mats S så kom vi in på liknande resonemang men jag hade inte ork och kreativitet att formulera svaret på ett enkelt sätt. Hoppas att jag kan formulera mig enklare nu.
Notera att jag ovan hade två argument. Dels allmänt om reglersystem och dels att genetisk programmering har simulerat detta. Som jag förstår så är det den andra punkten du angriper och den behandlar jag här:
Det finns likheter mellan Genetisk Programmering (GP) och (neo)- Darwinistisk evolution DE. I båda fallen krävs det att uppsättningen av processen är klar innan processen startar. I fallet med DE så krävs att de genetiska processerna finns på plats med DNA, RNA etc. d.v.s. att livet har uppkommit. I fallet med GP så krävs att datorer och algoritmer implementerade i ett datorprogram finns på plats. Därefter startar processerna. DE tar kanske miljarder år innan man får riktigt avancerade konstruktioner. GP behöver bara några veckor eller månader för att få fram konstruktioner som verkar skapade av en intelligens (patenterbara).
För DE så fungerar evolutionen efter det att livet kommit till. Det finns inget inom evolutionsteorin som förutsätter att livet har uppkommit genom en rent naturalistisk process. Evolutionsteorin är lika giltig även om livet ursprungligen uppkommit genom ingripande av en intelligent designer. På samma sätt är GP en god simulering av DE oberoende om den startats upp av intelligenser eller ej. Nu finns det ingen som tror annat att GP startats av en intelligens men om DE hypotetiskt också startas av en intelligens så är det en fullständig likhet. GP ger alltså en god blicka av vad en evolutionsprocess kan generera.
Det kanske måste påpekas att det är en mycket lång väg tills GP kan användas för att utveckla eller simulera (med hjälp av evolution) biologiska processer. Jag läste att lundaforskarna som håller på med ögats utveckling jobbar på en modell med genetisk programmering men man kunde ana att de tyckte att det var ett stort arbete. Det som du tirian och jag diskuterat tidigare handlar om elektronik och handelsresandeproblemet - säkert mycket enklare.
Kopierar var ett dumt ord, lånar idéer är korrekt.
EN del har hävdat att evolution inte kan skapa information, genetisk programmering skapar ny information DEt enda är alltså att det bekräftar att ny information kan komma fram genom en urvalsprocess som liknar den naturliga evolutionen
DEt är inte ett argument för naturligevolution, men att argument mot viss KRITIK av naturlig evolution.
ID går inte att motbevisa eftersom det inte är en sammanhängande teori som har testats vetenskapligt
Nja, genetisk programmering skapar inte information i egentlig mening och liknar inte heller så mycket naturlig evolution.
Vad genetisk programmering egentligen gör är att den väljer ut lösningar från ett fördefinierat och avgränsat område. Det är inte slumpen som definierar hur informationen ska se ut, bara vilken del av den informationsmängden som för tillfället ska väljas ut och testas. Sedan är det ett långt besvärligare problem att göra effektiva selektioner och bestämma vad som ska väljas ut. Så den intelligenta designern måste först definiera hur informationen ska representeras och sedan också fundera över hur urvals processen ska se ut, det är inget som genetisk programmering hjälper till med. Och här haltar jämförelsen med naturlig evolution mycket starkt eftersom där antas urvals processen vara oförutseende och utan mål, vilket inte alls är fallet i genetisk programmering där målet med programmet finns inbyggt i koden.
Så genetisk programmering kan väl bättre liknas vid avel än vid naturlig evolution, det är en mer rättvisande liknelse.
Sen ska väl påpekas att genetisk programmering endast passar vissa optimeringsrelaterade problem, den skulle ju knappast vara användbar som grund arkitektur för spelet Oblivion. Där är ju simulerings eller objekt orienterade tillvägagångssätt klart överlägsna.
Jo, du har både rätt och fel tirian. Om vi fortsätter den jämförelse jag gjorde i föregående inlägg mellan genetisk programmering GP och darwinistisk evolution DE så får vi
- “Vad genetisk programmering egentligen gör är att den väljer ut lösningar från ett fördefinierat och avgränsat område”
Jo GP plockar ut lösning ur ett förutbestämt område. För de exempel med filterkonstruktion som vi diskuterat tidigare i tråden så är väl lösningsrymden 10E100 sådär. DE väljer också ut lösningar ur ett förutbestämt område men där är lösningsrymden mycket större. Antal kombinationer av baspar i människan uppskattar jag snabbt till 10E2000, och den totala lösningsrymden för alla tänkbara kombinationer av baspar är naturligtvis oerhört mycket större.
- “Det är inte slumpen som definierar hur informationen ska se ut, bara vilken del av den informationsmängden som för tillfället ska väljas ut och testas”. Om du med “informationen” avser lösningsrymden så gäller det för både GP och DE.
- “Sedan är det ett långt besvärligare problem att göra effektiva selektioner och bestämma vad som ska väljas ut. Så den intelligenta designern måste först definiera hur informationen ska representeras och sedan också fundera över hur urvals processen ska se ut, det är inget som genetisk programmering hjälper till med. “
Både i GP och DE måste man tänka hur informationen skall representeras. I GP-fallet måste den mänskliga designern göra detta, i DE-fallet måste den intelligente designern (ID) eller någon naturalistisk process få till det (vi behöver i detta sammanhang inte diskutera vilket).
- ” Och här haltar jämförelsen med naturlig evolution mycket starkt eftersom där antas urvals processen vara oförutseende och utan mål, vilket inte alls är fallet i genetisk programmering där målet med programmet finns inbyggt i koden.”
Nja. I GE finns inte målet, den slutliga lösningen, inbyggd i koden utan endast godhetskriteriet, vad som skall betraktas som bra eller dåligt inbyggt. För DE finns heller inget mål inbyggt. Däremot godhetskriteriet, survival of the fittest, finns inbyggd i DEs miljö.
- “Så genetisk programmering kan väl bättre liknas vid avel än vid naturlig evolution, det är en mer rättvisande liknelse.”
Här har du fel. Genetisk programmering kan utomordentligt väl liknas vid DE. Hur stor skillnaden sedan är mellan GP och DE å ena sidan och avel å den andra sidan kan man diskutera.
Nils G
Edit
Jag glömde att kommentera:
“Nja, genetisk programmering skapar inte information i egentlig mening och liknar inte heller så mycket naturlig evolution.
Vad genetisk programmering egentligen gör är att den väljer ut lösningar från ett fördefinierat och avgränsat område. “
Skapande av information är väldigt ofta just att plocka ut den bästa eller rätta lösningen bland många olika. Ta exemplet med börsen. Värdefull information om en viss aktie är om den går upp eller ner imorgon. Det kanske inte finns så många sannolika utfall av börskurs i morgon men det är inte desta mindre väsentligt att veta vilket utfall som är det riktiga. Shannons definition av information stöder sig just på sannolikheter - ju mindre sannolikhet desto större informationsmängd vid utfall. Jämför odds på trav.
Vad genetisk programmering egentligen gör är att den väljer ut lösningar från ett fördefinierat och avgränsat område
Jo GP plockar ut lösning ur ett förutbestämt område. För de exempel med filterkonstruktion som vi diskuterat tidigare i tråden så är väl lösningsrymden 10E100 sådär. DE väljer också ut lösningar ur ett förutbestämt område men där är lösningsrymden mycket större. Antal kombinationer av baspar i människan uppskattar jag snabbt till 10E2000, och den totala lösningsrymden för alla tänkbara kombinationer av baspar är naturligtvis oerhört mycket större.
Nu är en skillnad på 10E1900 en otroligt stor skillnad som knappast kan förklaras med endast 4,6*10E9 år. Man ska ha i åtanke att det samlade antalet partiklar i universum ibland brukar beräknas till 10E80 så siffran 10E1900 är enorm, på gränsen till ofattbart stor. Så givet denna stora lösningsmängd jämfört med den simulerade varianten som dessutom existerar i en miljö som är special designad för att främja utveckling och överlevnad maximalt så blir inte jämförelsen bättre.
Nils G - 17 Februari 2009 12:50 -
Det är inte slumpen som definierar hur informationen ska se ut, bara vilken del av den informationsmängden som för tillfället ska väljas ut och testas.
Om du med “informationen” avser lösningsrymden så gäller det för både GP och DE.
Sedan är det ett långt besvärligare problem att göra effektiva selektioner och bestämma vad som ska väljas ut. Så den intelligenta designern måste först definiera hur informationen ska representeras och sedan också fundera över hur urvals processen ska se ut, det är inget som genetisk programmering hjälper till med.
Både i GP och DE måste man tänka hur informationen skall representeras. I GP-fallet måste den mänskliga designern göra detta, i DE-fallet måste den intelligente designern (ID) eller någon naturalistisk process få till det (vi behöver i detta sammanhang inte diskutera vilket).
Det är väl en av mina viktigare poänger i denna diskussion. Nämligen att GP inte självklart är något stöd för att en intelligent designer inte behövs. Ser man på GP som helhet är intelligent input i processen en nödvändighet och dessutom en kritisk del som inte kan uteslutas. Utan intelligent medverkan i GP får vi inte heller några fungerande GP program.
Nils G - 17 Februari 2009 12:50 -
Och här haltar jämförelsen med naturlig evolution mycket starkt eftersom där antas urvals processen vara oförutseende och utan mål, vilket inte alls är fallet i genetisk programmering där målet med programmet finns inbyggt i koden.
Nja. I GE finns inte målet, den slutliga lösningen, inbyggd i koden utan endast godhetskriteriet, vad som skall betraktas som bra eller dåligt inbyggt. För DE finns heller inget mål inbyggt. Däremot godhetskriteriet, survival of the fittest, finns inbyggd i DEs miljö.
Målet med programmet finns inbyggt i hur informationen ska representeras, i hur man skapar en ny generation utifrån äldre generationer och i hur man väljer ut vad som gör en individ i en population bra i jämförelse med andra individer i populationen. Så syftet och målet med programmet finns med i alla steg av processen i GP. Sen använder man genvägar och optimeringsprocesser i urvalet som inte alls har någon motsvarighet i verkliga livet utan som kan liknas vid någon slags extrem avel där man har mycket exakta mått på vad som är bra och vad som är dåligt, även om den jämförelsen inte heller är bra och riktigt beskriver den extrema kontroll på urvalsprocessen och reproduktionen som man har i ett dataprogram. I verkligheten har du inte alls den möjligheten att göra de extrema urvalsprocesser som görs i ett GP program. Miljön, otydliga urvalskriterier och dylikt gör att en teoretisk urvalsprocess för DE inte alls kan liknas vid hur en urvalsprocess i ett GP program fungerar. Det första problemet för DE vore väl att försöka beskriva exakt hur en sådan urvalsprocess ser ut och fungerar och då hjälper inte cirkulära påståenden som “survival of the fittest” särdeles mycket. Till dess att man vet hur denna urvalsprocess egentligen ser ut är det väl märkligt att jämföra den med olika varianter av de extremt tydliga och väldesignade varianter som vi kan hitta i GP program.
Vad genetisk programmering egentligen gör är att den väljer ut lösningar från ett fördefinierat och avgränsat område
Jo GP plockar ut lösning ur ett förutbestämt område. För de exempel med filterkonstruktion som vi diskuterat tidigare i tråden så är väl lösningsrymden 10E100 sådär. DE väljer också ut lösningar ur ett förutbestämt område men där är lösningsrymden mycket större. Antal kombinationer av baspar i människan uppskattar jag snabbt till 10E2000, och den totala lösningsrymden för alla tänkbara kombinationer av baspar är naturligtvis oerhört mycket större.
Nu är en skillnad på 10E1900 en otroligt stor skillnad som knappast kan förklaras med endast 4,6*10E9 år. Man ska ha i åtanke att det samlade antalet partiklar i universum ibland brukar beräknas till 10E80 så siffran 10E1900 är enorm, på gränsen till ofattbart stor. Så givet denna stora lösningsmängd jämfört med den simulerade varianten som dessutom existerar i en miljö som är special designad för att främja utveckling och överlevnad maximalt så blir inte jämförelsen bättre.
Nu gjorde jag ett ‘litet’ räknefel. Som jag räknade borde exponenten vara 1900 miljoner och inte 1900. (Antal baspar i människan enligt Wikipedia är c:a 4000 miljoner. Varje baspas har fyra möjligheter. Därav siffran 1900). Ett finger i luften-siffra. Men det väsentliga med denna siffra är enbart att den givet vissa förutsättningar, t.ex. antal kromosomer och antal baspar per kromosom, är begränsad d.v.s. inte oändlig. I princip är GP och DE lika i det avseendet. Sen tror jag att siffran är komplett oanvändbar till att bedöma hastigheten i evolutionen. Hur du vågar dig på att ha någon uppfattning i frågan förstår jag inte. DE började rimligen med ett litet antal baspar och då var den möjliga variationen inte så stor. Dessutom så påverkas såvitt jag kan se inte arbetssättet för evolution av hur stor lösningsrymden är.
Nils G - 17 Februari 2009 12:50 -
Det är inte slumpen som definierar hur informationen ska se ut, bara vilken del av den informationsmängden som för tillfället ska väljas ut och testas.
Om du med “informationen” avser lösningsrymden så gäller det för både GP och DE.
Sedan är det ett långt besvärligare problem att göra effektiva selektioner och bestämma vad som ska väljas ut. Så den intelligenta designern måste först definiera hur informationen ska representeras och sedan också fundera över hur urvals processen ska se ut, det är inget som genetisk programmering hjälper till med.
Både i GP och DE måste man tänka hur informationen skall representeras. I GP-fallet måste den mänskliga designern göra detta, i DE-fallet måste den intelligente designern (ID) eller någon naturalistisk process få till det (vi behöver i detta sammanhang inte diskutera vilket).
Det är väl en av mina viktigare poänger i denna diskussion. Nämligen att GP inte självklart är något stöd för att en intelligent designer inte behövs. Ser man på GP som helhet är intelligent input i processen en nödvändighet och dessutom en kritisk del som inte kan uteslutas. Utan intelligent medverkan i GP får vi inte heller några fungerande GP program.
Där tror jag vi är överens och jag hoppas att jag inte antytt att GP är ett argument direkt mot ID. Däremot anser jag att GP är intressant för att det visar vad evolution kan åstadkomma dvs. intelligenta lösningar som uppkommer endast genom att sätta upp en process. Om uppsättningen av processen var gjord av en intelligens eller inte är i sammanhanget oväsentligt. (Edit: Däremot kan nog GP användas indirekt mot ID, nämligen att ID inte behövs i vissa sammanhang men det tar vi inte nu)
Nils G - 17 Februari 2009 12:50 -
Och här haltar jämförelsen med naturlig evolution mycket starkt eftersom där antas urvals processen vara oförutseende och utan mål, vilket inte alls är fallet i genetisk programmering där målet med programmet finns inbyggt i koden.
Nja. I GE finns inte målet, den slutliga lösningen, inbyggd i koden utan endast godhetskriteriet, vad som skall betraktas som bra eller dåligt inbyggt. För DE finns heller inget mål inbyggt. Däremot godhetskriteriet, survival of the fittest, finns inbyggd i DEs miljö.
Målet med programmet finns inbyggt i hur informationen ska representeras, i hur man skapar en ny generation utifrån äldre generationer och i hur man väljer ut vad som gör en individ i en population bra i jämförelse med andra individer i populationen. Så syftet och målet med programmet finns med i alla steg av processen i GP. Sen använder man genvägar och optimeringsprocesser i urvalet som inte alls har någon motsvarighet i verkliga livet utan som kan liknas vid någon slags extrem avel där man har mycket exakta mått på vad som är bra och vad som är dåligt, även om den jämförelsen inte heller är bra och riktigt beskriver den extrema kontroll på urvalsprocessen och reproduktionen som man har i ett dataprogram. I verkligheten har du inte alls den möjligheten att göra de extrema urvalsprocesser som görs i ett GP program. Miljön, otydliga urvalskriterier och dylikt gör att en teoretisk urvalsprocess för DE inte alls kan liknas vid hur en urvalsprocess i ett GP program fungerar. Det första problemet för DE vore väl att försöka beskriva exakt hur en sådan urvalsprocess ser ut och fungerar och då hjälper inte cirkulära påståenden som “survival of the fittest” särdeles mycket. Till dess att man vet hur denna urvalsprocess egentligen ser ut är det väl märkligt att jämföra den med olika varianter av de extremt tydliga och väldesignade varianter som vi kan hitta i GP program.
tirian, jag tror att vi måste vara ganska noggranna med terminologi för att vi inte skall prata förbi varandra. Vad menar du med målet? Tag handelsresandeproblemet. På vilket sätt finns målet representerat i datastrukturen? Jag har samma frågor vad gäller i stort sett allt du säger här. Det vore bra om du kunde referera till algoritmen i första inlägget i den här tråden (eller till någon annan algorim). Helt kort dock:
Så syftet och målet med programmet finns med i alla steg av processen i GP.
Förstår inte, vadå målet?
Sen använder man genvägar och optimeringsprocesser i urvalet som inte alls har någon motsvarighet i verkliga livet utan som kan liknas vid någon slags extrem avel där man har mycket exakta mått på vad som är bra och vad som är dåligt, även om den jämförelsen inte heller är bra och riktigt beskriver den extrema kontroll på urvalsprocessen och reproduktionen som man har i ett dataprogram.
Vadå för genvägar? Förstår inte. Vad jag sett så använder man de vanliga genetiska mekanismerna mutation etc.
I verkligheten har du inte alls den möjligheten att göra de extrema urvalsprocesser som görs i ett GP program.
Jaså inte?
Miljön, otydliga urvalskriterier och dylikt gör att en teoretisk urvalsprocess för DE inte alls kan liknas vid hur en urvalsprocess i ett GP program fungerar.
Tja. De GP program som har skrivits är naturligtvis oerhört mycket enklare än den naturliga urvalsmekanismen. Men det utesluter definitivt inte att man kan lära om det komplexa från det enkla. Vanlig metod inom naturvetenkskap.
Det första problemet för DE vore väl att försöka beskriva exakt hur en sådan urvalsprocess ser ut och fungerar .
Varför just detta skulle vara den första uppgiften för DE förstår jag inte även det vore bra att kunna göra det men jag tror att det dröjer mycket länge tills man går iland med det.
och då hjälper inte cirkulära påståenden som “survival of the fittest” särdeles mycket
Vadnu? Cirkulärt? På vilket sätt. “Survial of the fittest” är nästan en självklarhet i alla fall om man har hört talas om den innan. Före Darwin så tror jag inte att det var lika klart. Att begreppet är så självklart innebär inte att det är cirkulärt. För att vara lite noga: Att den bäst anpassade lever längst är själklart. Men det finns faktiskt två steg till i begreppet som inte är direkt självklara nämligen att de som lever längst får mest avkomma och att de gener som finns i de som får mest avkomma kommer att he en fördel framför de andra generna.
Dessutom så påverkas såvitt jag kan se inte arbetssättet för evolution av hur stor lösningsrymden är.
Jag tycker matte kan vara lite roligt så låt mig bara sätta siffrorna i relation till varandra, även om kanske uträkningarna i sig går att diskutera. Nu vet jag inte om du menar att lösningsrymden för DE skulle vara 10E2000000000 men jag använder den siffra du först nämnde vilket var 10E2000 eftersom det är kortare att skriva
Lösningsmängdens storlek har betydelse för hur lång tid det kommer att ta för att hitta lösningar och redan 10E2000 är för stor lösningsmängd för att det praktiskt är möjligt att få svar utan att avgränsa problem området på något sätt eller hitta genvägar. Låt oss säga att vi har en dator som kan räkna ut en lösning ur en lösningsmängd på 10E100 på endast 1 sekund, en mycket snabb dator med andra ord.
Om då lösningsmängden skulle öka till 10E2000 och tiden att räkna ut problemet endast ökar linjärt med avseende på lösningsmängden. Hur lång tid skulle det då ta att räkna ut 1 lösning från den lösningsmängden?
Om jag inte tänker helt fel skulle det ta ungefär 10E1900 sekunder (i.e. 10E2000 / 10E100). Som jämförelse kan väl sägas att universum existerat i cirka 1,6 * 10E17 sekunder (ett år är 32*10E6 sekunder och universum ålder skattade jag till 5*10E9 år) enligt DE. Så här har vi ett praktiskt problem, eller hur?
Nils G - 17 Februari 2009 05:35 -
Om uppsättningen av processen var gjord av en intelligens eller inte är i sammanhanget oväsentligt. (Edit: Däremot kan nog GP användas indirekt mot ID, nämligen att ID inte behövs i vissa sammanhang men det tar vi inte nu)
Fast en del ID anhängare (som Behe om jag inte kommer ihåg fel) är väl mer inne på teistisk evolution vilket skulle vara en mer rättvisande liknelse till verkliga GP program. Så om man tror på teistisk evolution borde väl GP vara ett starkt stöd (utifrån nödvändigheten av intelligent input i processen) att evolution förmodligen inte skett helt utan intelligent input. En rimligare utgångspunkt borde väl då vara ID, om man har GP som exempel på hur det kan ha gått till.
Nils G - 17 Februari 2009 05:35 -
tirian, jag tror att vi måste vara ganska noggranna med terminologi för att vi inte skall prata förbi varandra. Vad menar du med målet? Tag handelsresandeproblemet. På vilket sätt finns målet representerat i datastrukturen? Jag har samma frågor vad gäller i stort sett allt du säger här. Det vore bra om du kunde referera till algoritmen i första inlägget i den här tråden (eller till någon annan algorim). Helt kort dock:
Målet med programmet (nämligen att räkna ut kortast färdsträckan mellan ett antal städer) finns med i själva definitionen av en gen, i.e. den lägsta databärande enheten har anpassat för vad programmet är ämnat att göra. I TSP problemet definierades en Gen på följande sätt:
Och här är m_x och m_y stadens koordinater i ett problem specifikt koordinat system. Samt m_description är information till användaren så att han/hon ska förstå resultatets innebörd.
Var det en bättre förklaring?
Nils G - 17 Februari 2009 05:35 -
och då hjälper inte cirkulära påståenden som “survival of the fittest” särdeles mycket
Vadnu? Cirkulärt? På vilket sätt. “Survial of the fittest” är nästan en självklarhet i alla fall om man har hört talas om den innan. Före Darwin så tror jag inte att det var lika klart. Att begreppet är så självklart innebär inte att det är cirkulärt. För att vara lite noga: Att den bäst anpassade lever längst är själklart. Men det finns faktiskt två steg till i begreppet som inte är direkt självklara nämligen att de som lever längst får mest avkomma och att de gener som finns i de som får mest avkomma kommer att he en fördel framför de andra generna.
“Survial of the fittest” kan även skrivas som “Survival of those who survives” och då blir det cirkulära i definitionen påtaglig. Det som är besvärligt är att försöka hitta en entydig och exakt definition av den bäst anpassade som inte direkt eller indirekt relaterar till överlevnad.
Sen har väl en individs levnadslängd inte per nödvändighet nån relation till antalet avkomma som produceras. En bakterie producerar väl förmodligen långt mer avkomma än vad en människa gör, men beror detta på att de lever längre?
Om man i handelsresandeproblemet tänker så att miljön gör så att den lösning som ger kortast sträcka “överlever” och slår ut konkurrerande lösningar så har man inte satt ett mål, man har bestämt sig för vad miljön “gynnar”. I riktiga verkligheten är det ju ingen som bestämmer hur miljön ser ut eller vad som ska belönas. I strikt biologisk evolution “gynnas” (inte riktigt bra ord då det antyder ett subjekt som gynnar) de egenskaper som är sådana att de av någon anledning förs vidare i större utsträckning än andra egenskaper. Vilka egenskaper som förs videra är alltså beroende av miljön.
Evolution är: Kopiering, ibland med förändring + konkurens och detta i en viss miljö
Om en egenskap i en viss miljö förs vidare i större utsträckning än andra liknade egenskaper äger evolution rum.
Egentligen är ord som “bättre” eller “gynnas” mer förvirrande än upplysande i denna diskussion. “Survival of the fittest” är inte en logiskt sats det är en beskrivning av en naturlig process och naturligtvis inte cirkulär. Hittar du en i sanning cirkulär process så har du funnit en evighetsmaskin . Möjligtvis kan man se processen som en spiral.. mest då som liknelse.