Download - Devnology Coding Dojo 05-01-2011
Coding Dojo: GA + TSP 05-01-2011
Agenda
Introductie (30 minuten) travelling salesman probleemgenetisch algoritmecoding dojo
Fun -> Dojo Evaluatie (10 minuten)
Coding Dojo: GA + TSP 05-01-2011
HandsUp Wie
Was eerder bij een Devnology meeting? Was eerder bij een coding dojo? Heeft wel eens een genetisch algoritme
geïmplementeerd? Is bekend met het Travelling Salesman probleem? Kan in C# ontwikkelen? Heeft ervaring met Test Driven Development? Heeft ervaring met Behaviour Driven Development?
Coding Dojo: GA + TSP 05-01-2011
Doelen1. Een leuke en gezellige avond
2. Wat leren over je eigen stijl van coderen en communiceren
3. Wat leren over TDD, BabySteps
4. Wat leren over Genetic Algorithms
5. Wat leren over het Travelling Salesman probleem
6. Wat leren over C# (en .Net)
7. Een werkende oplossing
hoog
laag
priorite
it
Coding Dojo: GA + TSP 05-01-2011
Travelling Salesman problem
Gegeven een aantal steden en de kosten om van de ene stad naar de andere te reizen,
Wat is dan de meest goedkope reis die je kunt maken zodat elke stad 1x wordt aangedaan voordat je terugkeert naar de stad waar je gestart bent.
(Dit is de enige stad die je twee keer bezoekt)
Coding Dojo: GA + TSP 05-01-2011
A G
BF
C
E
D100
80
70
70
120
60
40
70
90
110
5030
Is er een route die je door elke stad brengt en terug naar het startpunt ‘A’ voor minder dan 520?
Het antwoord is ja. De oplossing is ABCGFDEA
Voorbeeld
Uit: The Travelling Salesman Problem - By Matt Leonard & Nathan Rodger
Coding Dojo: GA + TSP 05-01-2011
Mona Lisa TSP Challenge
“An optimal solution to the 100,000-city Mona Lisa instance would set a new world record for the TSP”
http://www.tsp.gatech.edu/data/ml/monalisa.html
Coding Dojo: GA + TSP 05-01-2011
Genetisch Algoritme
Een algoritme gebaseerd op evolutie om een passende oplossing te vinden voor een specifiek probleem
Charles Darwin
Sweet!
Coding Dojo: GA + TSP 05-01-2011
Hoe werkt het? (1)
Allereerst heb je een PROBLEEM waarvoor je een oplossing zoekt
Daarna encodeer je mogelijke oplossingen voor dit probleem. Dit zijn CHROMOSOMEN
Hoe goed een oplossing past voor het probleem heet de FITNESS
Nieuwe oplossingen ontstaan door het KRUISEN van twee CHROMOSOMEN
Soms MUTEREN we nakomelingen om diversiteit in stand te houden
We herhalen dit tot we klaar zijn.
Coding Dojo: GA + TSP 05-01-2011
Hoe werkt het? (2)
Genepool
Generation 0
Create initialpopulation Generation 0
Sort by fitness
Conditions met?
Sort by fitness
Generation ++
Crossover& Mutate
End
yesPromite Elite
Generation ++no
Coding Dojo: GA + TSP 05-01-2011
Tournament: Select a number of chromosomes from generation n
Pick 2 chosen ones
Crossover
loves
daddy mommy
kid1 kid2
Mutate (sometimes)
Add kids to generation n+1
Repeat unit generation n+1 is fully filled
Crossover & Mutation
Coding Dojo: GA + TSP 05-01-2011
En waarom zou ik het gebruiken?
Het biedt een alternatief om oplossingen voor problemen te vinden met (zeer) grote solution spaces
Het biedt een manier om een (goed) passende oplossing te vinden voor een beperkte hoeveelheid (cpu) tijd
Kan parallel worden en eenvoudig gedistribueerd worden uitgevoerd
Toepassingsgebieden: besluitvorming, artificial intelligence, gaming, …
Coding Dojo: GA + TSP 05-01-2011
GA & The Mona Lisa
after 904314 generations
Could you paint a replica of the Mona Lisa using only 50 semi transparent polygons?
http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/
Coding Dojo: GA + TSP 05-01-2011
Coding Dojo: GA + TSP 05-01-2011
MODEL
Randori - Kata
moderator
1. SN / TH: Create Genes
2. TH / RK: Fix the code
Coding Dojo: GA + TSP 05-01-2011
Yammer today
Coding Dojo: GA + TSP 05-01-2011
7 Minuten Dynamiek
1. Benoem een (deel)scenario dat jullie als pair gaan implementeren in 7 MINUTEN
2. Leg aan publiek uit wat jullie gaan doen door een FALENDE test te schrijven (EXPLAIN IT WITH CODE!)
3. Implementeer de test zodat de test SLAAGT
4. REFACTOR indien nodig.
5. GOTO 1 (indien er nog voldoende tijd is)
(1) BABYSTEPS
(2) “Explain it with code”
(2, 3, 4) RED – GREEN – REFACTOR (TEST DRIVEN DEVELOPMENT)
Coding Dojo: GA + TSP 05-01-2011
Opzet Solution
StoryQ
GATSP.Business.Functional.TestsGATSP.Business.Tests
GATSP.Business
MSTest
Coding Dojo: GA + TSP 05-01-2011
StoryQ & .Netusing System;using System.Reflection;using Microsoft.VisualStudio.TestTools.UnitTesting;using StoryQ;namespace GATSP.Business.Functional.Tests{ [TestClass] public class InitialSetupOfChromosomesTests { [TestMethod] [Ignore] public void InitialSetupOfChromosomes() { new Story("InitialSetupOfChromosomes") .InOrderTo("FindTheShortestRoute") .AsA("TravellingSalesman") .IWant("A new generation of chromosomes") .WithScenario("initial setup of chromosomes") .Given(ANewGenePool) //GIVEN part of automated test .When(ICreateAnInitialPool) //WHEN part of automated test .Then(IGetANewGenerationOfChromosomes) //THEN part of automated test .ExecuteWithReport(MethodBase.GetCurrentMethod()); } public void ANewGenePool() { throw new NotImplementedException(); } public void ICreateAnInitialPool() { throw new NotImplementedException(); } public void IGetANewGenerationOfChromosomes() { throw new NotImplementedException(); } }}
Dit is voor
leesbaarheid /
rapportage
Dit is de echte
testuitvoering
Dit voor fysieke
rapportage
Coding Dojo: GA + TSP 05-01-2011
Functionele Tests (Startpunten)
InitialSetupOfChromosomes SortPopulationOfChromosomes CrossoverTwoChromosomes MutateAChromosome CrossoverAndMutatePopulation
Coding Dojo: GA + TSP 05-01-2011
Ontwikkelomgeving
VS2010 Grote fonts (Code pane, environment font) MSTest LineNumbers aan DojoTimer
Reset timer Restart tests
See detailsRuns every minute
DojoTimer
Coding Dojo: GA + TSP 05-01-2011
LET’S START
Voorstel: begin bij functionele test “InitialSetupOfChromosomes”
Per werkplek kunnen de eerste pairs beginnen..
Laat code ontstaan in de testclass/testmethode. Tijdens de refactorstap kun je via refactorings ExtractMethod en MoveMethod de code naar een betere plek verhuizen. .
Hou je aan de 7 minuten dynamiek
Coding Dojo: GA + TSP 05-01-2011
Evaluatie
Wat hebben we geleerd?
Wat kunnen we de volgende keer beter doen?
Nog een volgende keer?
Coding Dojo: GA + TSP 05-01-2011
Travelling Salesman problem
GENETIC PROGRAMMING MONA LISA http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/
GENETIC GALLERY http://rogeralsing.com/2008/12/11/genetic-gallery/
MONA LISA TSP http://www.tsp.gatech.edu/data/ml/monalisa.html
TSP ART http://www.oberlin.edu/math/faculty/bosch/tspart-page.html