Genetisk algoritme

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 20. januar 2020; checks kræver 17 redigeringer .

En genetisk algoritme er en  heuristisk søgealgoritme , der bruges til at løse optimerings- og modelleringsproblemer ved tilfældig udvælgelse, kombination og variation af de ønskede parametre ved hjælp af mekanismer, der ligner naturlig udvælgelse i naturen. Det er en form for evolutionær beregning , der løser optimeringsproblemer ved hjælp af naturlige evolutionsmetoder såsom nedarvning , mutation , selektion og overkrydsning . Et karakteristisk træk ved den genetiske algoritme er vægten på brugen af ​​"krydsnings"-operatoren, som udfører operationen med rekombination af kandidatløsninger, hvis rolle svarer til rollen som krydsning i naturen.

Historie

Det første arbejde med simulering af evolution blev udført i 1954 af Nils Baricelli på en computer installeret på Institute for Advanced Study ved Princeton University. [1] [2] Hans værk, udgivet samme år, tiltrak bred offentlig opmærksomhed. Siden 1957 [3] har den australske genetiker Alex Fraser udgivet en række artikler, der simulerer kunstig selektion blandt organismer med flere kontroller for målbare egenskaber. Denne banebrydende gjorde det muligt for computersimulering af evolutionære processer og metoderne beskrevet i bøgerne af Fraser og Barnell (1970) [4] og Crosby (1973) [5] at blive en mere almindelig aktivitet blandt biologer fra 1960'erne. Frasers simuleringer omfattede alle de væsentlige elementer i moderne genetiske algoritmer. Ud over dette udgav Hans-Joachim Bremermann en række artikler i 1960'erne, der også tog tilgangen til at bruge en beslutningspopulation underlagt rekombination, mutation og selektion i optimeringsproblemer. Bremermanns forskning omfattede også elementer af moderne genetiske algoritmer. [6] Andre pionerer inkluderer Richard Friedberg, George Friedman og Michael Conrad. Mange tidlige værker er blevet genudgivet af David B. Vogel (1998). [7]

Selvom Baricelli i sit papir fra 1963 simulerede en maskines evne til at spille et simpelt spil, [8] blev kunstig evolution en accepteret optimeringsteknik efter Ingo Rechenbergs og Hans-Paul Schwefels arbejde i 1960'erne og begyndelsen af ​​1970'erne af det tyvende. århundrede - Rechenbergs gruppe var i stand til at løse komplekse tekniske problemer i henhold til evolutionsstrategier . [9] [10] [11] [12] En anden tilgang var Lawrence J. Vogels evolutionære programmeringsteknik , som blev foreslået for at skabe kunstig intelligens. Evolutionær programmering brugte oprindeligt statsmaskiner til at forudsige omstændigheder, og mangfoldighed og udvælgelse til at optimere forudsigelseslogikken. Genetiske algoritmer blev særligt populære takket være John Hollands arbejde i begyndelsen af ​​70'erne og hans bog Adaptation in Natural and Artificial Systems (1975) [13] . Vogels forskning var baseret på Hollands eksperimenter med cellulære automater og hans (Hollands) skrifter skrevet ved University of Michigan . Holland introducerede en formaliseret tilgang til at forudsige kvaliteten af ​​den næste generation, kendt som Scheme Theorem . Forskning i genetiske algoritmer forblev stort set teoretisk indtil midten af ​​1980'erne, hvor den første internationale konference om genetiske algoritmer endelig blev afholdt i Pittsburgh, Pennsylvania (USA) .

Med væksten i forskningsinteressen er stationære computeres regnekraft også vokset markant, hvilket gjorde det muligt at bruge ny computerteknologi i praksis. I slutningen af ​​80'erne begyndte General Electric at sælge verdens første genetiske algoritmeprodukt. De blev til et sæt industrielle computerværktøjer. I 1989, et andet selskab, Axcelis, Inc. udgav Evolver  , verdens første kommercielle genetiske algoritmeprodukt til stationære computere. New York Times teknologijournalist John Markoff skrev [ 14] om Evolver i 1990.

Beskrivelse af algoritmen

Problemet er formaliseret på en sådan måde, at dets løsning kan kodes som en vektor (" genotype ") af gener, hvor hvert gen kan være en bit , et tal eller et andet objekt. I klassiske implementeringer af den genetiske algoritme (GA) antages det, at genotypen har en fast længde. Der er dog variationer af GA, der er fri for denne begrænsning.

På en eller anden, sædvanligvis tilfældig måde, skabes mange genotyper af den oprindelige population. De evalueres ved hjælp af en " fitness-funktion ", hvor en bestemt værdi ("fitness") er knyttet til hver genotype, som bestemmer, hvor godt den fænotype , der beskrives af den, løser problemet.

