Genetiska algoritmer är en programmeringsteknik som datavetare lärt från naturen . Naturen designar vackra växter och djur lösningar på svåra problem med strikt mekaniska medel utan intelligenta riktningar . Genetiska algoritmer kan hitta den optimala svaret på svåra konstruktionsproblem när du har ingen aning om hur man ska gå vidare . De enda nödvändiga begränsningarna är att du måste ha ett optimeringsproblem och att lösningarna kan beskrivas med en rad siffror . Instruktioner
1
Design en rad siffror som beskriver en lösning på ditt problem . Designa en funktion som kan utvärdera dessa strängar , givet en sträng , kan denna funktion berätta hur bra strängen är som ett svar på ditt problem . Till exempel kan strängen vara en lista över mätningar av det inre av en raketmotor turbopump . Funktionen skulle vara en beräkning av dragkraft från en kammare med dessa mätningar . Strängen kan också vara PROCENT av vatten , sand , cement och grus som utgör en blandning av undervattenskablar betong .
2
Skriv ett datorprogram som utvecklas strängarna mot optimering . Börja med en befolkning av strängar där alla nummer i strängarna valdes slumpmässigt . En " generation " består av att utvärdera alla strängarna i " befolkningen " och kasta strängarna med de lägsta värdena . Strängarna med de högsta utvärderingarna kommer att fortsätta in i nästa generation . En slumpmässig blandning av de höga förformningskanaler strängarna kommer också att göra det till nästa generation . Några av dessa strängar kommer att ha slumpmässiga mutationer till ett av de nummer i strängen . Denna process upprepas för flera generationer. Antalet strängar i varje generation är densamma .
3
Hitta den minsta genetiska algoritmen genom att köra din lösning med ett av numren saknas. Om det finns "n" siffror i en sträng, kommer detta att innebära att köra " n" olika populationer en med varje nummer saknas. Om de kortare strängarna fortfarande har samma höga utvärdering , kör kortare och kortare populationer tills du hittar den kortaste strängen som fungerar för det specifika problemet . För det konkreta problemet , skulle detta berätta för dig om du kan lämna ut en av ingredienserna .