Genetisk algoritme Programmerer får funksjoner
[Kory] har skrevet genetiske algoritmer i noen måneder nå. Dette i seg selv er ikke noe unikt eller eksepsjonelt, bortsett fra hva han får disse genetiske algoritmer til å gjøre. [Kory] har brukt genetiske algoritmer til å skrive programmer i Brainfuck. Ja, det er en datamaskin programmering en datamaskin. Vær takknemlig Skynet er 18 år for sent.
Da vi først så [Kory ]s arbeid, hadde han programmert en datamaskin til å skrive og drive sine egne programmer i Brainfuck. Selv om navnet på språket [Kory] valgte, kunne bruke noe arbeid, er det faktisk det ideelle språket for datagenererte programmer. Med bare åtte kommandoer, som hver består av en enkelt karakter, reduserer det sterkt overhead av hva noen genetisk algoritme må produsere og hva en treningsfunksjon må evaluere.
Det var en mangel på [Kory ]s første innsats: Funksjoner. Det er relativt enkelt å få et program for å si hei verden, men å gjøre noe kompleks, vil du trenge noe som en makro eller en funksjon. Brainfuck, det er den mest enkle skjemaet, støtter ikke funksjoner. Dette kaster en skiftenøkkel i [Kory ]s plan for å få sin dataprogrammeringsdatamaskin til å vokse smartere og komme over lokale minima i sine genetiske algoritmer.
Løsningen på dette problemet var opprettelsen av en ny dialekt av hjernefuck [Kory] kaller hjerneplus. Dette tar de beste delene av utvidede hjernefuck og legger til en kommando som i utgangspunktet fungerer som en pause-setning.
Med dette kan [Kory ]s selvprogrammeringscomputer utvikle mer komplekse programmer. Allerede har det skapt et program for å generere de første få tallene til Fibonacci-sekvensen. Det går bare opp til 233 fordi 255 er den maksimale verdien for en byte, og programmet selv tok syv timer for å generere. Det fungerer imidlertid. Andre programmer som genereres med de nye hjerneplysfunksjonene, inkluderer resiting 99 flasker på veggen og et program som multipliserer to verdier.
Selv om [Kory] ‘s datamaskin bruker lang tid å generere disse programmene, gitt nok tid, er det egentlig ikke mye dette programmet ikke kan gjøre. Brainfuck, og [Kory ]s hjerneplus, er turing komplett, slik at gitt uendelig minne og tid kan det beregne noe. Med det nye tillegget av funksjoner kan det beregne noe raskere.
All koden for [Kyle] ‘s GA er tilgjengelig på GitHub.