Ist es notwendig, Ganzzahlen in einem genetischen Algorithmus Bits zuzuordnen?


8

Nach dem, was ich gelesen habe, werden genetische Algorithmen normalerweise (immer?) Auf Chromosomen von Bits angewendet. Wenn ein Problem darin besteht, eine Funktion zu maximieren, die ganzzahlige Werte annimmt, werden die ganzen Zahlen zuerst als Bits codiert.

Ist diese Zuordnung notwendig? Es scheint, dass Sie Chromosomen von ganzen Zahlen nehmen und Crossover und Mutation direkt anwenden könnten. Wenn ich also eine Funktion habe, die 35 Ganzzahl-Eingaben akzeptiert, kann ich die genetischen Operatoren einfach auf diese Ganzzahlen anwenden und nicht auf die 35xB-Bits (wobei B die Anzahl der Bits ist, die zum Codieren einer Ganzzahl benötigt werden). Gibt es einen Grund, warum dies nicht getan wird?

Vielleicht würde der Algorithmus darunter leiden, weil das Problem gröber definiert ist (das heißt, ein Problem kann mit kürzeren Chromosomen definiert werden, wenn wir keine Bits verwenden), aber ich bin gespannt, ob jemand eine bessere Antwort hat.


1
Ich habe keine Kenntnis von der Problemdomäne, in der Sie sich befinden, aber intuitiv erscheint es in diesem Zusammenhang nützlich und potenziell vorteilhaft, sich direkt mit der Sprache des Computers zu befassen, anstatt mit numerischen Proxys wie ganzzahligen Werten. Wenn der Umgang mit ganzen Zahlen jedoch bequemer ist, tun Sie dies auf jeden Fall. Neuronale Netze verarbeiten häufig Gleitkommazahlen, obwohl die binäre Architektur erhebliche Vorteile bietet.
Robert Harvey

Angesichts der Tatsache, dass DNA 2-Bit-Chunks verwendet, würde ich denken, dass die Antwort unmöglich "Nein" sein kann, zumindest soweit genetische Algorithmen die biologische Evolution modellieren.
Gort the Robot

Antworten:


9

Das Codieren der Werte als Bits ist nicht erforderlich. Schauen Sie sich das 2D-Box-Auto an (verschwenden Sie nicht zu viel Zeit damit), um ein Beispiel zu erhalten, bei dem die Frequenzweiche für ganze (Float-) Werte durchgeführt wird. Ganze 'Baugruppen' werden überkreuzt. Dies trägt zur Erkennbarkeit der Quelle bei (Teil der Ästhetik des Spiels), macht es jedoch so, dass die Variationen zwischen einem bestimmten Chromosom und seinen Eltern geringer sind.

Der Grund für die Verwendung von Bits anstelle von Ganzzahlen hängt mit dem Datenbereich zusammen, mit dem der Pool gesetzt wird. 35 Ganzzahlen bedeuten, dass eine Überkreuzung nur bei 35 Werten auftreten kann, die als ganze Werte betrachtet werden. 1120 Bit (35 * 32-Bit-Ganzzahlen) ergeben eine feinere Granularität (berücksichtigen Sie die traditionellen "genetischen Algorithmen", die an ATCG arbeiten - nicht die gesamten "Werte" von Aminosäuren oder Proteinen).

Mit Bits können Sie "sauberere" Mutationen (ein bisschen umdrehen) und eine Überkreuzung erzielen, die den oberen Teil einer Ganzzahl und den unteren Teil einer anderen Ganzzahl übernimmt. Beides trägt dazu bei, die potenzielle Vielfalt der Nachkommen zu erhöhen.

Betrachten Sie das Chromosom von nur zwei Bytes (wir machen eher Bytes als ganze Zahlen, um das Sehen zu erleichtern):

chromosome 1: 0xA3 0xB2
chromosome 2: 0x12 0x34

Eine Überkreuzung zwischen diesen beiden Chromosomen kann nur an begrenzten Stellen erfolgen. Sie werden am Ende haben mit:

chromosome 1': 0x12 0xB2
chromosome 2': 0xA3 0x34

Wenn dies stattdessen als Bits gemacht wurde:

chromosome 1: 1010001110110010
chromosome 2: 0001001000110100
                    ^   ^     

Jetzt können Sie die ^Sites für Crossover-Spenden auswählen :

chromosome 1': 1010001000110010
chromosome 2': 0001001110110100
                     ^   ^     

Dies liefert ein reichhaltigeres Modell mit mehr möglichen Variationen zwischen zwei Chromosomen.


Vielen Dank. Dies ist, was ich damit gemeint habe, dass das Problem "gröber" war, aber Sie haben eine schöne klare Antwort gegeben.
itzy

3

Solange Sie einen Crossover haben und mutieren, sind Sie im Geschäft. Der zugrunde liegende Typ spielt keine Rolle. Ich habe GAs in Diagrammstrukturen gesehen, bei denen Crossover und Mutate direkt in Diagrammen arbeiten und Knoten hinzufügen oder kombinieren.

Eigentlich codiere ich normalerweise alles in Zeichen und stelle dann Crossover und Mutation auf Byte-Ebene bereit, anstatt auf Bits. Das Hinzufügen einer Bitmaske, um es auf die Bitebene zu bringen, ist nicht schwer, aber das Leben ist einfach zu kurz.


0

In GA werden normalerweise alle Chromosomen als Bitfolgen dargestellt. Sie können Ausnahmen haben, aber vergessen wir sie vorerst.

Ein Chromosom ist eine mögliche Lösung für Ihr Problem. Wenn Ihre Lösung also eine Ganzzahl ist, muss sie eine binäre Darstellung haben, damit die genetischen Operationen funktionieren. Zum Glück, ganze Zahlen haben bereits diese binäre Darstellung (in der Tat, * sie sind nativ Bitfolgen), so eröffnen Sie bitte etwas zu tun haben, gelten nur die Betreiber über Einzelpersonen Ihrer Bevölkerung entlang des Evolutionsprozesses.


0

Die Zuordnung ist nicht erforderlich.

Die Differential Evolution (DE) ist eine sehr erfolgreiche "Teilmenge" des breiteren Raums genetischer Algorithmen.

Die erste große Änderung besteht darin, dass DE tatsächliche reelle / ganzzahlige Zahlen anstelle von Bitfolgen verwendet (normalerweise reelle Zahlen zur numerischen Optimierung, ganze Zahlen in anderen Feldern).

Auf jeden Fall ist es schön, Dinge als tatsächliche Zahlen darstellen zu können.

Dies ist eine Möglichkeit, Computerressourcen effizient zu nutzen und die Eingabe und Ausgabe für den Benutzer transparent zu machen: Parameter können als normale Zahlen eingegeben, bearbeitet und ausgegeben werden, ohne jemals als Gene mit einer anderen binären Darstellung neu formatiert zu werden.

Für das Problem der "gröberen Definition" verwendet DE modifizierte Mutations- / Crossover-Operatoren, die den Unterschied zwischen zwei oder mehr ganzzahligen / reellen Vektoren in der Population nutzen, um einen neuen Vektor zu erstellen (z. B. durch Hinzufügen eines zufälligen Anteils des Unterschieds) zu einem der vorhandenen Vektoren plus einer kleinen Menge zufälligen Rauschens).

Schema zur Erzeugung von Versuchsparametervektoren

Von der differentiellen Evolution - Ein praktischer Ansatz zur globalen Optimierung

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.