Når du vælger en " fitness- funktion " (eller fitness-funktion i den engelske litteratur), er det vigtigt at sikre, at dens "relief" er "glat".

Fra det resulterende sæt af løsninger ("generationer"), under hensyntagen til værdien af ​​"fitness", vælges løsninger (normalt har de bedste individer større sandsynlighed for at blive valgt), som "genetiske operatører" anvendes på (i de fleste tilfælde tilfælde, " crossover " - crossover og " mutation " - mutation ), hvilket resulterer i nye løsninger. For dem beregnes også konditionsværdien, og derefter foretages udvælgelsen (“selektion”) af de bedste løsninger til næste generation.

Dette sæt handlinger gentages iterativt og modellerer således en "evolutionær proces", der varer adskillige livscyklusser ( generationer ), indtil algoritmens stopkriterium er opfyldt. Dette kriterium kan være:

Genetiske algoritmer tjener hovedsageligt til at søge efter løsninger i multidimensionelle søgerum.

Således kan de følgende stadier af den genetiske algoritme skelnes:

  1. Indstil målfunktionen (fitness) for individer af befolkningen
  2. Opret indledende population
  1. Reproduktion (krydsning)
  2. Mutation
  3. Beregn den objektive funktionsværdi for alle individer
  4. Dannelse af en ny generation (selektion)
  5. Hvis stopbetingelserne er opfyldt, så (slutningen af ​​sløjfen), ellers (starten af ​​sløjfen).

Oprettelse af den oprindelige population

Før det første trin skal du tilfældigt oprette en indledende population; selvom det viser sig at være fuldstændig ukonkurrencedygtigt, er det sandsynligt, at den genetiske algoritme stadig hurtigt vil overføre det til en levedygtig population. I det første trin kan man således ikke specielt forsøge at gøre individer for fit, det er nok, at de svarer til formatet af individer i befolkningen, og fitnessfunktionen kan beregnes på dem. Resultatet af det første trin er populationen H, bestående af N individer.

Udvalg (udvalg)

På udvælgelsesstadiet er det nødvendigt at udvælge en vis andel af hele befolkningen, der vil forblive "i live" på dette evolutionstrin. Der er forskellige måder at vælge på. Overlevelsessandsynligheden for et individ h skal afhænge af fitnessfunktionsværdien Fitness(h). Selve overlevelsesraten s er normalt en parameter for den genetiske algoritme, og den er ganske enkelt givet på forhånd. Som et resultat af selektion skal der ud af N individer af population H forblive sN-individer, som vil blive inkluderet i den endelige population H'. Resten af ​​individerne dør.

Forældres valg

Reproduktion i genetiske algoritmer kræver flere forældre, normalt to, for at producere afkom.

Der er flere forældrevalgsoperatører:

  1. Panmixia - begge forældre vælges tilfældigt, hvert individ i befolkningen har lige stor chance for at blive valgt
  2. Indavl - den første forælder vælges tilfældigt, og den anden vælges, der minder mest om den første forælder
  3. Udavl - den første forælder vælges tilfældigt, og den anden forælder vælges, hvilket minder mindst om den første forælder

Indavl og udavl kommer i to former: fænotypisk og genotypisk. I tilfælde af den fænotypiske form måles lighed afhængigt af værdien af ​​fitnessfunktionen (jo tættere værdierne af den objektive funktion er, jo mere ens individerne), og i tilfælde af den genotypiske form måles lighed. afhængigt af repræsentationen af ​​genotypen (jo færre forskelle mellem individernes genotyper, jo mere ens individerne).

Gengivelse (krydsning)

Reproduktion i forskellige algoritmer er defineret forskelligt - det afhænger selvfølgelig af datarepræsentationen. Hovedkravet for reproduktion er, at afkommet eller afkommet har mulighed for at arve begge forældres egenskaber ved at "blande" dem på en eller anden måde.

Hvorfor er individer til reproduktion normalt udvalgt fra hele populationen H, og ikke fra de elementer af H', der overlevede på det første trin (selvom sidstnævnte mulighed også har ret til at eksistere)? Faktum er, at den største ulempe ved mange genetiske algoritmer er manglen på mangfoldighed hos individer. Ret hurtigt skiller en enkelt genotype sig ud, som er et lokalt maksimum, og så mister alle elementer i befolkningen selektion til den, og hele populationen "tilstoppes" med kopier af dette individ. Der er forskellige måder at håndtere sådan en uønsket effekt på; en af ​​dem er valget til reproduktion af ikke de mest tilpassede, men generelt alle individer. Denne tilgang tvinger os imidlertid til at gemme alle allerede eksisterende individer, hvilket øger problemets beregningsmæssige kompleksitet. Derfor bruges metoder til at udvælge individer til krydsning ofte på en sådan måde, at ikke kun de mest tilpassede, men også andre individer med dårlig kondition "formeres". Med denne tilgang øges mutationers rolle for genotypens mangfoldighed.

