Navigation

1062days since
inlämning

Recent site activity

Resultat

Inledning

På denna sida presenteras frukten av projektet. Arbetet har resulterat i en artikel, ett exekverbart program samt denna projektwebbplats. På den här sidan sammanfattas projektet och en användarhandledning ges för programmet tillsammans med länkar till kod och artikel.


Kolla filmen!

Sammanfattning från artikel (Abstract)

This report describes a simple simulation for evolving movements of a worm over time and generations using a genetic algorithm. A simplified and modified 2D version of Karl Sims work with Evolving Virtual Creatures is created. Creatures are created with a random genotype, the creatures movements are simulated and patterns arise from a Hopfield inspired neural network. The genotype is simply all the weights of the neural network which evolve over generations from a Genetic Algorithm. The fitness for each creature is determined by how far they are able to move within a specified number of steps in the simulation. A large number of tests are made and a rolling or a combination of rolling and jumping movement seems to be the most effective pattern for forward movement in our simulation.

Artikel

För pdf av artikel, se:
http://sites.google.com/site/geneticreanimation/filarkiv/report.pdf?attredirects=0

Applikationen

Biblioteket phys2d används som fysikmotor och bibliotek från Processing används för att visualisering av simuleringen. När applikationen startats kör simuleringar utifrån de förvalda parametrarna alternativt de parametrar som angetts via kommandorad.

Intressanta parametrar i ProcessingView.java:

  • NROFGENERATIONS - Antal generationer i evolutionen.
  • POPULATIONSIZE - Antal individer populationer
  • CROSSOVERRATE - Andelen individer som skapas till den nästa generation via sexuell reproduktion.
  • LIFESPAN - Antalet iterationer av fysikmotorn
  • RECORDBEST - Värdet "true" innebär att den bästa individen efter varje generation spelas in till en .mov-fil och sparas till hårddisken. (Buggar förekommer i form av att individen inte alltid presterar den fitness som uppmätts i den tidigare simuleringen)
  • SAVE_POP_TO_FILE - Värdet "true" innebär att data som beskriver populationen sparas till en textfil för varje generation. Denna information kan användas för att senare simulera intressanta varelser.

Intressanta parametrar i Simulation.java:
  • DRAW_GUI - Värdet "true" visar simuleringarna under tiden de körs. Värdet "false" innebär att simuleringarna körs utan att de visas på skärmen. Även om DRAW_GUI är satt till "false" spelas filmer in och visas på skärmen om RECORDBEST är satt till "true"



Användarhandledning för kommandoradsexekvering av applikationen

Följ dessa instruktioner för att ladda hem och köra applikationen:
  1. Ladda hem källkoden från följande länk - http://github.com/blastura/genetic-reanimation/zipball/v1.0
  2. Kompilera projektet med ant (navigera till katalogen och skriv "ant")
  3. Starta applikation genom att skriva ett av följande alternativ:
    • ant run
    • java -cp bin/main/:lib/core.jar:lib/video.jar se.umu.cs.geneticReanimation.ProcessingView [parametrar]
      • För användning av parametrar, se parameterlista
  4. Luta dig tillbaka och låt simulationen köras
Parameterlista:
Ex. -n10 -p20 ger 20 generationer med 20 individer i populationen.
-f ange giltig textfil med data från en population du vill starta med
-n Antalet generationer-p Populationsstorlek
-c Andel för crossover
-m Andel för mutation
-l Livslängd
-r r1 för att sätta recordbest till true, r0 för false
-v moviepath, om filmer och textfiler ska sparas på något annat ställe

Om användaren hellre vill in och ändra i källkoden återfinns ovan nämnda parametrar högst upp i de nämnda filerna och kan ändras efter eget tycke.


Förslag till parameterinställning

-n20 -p20 -c0.7 -m0.01 -l10000

För att bara se den bästa individen i varje generation, ange:
DRAW_GUI = false
RECORDBEST = true



Material från testkörningar

Exempel på en simulering:

http://sites.google.com/site/geneticreanimation/filarkiv/gen%281%29_fit%28318%29.mov



Figur 1. Ett typiskt rörelsemönster



Figur 2. Detaljbild på hopp-rullande rörelsemönster