In het algemeen
Genetische algoritmen zijn goed in het oplossen van problemen als roosters en planningen. Zij zijn ook toegepast in de machinebouw. Zij worden vaak gebruikt om globale optimalisatieproblemen op te lossen.
Als vuistregel geldt dat genetische algoritmen nuttig kunnen zijn in probleemdomeinen met een complex fitness-landschap, omdat vermenging is ontworpen om de populatie weg te krijgen van lokale optima waarin een traditioneel heuvelklim-algoritme zou kunnen blijven steken. Veelgebruikte crossover operatoren kunnen geen uniforme populatie veranderen. Mutatie alleen kan zorgen voor ergodiciteit van het totale genetische algoritme-proces (gezien als een Markov-keten).
Voorbeelden van problemen die met genetische algoritmen zijn opgelost zijn: spiegels die zijn ontworpen om zonlicht naar een zonnecollector te leiden, antennes die zijn ontworpen om radiosignalen in de ruimte op te pikken, loopmethoden voor computerfiguren, optimaal ontwerp van aërodynamische lichamen in complexe stromingsvelden
In zijn Algorithm Design Manual raadt Skiena genetische algoritmen voor elke taak af: "Het is nogal onnatuurlijk om toepassingen te modelleren in termen van genetische operatoren zoals mutatie en crossover op bit strings. De pseudobiologie voegt een extra niveau van complexiteit toe tussen u en uw probleem. Ten tweede duren genetische algoritmen erg lang voor niet-triviale problemen. De analogie met evolutie - waar significante vooruitgang miljoenen jaren vergt - kan heel toepasselijk zijn. Ik ben nog nooit een probleem tegengekomen waarbij genetische algoritmen mij de juiste manier leken om het aan te pakken. Verder heb ik nog nooit berekeningsresultaten gezien waarbij genetische algoritmen werden gebruikt die een gunstige indruk op mij maakten. Blijf bij gesimuleerde annealing voor je heuristische zoek voodoo behoeften."
Bordspellen
Bordspellen vormen een zeer relevant onderdeel van het gebied van genetische algoritmen zoals toegepast op speltheoretische problemen. Veel van het vroege werk op het gebied van computationele intelligentie en spellen was gericht op klassieke bordspellen, zoals tic-tac-toe,[3] schaken, en dammen. [4] Bordspellen kunnen nu, in de meeste gevallen, door een computer op een hoger niveau worden gespeeld dan de beste mensen, zelfs met blinde uitputtende zoektechnieken. Go is een bekende uitzondering op deze tendens en heeft tot nu toe weerstand geboden aan een aanval door machines. De beste Go-computerspelers spelen nu op het niveau van een goede beginner. [5][6] Er wordt gezegd dat de strategie van Go sterk steunt op patroonherkenning, en niet alleen op logische analyse zoals bij schaken en andere meer stuk-onafhankelijke spelen. De enorme effectieve vertakkingsfactor die nodig is voor het vinden van oplossingen van hoge kwaliteit beperkt in hoge mate de look-ahead die kan worden gebruikt bij het zoeken naar zettenreeksen.
Computerspelletjes
Het genetisch algoritme kan in computerspelletjes worden gebruikt om kunstmatige intelligentie te creëren (de computer speelt tegen jou). Dit maakt een realistischer spelervaring mogelijk; als een menselijke speler een opeenvolging van stappen kan vinden die altijd tot succes leiden, zelfs bij herhaling in verschillende spellen, kan er geen uitdaging meer zijn. Omgekeerd, als een leertechniek zoals een genetisch algoritme voor een strateeg kan voorkomen dat fouten uit het verleden worden herhaald, zal het spel meer speelbaarheid hebben.
Genetische algoritmen hebben de volgende onderdelen nodig:
- Een methode om de uitdaging voor te stellen in termen van de oplossing (b.v. het leiden van soldaten bij een aanval in een strategiespel)
- Een fitness- of evaluatiefunctie om de kwaliteit van een instantie te bepalen (b.v. een meting van de schade die bij een dergelijke aanval aan een tegenstander wordt toegebracht).
De fitness-functie accepteert een gemuteerde instantiatie van een entiteit en meet de kwaliteit ervan. Deze functie wordt aangepast aan het probleemdomein. In veel gevallen, met name bij code-optimalisatie, kan de fitness-functie gewoon een systeem-timing-functie zijn. Zodra een genetische representatie en een fitness-functie zijn gedefinieerd, zal een genetisch algoritme initiële kandidaten instantiëren zoals hierboven beschreven, en vervolgens verbeteren door herhaalde toepassing van mutatie-, crossover-, inversie- en selectieoperatoren (zoals gedefinieerd overeenkomstig het probleemdomein).