Mutationer

Det samme gælder mutationer som for reproduktion: der er en vis andel af mutanter m, som er en parameter for den genetiske algoritme, og ved mutationstrinnet skal du udvælge mN-individer og derefter ændre dem i overensstemmelse med foruddefinerede mutationsoperationer .

Kritik

Der er flere grunde til kritik af brugen af ​​en genetisk algoritme i sammenligning med andre optimeringsmetoder:

Der er mange skeptikere omkring gennemførligheden af ​​at bruge genetiske algoritmer. For eksempel skriver Steven S. Skiena, professor i computerteknik ved Stony Brook University, en velkendt forsker i algoritmer, vinder af IEEE Institute Award [17] :

Jeg er personligt aldrig stødt på et eneste problem, hvor genetiske algoritmer ville være det bedst egnede værktøj. Desuden er jeg aldrig stødt på resultater af beregninger opnået gennem genetiske algoritmer, som ville gøre et positivt indtryk på mig.

Anvendelser af genetiske algoritmer

Genetiske algoritmer bruges til at løse følgende problemer:

  1. Funktionsoptimering
  2. Optimering af databaseforespørgsler
  3. Diverse problemer på grafer ( problem med rejsende sælger , farvelægning, finde matchninger)
  4. Opsætning og træning af et kunstigt neuralt netværk
  5. Byg opgaver
  6. Planlægning
  7. Spilstrategier
  8. Approksimationsteori
  9. kunstigt liv
  10. Bioinformatik ( proteinfoldning )
  11. Syntese af endelige automater
  12. Tuning af PID-regulatorer

Et eksempel på en simpel C++ implementering

Søg i et-dimensionelt rum, uden at krydse.

#include <cstdlib> #include <ctime> #include <algoritme> #include <iostream> #inkluder <nummer> int main () { srand (( usigneret int ) tid ( NULL )); const size_t N = 1000 ; int a [ N ] = { 0 }; for ( ; ; ) { //mutation til den tilfældige side af hvert element: for ( størrelse_ti = 0 ; i < N ; ++ i ) _ a [ i ] += (( rand () % 2 == 1 ) 5 1 : -1 ); //Vælg nu den bedste, sorteret i stigende rækkefølge std :: sort ( a , a + N ); //og så vil de bedste være i anden halvdel af arrayet. //kopier det bedste til første halvdel, hvor de efterlod afkom, og de første døde: std :: kopi ( a + N / 2 , a + N , a ); //kig nu på befolkningens gennemsnitlige tilstand. Som du kan se, bliver det bedre og bedre. std :: cout << std :: akkumulere ( a , a + N , 0 ) / N << std :: endl ; } }

Et eksempel på en simpel implementering i Delphi

Søg i et-dimensionelt rum med sandsynlighed for overlevelse, uden at krydse. (testet på Delphi XE)

program Program1 ; {$APPTYPE CONSOLE} {$R *.res} bruger System . generiske lægemidler . Standarder , System . generiske lægemidler . Samlinger , System . Sysutils ; const N = 1000 ; Nh = N div2 ; _ MaxPopulation = Høj ( heltal ) ; var A : array [ 1..N ] af heltal ; _ _ I , R , C , Points , Fødselsrate : Heltal ; Iptr : ^ Heltal ; begynde Randomize ; // Delvis population for I := 1 til N do A [ I ] := Tilfældig ( 2 ) ; gentag // Mutation for I := 1 til N do A [ I ] := A [ I ] + ( - Tilfældig ( 2 ) eller 1 ) ; // Udvælgelse, de bedste i slutningen af ​​TArray . Sort < Heltal > ( A , TComparer < Heltal >. Standard ) ; // Forudindstillet Iptr := Addr ( A [ Nh + 1 ] ) ; Point := 0 ; Fødselsrate := 0 ; // Crossover-resultater for I := 1 til Nh do begin Inc ( Points , Iptr ^ ) ; // Tilfældig crossover succes R := Tilfældig ( 2 ) ; Inc ( Fødselsrate , R ) ; A [ I ] := Iptr ^ * R ; Iptr ^ := 0 ; Inc ( Iptr , 1 ) ; ende ; // Subtotal Inc ( C ) ; indtil ( Punkter / N >= 1 ) eller ( C >= MaxPopulation ) ; Writeln ( Format ( 'Population %d (rate:%f) score:%f' , [ C , BirthRate / Nh , Points / N ])) ; ende .

I kultur

  • I filmen Virtuosity fra 1995 dyrkes hovedskurkens hjerne af en genetisk algoritme, der bruger de kriminelles minder og adfærdstræk.

