Een Genetisch Algoritme
Genetisch Algoritme
Hans de Jong
Op dit gedeelte van m'n blog (Genetics) ga ik een GA, Genetisch Algoritme, bespreken.Hans de Jong
Waarschuwing Zoals je waarschijnlijk al hebt gemerkt is dit blog op datum geordend. Bij dit gedeelte wil ik daarmee smokkelen, zodat het een doorlopend verhaal wordt. De datums worden zo aangepast, waarschijnlijk naar het begin van het lopende jaar, dat ze in een opeenvolgende en logische manier verschijnen. |
Ik heb het al eens in Java geschreven, als een aantal gekoppelde projecten. Ik wil de programma's nu deels omwerken naar Scala. Het gaat me daarbij om zowel technische aspecten als biologische.
Technische aspecten:
"Vroeger" waren kleine Java programma's die op een website konden draaien ("applets") populair. Je kon er ideeën en creatieve uitingen op een laagdrempelige manier in een browser mee tonen. Vanwege security-redenenen is die mogelijkheid praktisch de nek omgedraaid.Scala, een soort Java-on-steroids, heeft de mogelijkheid om gecompileerd te worden naar JavaScript (Scala.js), en daarmee om in een browser te draaien. Meestal kunnen Java en Scala-code worden gecombineerd binnen één programma, maar voor Scala.js geldt dat niet: alle code moet dus Scala worden.
Van dat proces, voor mij de eerste keer, wil ik wat aspecten beschrijven. Voor de details verwijs ik naar repositories die op github worden geplaatst.
Biologische aspecten:
Ik wil met het programma zo dicht mogelijk bij de natuur blijven. DNA is dus gewoon ACTG, en niet code bestaande uit nullen en enen of zelfs direct gecodeerde fenotypische eigenschappen.Het is bedoeld als een proof-of-concept (van GA's en evolutie). Praktische toepasbaarheid en efficiëntie staan dus niet voorop, maar begrip.
Wel zal het programma brede toepasbaarheid als uitgangspunt hebben (door een in XML-schema (of misschien toch JSON?) te definiëren oplossingsruimte). Net als natuurlijk DNA kan computer-DNA zo voor de vreemdste eigenschappen coderen.
De Scala-versie van het programma bestaat nog niet. Er zullen dus in de loop van de tijd stukken worden toegevoegd die verslag doen van stappen op weg naar het hogere doel, een GA in de browser.