Noter

  1. Barricelli, Nils AallEsempi numerici di processi di evoluzione  (neopr.)  // Methodos. - 1954. - S. 45-68 .
  2. Barricelli, Nils AallSymbiogenetiske evolutionsprocesser realiseret ved kunstige metoder  (engelsk)  // Methodos : journal. - 1957. - S. 143-182 .
  3. Fraser, AlexSimulering af genetiske systemer med automatiske digitale computere. I. Introduktion  (engelsk)  // Aust. J Biol. sci. : journal. - 1957. - Bd. 10 . - S. 484-491 .
  4. Fraser, Alex; Donald Burnell. Computermodeller i genetik  (neopr.) . - New York: McGraw-Hill Education , 1970. - ISBN 0-07-021904-4 .
  5. Crosby, Jack L. Computersimulering i genetik  (ubestemt) . - London: John Wiley & Sons , 1973. - ISBN 0-471-18880-8 .
  6. 27.02.96 - UC Berkeleys Hans Bremermann, professor emeritus og pioner inden for matematisk biologi, er død i en alder af 69 år . Hentet 17. maj 2012. Arkiveret fra originalen 23. marts 2012.
  7. Fogel, David B. (redaktør). Evolutionær beregning: The Fossil Record  (engelsk) . - New York: Institute of Electrical and Electronics Engineers , 1998. - ISBN 0-7803-3481-7 .
  8. Barricelli, Nils Aall. Numerisk test af evolutionsteorier. Del II. Foreløbige test af ydeevne, symbiogenese og terrestrisk liv  (engelsk)  // Acta Biotheoretica : journal. - 1963. - Nej. 16 . - S. 99-126 .
  9. Rechenberg, Ingo. Evolutionsstrategi  (neopr.) . - Stuttgart: Holzmann-Froboog, 1973. - ISBN 3-7728-0373-3 .
  10. Schwefel, Hans-Paul. Numerische Optimering von Computer-Modellen (PhD-afhandling)  (tysk) . - 1974.
  11. Schwefel, Hans-Paul. Numerisk optimering af computermodeller med Evolutionsstrategie : mit ener vergleichenden Einführung in die Hill-Climbing- og Zufallsstrategie  (tysk) . — Basel; Stuttgart: Birkhauser, 1977. - ISBN 3-7643-0876-1 .
  12. Schwefel, Hans-Paul. Numerisk optimering af computermodeller (Oversættelse af 1977 Numerische Optimierung von Computor-Modellen mittels der Evolutionsstrategie  (engelsk) . - Chichester; New York: Wiley, 1981. - ISBN 0-471-09988-0 .
  13. JH Holland. Tilpasning i naturlige og kunstige systemer. University of Michigan Press, Ann Arbor, 1975.
  14. Markoff, John . Hvad er det bedste svar? Det er Survival of the Fittest , New York Times (29. august 1990). Arkiveret fra originalen den 2. december 2010. Hentet 9. august 2009.
  15. Melanie Mitchell. En introduktion til genetiske algoritmer . - MIT Press, 1998. - S. 167. - 226 s. — ISBN 9780262631853 . Arkiveret 1. november 2018 på Wayback Machine
  16. Wolpert, DH, Macready, WG, 1995. Ingen gratis frokostsætninger til optimering. Santa Fe Institute, SFI-TR-05-010, Santa Fe.
  17. Steven S. Skiena. Algorithm Design Manual. anden version. Springer, 2008.

Bøger

  • Simon D. Algoritmer til evolutionær optimering. — M. : DMK Press, 2020. — 940 s. - ISBN 978-5-97060-812-8 .
  • Emelyanov VV, Kureichik VV, Kureichik VM Teori og praksis for evolutionær modellering. - M. : Fizmatlit, 2003. - 432 s. — ISBN 5-9221-0337-7 .
  • Kureichik V. M., Lebedev B. K., Lebedev O. K. Søgetilpasning : teori og praksis. - M. : Fizmatlit, 2006. - 272 s. — ISBN 5-9221-0749-6 .
  • Gladkov L. A., Kureichik V. V., Kureichik V. M. Genetiske algoritmer: Lærebog. - 2. udg. - M. : Fizmatlit, 2006. - 320 s. - ISBN 5-9221-0510-8 .
  • Gladkov L.A., Kureichik V.V., Kureichik V.M. et al. Bioinspirerede metoder til optimering: monografi. - M. : Fizmatlit, 2009. - 384 s. - ISBN 978-5-9221-1101-0 .
  • Rutkowska D., Pilinsky M., Rutkowski L. Neurale netværk, genetiske algoritmer og fuzzy systemer = Sieci neuronowe, algorytmy genetyczne og systemy rozmyte. - 2. udg. - M . : Hot line-Telecom, 2008. - 452 s. — ISBN 5-93517-103-1 .
  • Skobtsov Yu. A. Fundamentals of evolutionary computing. - Donetsk: DonNTU, 2008. - 326 s. - ISBN 978-966-377-056-6 .

Links