Genetisches Programmieren für die Generierung einer Strategie zur Lösung von Ökolopoly
|
|
- Klemens Gerstle
- vor 5 Jahren
- Abrufe
Transkript
1 Hochschule für Technik, Wirtschaft und Kultur Leipzig Fakultät Informatik, Mathematik und Naturwissenschaften Dokumentation Genetisches Programmieren für die Generierung einer Strategie zur Lösung von Ökolopoly Autor: Studiengang: Marcel Graef Medieninformatik Master Lehrveranstaltung: Evolutionäre Algorithmen WS 2012/2013 Verantwortlicher Professor: Prof. Dr. rer. nat. Karsten Weicker
2 Inhaltsverzeichnis Inhaltsverzeichnis 1 Entwurf eines Lösungskonzeptes Antlr Document Object Model (DOM) Generierung einer Strategie mit genetischer Programmierung Überblick über das Gesamtkonzept Repräsentation der Strategie im Individuum Evolutionäre Operatoren Mutation Rekombination Selektionsdruck Gütebewertung und Simulationsszenarien Konstruktion des Vorlage Individuums Optimierung und Evaluation 10 4 Resümee 15 Literatur 16 Abbildungsverzeichnis 16 Tabellenverzeichnis 17 Anhang 18 Marcel Graef i
3 1 Entwurf eines Lösungskonzeptes 1 Entwurf eines Lösungskonzeptes Ziel des Spiels Ökolopoly ist es, ein Land 30 Jahre solide zu regieren. Dazu können fünf Parameter Sanierung, Produktion, Aufklärung, Vermehrungsrate und Lebensqualität eingestellt werden. Des Weiteren kann mit einem weiteren Parameter die Aufklärung für ein Bevölkerungswachstum oder einen Bevölkerungsrückgang genutzt werden. Die Anforderung an die Lösungsstrategie ist dabei, dass sie bei sehr unterschiedlichen Ausgangsbedingungen möglichst viele Jahre das Land regieren bzw. regeln kann. Gerade hierin besteht die Schwierigkeit. Zur Lösung dieser komplexen Aufgabe wurde vom Autor die genetische Programmierung gewählt, da hierbei komplexe Regeln und Abhängigkeiten von einem Algorithmus automatisiert erzeugt werden können. Es wurden zwei verschiedene Frameworks bzw. Bibliotheken ([dom11], [ant12]) auf die Eignung untersucht. Die Wahl der beiden Bibliotheken begründet sich darin, dass sehr einfach ein abstrakter Syntaxbaum erstellt werden kann. Ein zentraler Entwurfsgedanke war, dass ausgehend von einem abstrakten Syntaxbaum sehr gut evolutionäre Operatoren implementiert werden können. Frameworks wie [epo12], [ECJ12] und [JGA12] wurden kurz gesichtet, doch wegen der Komplexität und der damit verbunden Einarbeitung nicht weiter betrachtet. 1.1 Antlr Um mit Antlr einen abstrakten Syntaxbaum von Java Quellcode zu erstellen, ist es notwendig, einen Java Lexer und einen Java Parser zu erstellen. Der Lexer und Parser wird mit java -cp antlr-3.2.jar org.antlr.tool Java.g erstellt. Die Java Grammatik wurde von 5Grammars/ heruntergeladen. Der erstellte abstrakte Syntaxbaum kann zur Laufzeit mit Hilfe der Funktionen in dem org.antlr.runtime.*-api durchlaufen und verändert werden. Es können Unterbäume ausgetauscht und neue Zufallsbäume aus anderen bestehenden Bäumen erzeugt werden. Wie ein solcher von Antlr generierter abstrakter Syntaxbaum aussieht, ist in Abbildung 1.1 auf der nächsten Seite für das Programm in Listing 1 auf der nächsten Seite dargestellt. Das Problem, das bei Verwendung von Antlr auftrat, war, dass der generierte und modifizierte abstrakte Syntaxbaum nicht mit Hilfe eines bestehenden Java Tree Parsers von 5Grammars/ in Java Quellcode kon- Marcel Graef 1
4 1 Entwurf eines Lösungskonzeptes vertiert werden konnte. Es wäre notwendig gewesen, eine Methode in JavaTreeParser.g zu implementieren, die die Token eines abstrakten Syntaxbaums zurück gibt. Aus Gründen der sehr begrenzten Zeit wurde zu der Alternative, die in Abschnitt 1.2 beschrieben ist, übergegangen. 1 package src; 2 public class Test{ 3 public int mul(int x1, int x2) { 4 return x1 x2 ; 5 } 6 } Listing 1: Java Test Programm Abb. 1.1: Dies ist der von Antlr generierte abstrakte Syntaxbaum zum Java Programm aus Listing 1 [ant12] 1.2 Document Object Model (DOM) Mit dem API aus der Bibliothek org.eclipse.jdt.core.dom.* kann wie bei Antlr ein abstrakter Syntaxbaum erstellt werden. Im Gegensatz zu Antlr ist es jedoch nicht möglich, mit getchild() über die Knoten im abstrakten Syntaxbaum zu iterieren. Stattdessen wird ein abstrakter Visitor bereitgestellt. Dieser ermöglicht jedoch nicht die Freiheitsgrade, die bei Marcel Graef 2
5 2 Generierung einer Strategie mit genetischer Programmierung Antlr sehr vorteilhaft waren. Mit dem erstellten Visitor können nur Knoten von einem ganz bestimmten Typ - beispielsweise IfStatement - besucht werden. Diese besuchten Knoten vom Typ IfStatement können in einer Liste gespeichert werden. Eine Information des Knotens über den Ort im abstrakten Syntaxbaum kann a priori nicht abgefragt werden. Da der Quellcode aber zur Verfügung gestellt wird, kann eine Methode, die den Elternknoten zurück gibt, implementiert werden. Im Rahmen der Arbeit mussten einige Anpassungen, wie beispielsweise das Setzen des Elternknotens oder das Setzen der Anweisungen eines Blockes, am Quellcode vorgenommen werden, damit die Anforderung zur genetischen Programmierung an die Bibliothek erreicht wurden. Es kann nun ein Knoten, beispielsweise vom Typ IfStatement, auswählt und über typabhängige Methoden manipuliert werden. Diese Änderungen können dann mit ASTRewrite in den abstrakten Syntaxbaum geschrieben werden, aus dem sich dann wieder Java Quellcode erzeugen lässt. Ein Nachteil dabei ist, dass ein Knotentausch nicht für alle Typen a priori möglich ist. Beispielsweise kann der Ausdruck vom Typ Expression (x1 * x2) nicht durch einen Ausdruck vom Typ IfStatement ersetzt werden. [dom11], [GB04, S ] 2 Generierung einer Strategie mit genetischer Programmierung In diesem Abschnitt werden die wesentlichen Teilkomponenten des Algorithmus zur Erstellung einer Strategie für das Spiel Ökolopoly vorgestellt und erläutert. Die grundsätzlichen Kernideen stammen dabei aus [Wei07, S ]. Nach einem Überblick über das Gesamtkonzept folgen u.a. detaillierte Informationen zu den verwendeten evolutionären Operatoren (Abschnitt 2.3 auf Seite 6), zum Selektionsdruck (Abschnitt 2.4 auf Seite 8) und zur Gütebewertung (Abschnitt 2.5 auf Seite 8). 2.1 Überblick über das Gesamtkonzept Die Abbildung 2.1 auf der nächsten Seite zeigt eine schematische Darstellung des Gesamtablaufes zur Generierung einer Strategie für das Spiel Ökolopoly. Das Ziel bei der Erstellung Marcel Graef 3
6 2 Generierung einer Strategie mit genetischer Programmierung des Programms zur Generierung einer Strategie für das Spiel Ökolopoly ist die Evaluation der Parameter, wie beispielsweise der Populationsgröße, die Erstellung der Strategie und die Simulation in einen strukturierten Ablauf zu bringen. Evaluation Anzahl der Generationen Rekombinationswahrscheinlichkeit Anzahl d. Turniere Populationsgröße Mutationswahrscheinlichkeit Genetisches Programmieren Vorlage Individuum Erstelle Population aus Vorlage Individuum Mutation Rekombination Übernahme wiederhole bis Anzahl der Generationen erreicht ist Bewerte Individuen Simulation Kompiliere den Code (verschiedene Ausgangsszenarien) q-fache Turnierselektion / Bestenselektion Wähle die Hälfte der Individuen aus Abb. 2.1: Überblick über das Gesamtkonzept Marcel Graef 4
7 2 Generierung einer Strategie mit genetischer Programmierung Die Evaluation umfasst das Starten des Algorithmus zum Genetischen Programmieren mit bestimmten Einstellungen für Anzahl der Generationen, Rekombinationswahrscheinlichkeit, Anzahl der Turniere, Populationsgröße und Mutationswahrscheinlichkeit. Der Parameterraum ist in Tabelle 3.1 auf Seite 11 dargestellt. Für jede Parametereinstellung wird ein Eintrag in einer csv-datei gespeichert. Ein Eintrag umfasst u.a. die unter dem Bereich Evaluation in der Spalte Merkmale der Tabelle 3.4 auf Seite 13 aufgelisteten Messwerte. Das Genetische Programmieren beginnt mit dem Laden der Vorlage für das Individuum. Mit diesem Individuum wird nun eine Population definierter Größe erstellt. Ein Drittel der Population wird anschließend mit der Mutationswahrscheinlichkeit mutiert. Ein weiteres Drittel wird mit der Rekombinationswahrscheinlichkeit mit einem anderen Individuum rekombiniert und der verbleibende Rest wird in die neue Population übernommen. Nachdem die neue Population (doppelte Populationgröße) entstanden ist, werden die Individuen bewertet. Dazu wird jeweils das Individuum kompiliert und eine Simulation mit bestimmten Ausgangsszenarien durchgeführt. Der Bewertung schließt sich die Selektion an. Eine neue Generationen wird nun wieder mit Mutation, Rekombination und Übernahme erzeugt. 2.2 Repräsentation der Strategie im Individuum Für die Repräsentation der Individuen kommen mannigfaltige Möglichkeiten in Betracht. Es wurde in Erwägung gezogen, mathematische bzw. prädikatenlogische Ausdrücke mit Hilfe genetischer Programmierung zu generieren und diese dann auszuwerten. Doch hierbei besteht das Problem, dass Abfragen wie getbevoelkerung() in einer Regel nicht direkt möglich sind. Eine vollständige Integration des Individuums, welches die Strategie zur Steuerung enthält, in den Simulator wird recht einfach erreicht, indem direkt mit genetischer Programmierung Java Quellcode erzeugt wird. Des Weiteren können bei einer Java Quellcode Repräsentation alle programmiertechnischen Konstrukte genutzt werden. Es kann direkt ein neuer Ausdruck für eine If-Anweisung erzeugt werden oder es kann eine neue Anweisung erzeugt werden. Des Weiteren müssen bei der Erzeugung von Java Quellcode keine Fremdbibliotheken, wie z.b. Interpreter, für mathematische Ausdrücke im Individuum integriert werden. Die Serialisierung und Portierung ist demnach sehr gut möglich. Marcel Graef 5
8 2 Generierung einer Strategie mit genetischer Programmierung 2.3 Evolutionäre Operatoren Wie schon in Abschnitt 1.2 auf Seite 2 angedeutet, ist es mit [dom11] nicht a priori möglich, eine allgemeine Bautausch-Rekombination [Wei07, S. 148], Zufallsbaum-Mutation [Wei07, S. 150] und Baumtausch-Mutation [Wei07, S. 151] zu implementieren. Im Folgenden wurden jedoch die Kernideen von diesen Operatoren übernommen und auf die wesentlichen Typen von [dom11] übertragen. Für die Erstellung der Spielstrategie wurden die Typen: If-Anweisung Variablenname Zahl Ausdruck Anweisung Block als sehr bedeutend für das resultierende Ergebnis eingeschätzt und entsprechende Operatoren implementiert Mutation Bei den folgenden Mutationsoperatoren werden Änderungen in einem Individuum vorgenommen und ein neues Individuum wird erzeugt. Erzeuge einen Zufallsausdruck für eine If-Anweisung Dieser Operator erzeugt rekursiv einen neuen Zufallsausdruck (InfixExpression:= Expression InfixOperator Expression {InfixOperator Expression}) für eine bestehende zufällig ausgewählte If-Anweisung. Es wird zunächst der Operator (==,,,!=, &&, ) zufällig gewählt und dann der linke und rechte Operand zufällig bestimmt, wobei diese selbst wieder Ausdrücke, Zahlen ([ 10,..., 30]) oder im Quellcode vorkommende Variablen sein können. Tausche Blöcke In einem Individuum werden zwei Blöcke (Block := { Statement } ) zufällig gewählt und dann getauscht. Marcel Graef 6
9 2 Generierung einer Strategie mit genetischer Programmierung Tausche Variablenname zwei zufällig gewählt und vertauscht. Aus der Menge der Variablennamen eines Individuums werden Tausche If-Anweisung Es werden zwei If-Anweisungen (IfStatement := if ( Expression ) Statement [ else Statement]) zufällig gewählt und, falls sie disjunkt sind, getauscht. Ist eine der beiden If-Anweisungen in der anderen If-Anweisung enthalten, wird keine Änderung vorgenommen. Ersetze eine Zahl Intervall [ 10,..., 30] ersetzt. Eine Zahl wird zufällig ausgewählt und durch eine Zufallszahl aus dem Tausche einen Infix-Ausdruck Zwei Infix-Ausdrücke werden zufällig gewählt und, falls der eine Infix Ausdruck (InfixExpression) nicht in dem anderen enthalten ist, getauscht. Tausche Anweisung Es werden zwei Anweisungen (ExpressionStatement := Statement- Expression;) zufällig aus dem Individuum ausgewählt und getauscht Rekombination Bei der Rekombination werden aus zwei Individuen A und B durch die Übernahme von Quellcode aus A in B ein neues Individuum C und durch die Übernahme von Quellcode aus B in A ein neues Individuum D erzeugt. Tausche Blöcke Es wird ein Block aus Individuum A und ein Block aus Individuum B gewählt. Diese Blöcke werden getauscht und die resultierenden Individuen zurück gegeben. Tausche Variablenname gewählt und vertauscht. Je ein Variablenname aus Individuum A und B wird zufällig Tausche If-Anweisung Individuum B gewählt und getauscht. Es wird zufällig eine If-Anweisung aus Individuum A und eine aus Marcel Graef 7
10 2 Generierung einer Strategie mit genetischer Programmierung Tausche Zahl gewählt und getauscht. Zwei Zahlen - eine aus Individuum A und eine aus Individuum B - werden Tausche Anweisung Eine Anweisung aus Individuum A und ein Anweisung aus Individuum B werden zufällig gewählt und vertauscht. 2.4 Selektionsdruck Es wird für die neue Population mit den evolutionären Operatoren (siehe Abschnitt 2.3 auf Seite 6) und der Übernahme der Individuen aus der alten Population die doppelte Anzahl der Populationsgröße erzeugt, wobei die Rekombination und Mutation nur mit der Rekombinationswahrscheinlichkeit bzw. Mutationswahrscheinlichkeit durchgeführt wird. Danach wird eine q-fache Turnierselektion durchgeführt, bei der die Individuen mit den meisten Siegen übernommen werden. Es wurde auch eine Untersuchung durchgeführt, bei der eine Bestenauswahl vorgenommen wurde. 2.5 Gütebewertung und Simulationsszenarien Die Individuen, die mit Hilfe der unter Abschnitt 2.3 auf Seite 6 beschriebenen evolutionären Operatoren erzeugt wurden, werden als Datei gespeichert und zur Laufzeit kompiliert. Falls ein Individuum auf Grund von syntaktischen Fehlern nicht kompiliert werden kann, wird es mit einen Strafterm nach Gleichung 2.1 bewertet. Die Gefahr, in lokalen Optima stecken zu bleiben, besteht somit, aber durch die Turnierselektion kann es durchaus auch passieren, dass ein solches Individuum überlebt. Danach werden verschiedene Simulationen mit diesem Individuum gestartet. Für jede Simulation mit einem bestimmten Ausgangsszenario wird die erreichte Bewertung (ScoreSim) nach Gleichung 2.1 berechnet und gespeichert. Endet eine Simulation nicht bzw. nicht mit einem Rückgabewert von 0, dann wird die Simulation nach Marcel Graef 8
11 2 Generierung einer Strategie mit genetischer Programmierung 10 s abgebrochen. Das Individuum wird mit einem Strafterm nach Gleichung 2.1 bewertet. 20, kompiliert nicht feherfrei 10, Simulation endet nicht mit 0 ScoreSim := bzw. dauert länger als 10 s Rundenzahl, Rundenzahl < 30 Rundenzahl + Gesamtbilanz, sonst (2.1) Über alle Werte ScoreSim wird der Mittelwert gebildet und dem Individuum als Güte bzw. F itness zugewiesen. Aus Berechnungszeitgründen werden lediglich Ausgangsszenarien (siehe Spalte Auswahl s aus Tabelle 2.1) betrachtet. Die verschiedenen Ausgangsszenarien wurden dabei so gewählt, dass sie den Raum aller Simulationen weiträumig abdecken. Randfälle wurden ebenso wie Standardwerte ausgewählt. Diese Bewertungsfunktion wird im Folgenden mit f s (Individuum) bezeichnet. Aspekt Standard Bereich Auswahl s Auswahl e1 Auswahl e2 Aktionspunkte , 8, 11 7, 8, 9 5, 10, 12 Sanierung , 8, 14 1, 3, 5 8, 11, 14 Produktion , 12, 18 10, 12, 14 6, 19, 24 Umweltbelastung , 12, 18 11, 13, 15 5, 20, 25 Aufklärung , 10, 15 1, 4, 7 9, 14, 19 Lebensqualität , 10, 18 8, 10, 12 2, 16, 20 Vermehrungsrate , 15, 20 18, 20, 22 9, 12, 15 Bevölkerung , 21, 30 17, 21, 25 11, 30, 34 Politik , 0, 15-3, 0, 4 9, 14, 19 Tab. 2.1: Übersicht über die betrachteten Simulationszenarien Des Weiteren wurde eine zweite Bewertungsfunktion f e (Individuum) ausprobiert. f e (Individuum) berechnet die Fitness ScoreSim aus den Simulationsszenarien, die sich durch die Kombinationen aus Spalte Auswahl e1 plus den Simulationsszenarien aus der Spalte Auswahl e2 aus Tabelle 2.1 ergeben (39366 Ausgangsszenarien). Marcel Graef 9
12 3 Optimierung und Evaluation 2.6 Konstruktion des Vorlage Individuums Anders als in [Wei07, S. 151] vorgeschlagen, wird mit einem Ausgangsindividuum gearbeitet, das mit einer vielfältigen Syntax vom Autor manuell erstellt wurde. Der Grund für diese Entwurfsentscheidung liegt darin, dass es sehr schwierig ist, für Java Quellcode zufällige sowie gültige Syntaxbäume zu erzeugen. Die Vorlage des Individuums wurde mit Hilfe von Diagrammen, die die Wirkungen der Automaten aufeinander visualisieren, von Ökolopoly erstellt. Die Diagramme sind unter [Oek12] zu finden. Es wurde beim Erstellungsprozess darauf geachtet, möglichst viele strukturierte Teilbäume zu erstellen. Der Einsatz der Turnierselektion sollte in wenigen Generationen eine gewisse Vielfalt erzeugen, da bei der Selektion auch Individuen mit einer schlechten Fitness eine Chance haben, in die nächste Population übernommen zu werden. Zum Vergleich wurde auch eine reine Bestenauswahl, bei der die Populationgröße nach Verdoppelung halbiert wird, vorgenommen. Mit Hilfe der Auswertung in Abschnitt 3 kann dann eine Entscheidung getroffen werden, welcher Selektionsmechanismus besser geeignet ist. 3 Optimierung und Evaluation In diesem Abschnitt 3 wird die Frage beantwortet, welche optimalen Einstellungen (Anzahl der Generationen, Populationgröße usw.) gefunden werden konnten. Des Weiteren wird das beste Individuum bestimmt bzw. gewählt. Die Optimierung des Algorithmus zur Erstellung einer Spielstrategie wurde mit den in der Tabelle 3.1 auf der nächsten Seite aufgelisteten Parametereinstellungen vorgenommen. Da die Kompilations- und Ausführungszeit sehr lange dauert, wurde das Optimierungspotential nur teilweise genutzt. Die unter Abschnitt 2.3 beschriebenen Operatoren könnten beispielsweise noch mit gewichteten Wahrscheinlichkeiten ausgeführt werden. Des Weiteren könnte noch untersucht werden, ob bei einigen Operatoren eine mehrfache Hintereinanderausführung eine Verbesserung der Qualität erzielen könnte. Diese Untersuchungen waren leider in der Bearbeitungszeit nicht möglich. Die Auswahl einiger guter Parametereinstellungen für den Algorithmus zur Generierung einer Strategie mit genetischer Programmierung wurde anhand des Mittelwertes bzw. des besten Wertes der Fitness in der letzten Generation durchgeführt. Eine mehrfache Ausführung der Marcel Graef 10
13 3 Optimierung und Evaluation Parameter Wertebereich Rekombinationswahrscheinlichkeit 0,2;0,4;...;1,0 Mutationswahrscheinlichkeit 0,4;0,6;...;1,0 Anz. Generationen 20, 150, 500, 1000* Populationsgröße 10,20,80,150,300*,500* Turnierselektion ja/nein Turniergröße 2,4,8,16,32 Bestenselektion ja/nein Bewertungsfunktion f s (Ind.)/f e (Ind.) Tab. 3.1: Parametereinstellungen für die Optimierung des Algorithmus zur genetischen Programmierung. Die Ergebnisse zu den Parameterkombinationen, die sich aus den mit * gekennzeichneten Werten ergeben, lagen bei der Abgabe dieser Arbeit noch nicht bzw. nicht vollständig vor. Anzahl Prozessoren 8 Prozessorname Intel R Xeon R (E5420) 64-Bit Taktfrequenz 2,50 GHz Cache je Prozessor 6144 KB Betriebssystem Linux Kernel Version fc14.x86 64 (Fedora) Java Version x86 64 (openjdk) Arbeitsspeicher 8 GB Tab. 3.2: Systeminformationen der benutzten Hardware Parametereinstellung konnte aus Zeitgründen nicht vorgenommen werden. Fünf Ergebnisse sind auszugsweise in Tabelle 3.4 dargestellt. Das favorisierte Ergebnis wurde mit * gekennzeichnet. Der Algorithmus wurde auf Computern mit den in Tabelle 3.2 aufgeführten Daten ausgeführt. Es wurden immer 8 Threads mit je einer Parametereinstellung auf dem Computer gleichzeitig ausgeführt. Darauf beziehen sich die angegebenen Zeitangaben. In jedem Durchlauf der Parametereinstellungen aus Tabelle 3.1 wurde das aktuell beste Individuum gespeichert. In dem Gütebereich von nach f s (Ind.) bzw. f e (Ind.) konnten 1052 Individuen gefunden werden. Die Fitnessfunktion f e (Ind.) wurde mit dem Ziel entworfen, besonders das Bewertungsszenario für die Abgabe der Projektaufgabe zu berücksichtigen. Es wurden bei f e (Ind.) zu gleichen Teilen ein Parameterraum in der Nähe der Standardwerte und ein Parameterraum außerhalb der Standardwerte bei der Fitnessbewertung betrachtet, während bei f s (Ind.) relativ gleichmäßig pro Aspekt drei Werte gewählt wurden und diese kombiniert wurden. Marcel Graef 11
14 3 Optimierung und Evaluation Tab. 3.3: Bereich e3 Aspekt Teil 1 Teil 2 Teil 3 Aktionspunkte 5, 8, 11 7, 8, 9 5, 10, 12 Sanierung 1, 4, 7, 10, 13 1, 3, 5 8, 11, 14 Produktion 5, 8, 11, 14, 17, 20, 23 10, 12, 14 6, 19, 24 Umweltbelastung 5, 8, 11, 14, 17, 20, 23 11, 13, 15 5, 20, 25 Aufklärung 1, 4, 7, 10, 13, 16, 19, 22, 25 1, 4, 7 9, 14, 19 Lebensqualität 5, 8, 11, 14, 17, 20 8, 10, 12 2, 16, 20 Vermehrungsrate 8, 11, 14, 17, 20 18, 20, 22 9, 12, 15 Bevölkerung 10, 13, 16, 19, 22, 25, 28, 31, 34 17, 21, 25 11, 30, 34 Politik -5, -2, 1, 4, 7, 10, 13, 16, 19-3, 0, 4 9, 14, 19 Übersicht über die betrachteten Simulationszenarien bei der Auswahl des besten Individuums 25 Zusammenhang zwichen Rundenzahl und Fitness 20 Rundenzahl Durchschnittliche Rundenzahl Bereich e3 (fs(ind)) Durchschnittliche Rundenzahl Bereich e3 (fe(ind)) Durchschnittliche Rundenzahl Bereich e1 & e2 (fe(ind)) Durchschnittliche Rundenzahl Bereich e1 & e2 (fs(ind)) Fitness Abb. 3.1: Zusammenhang zwischen Rundenzahl und Fitness Marcel Graef 12
15 3 Optimierung und Evaluation Param.-Nr. Merkmale 1* Rekombinations 0,2 0,2 0,2 0,2 0,8 -wahrscheinlichkeit Mutations- 0,8 0,6 0,6 1 0,6 -wahrscheinlichkeit Anz. Generationen Populationsgröße Bestenselektion Turnierselektion Fitnessfunktion f s f s f e f e f s ø Fitness 29,91 28,77 23,24 23,12 8,374 σ Fitness 0,059 0,060 0,021 0, ,26 beste Fitness 31,32 29,33 23,28 23,24 12,19 Gesamtzeit ø Kompilationszeit 100,81 54,80 73,16 65,74 89,74 σ Kompilationszeit 95,68 36,27 61,20 50,21 60,93 ø Ausführungszeit 1229,64 784, , ,90 21,10 σ Ausführungszeit 1209,16 758, , ,76 0,012 Tab. 3.4: Parameterauswertung des Algorithmus zur genetischen Programmierung Die besten 1052 Ergebnisse wurden nun ausgewählt, indem alle Individuen mit einer Fitness größer gleich 20, die durch den Algorithmus (siehe Abbildung 2.1 auf Seite 4) entstanden sind, durch eine weitere Simulation mit dem Parameterraum e3 aus Tabelle 3.3 auf der vorherigen Seite bewertetet wurden. Diese Simulation ist durch eine sehr große Anzahl von Ausgangsszenarien gekennzeichnet. Mit Hilfe dieser Bewertung soll ein Individuum gefunden werden, das möglichst auf vielen Ausgangsszenarien gute Ergebnisse erzielt und somit ein Allrounder gefunden wird, der auch in den Bereichen e1 und e2 gute Ergebnisse liefert. Daraus ergibt sich die Frage, welcher Zusammenhang zwischen den verschiedenen Bewertungen besteht. Es ist demnach die Frage zu beantworten, ob ein sehr guter Wert bei f s (Ind.) einen schlechten Wert bei f e (Ind.) zur Folge hat. Die Abbildung 3.1 auf der vorherigen Seite soll zu dieser Frage ein Antwort liefern. In dem Diagramm ist auf der horizontalen Achse die Fitness dargestellt, die das Individuum mit Hilfe der genetischen Programmierung erreicht hat. Auf der vertikalen Achse ist die erreichte Rundenzahl bei den Simulationsszenarien e3 dargestellt. Die hellgrüne Punktwolke gibt visuell einen starken Zusammenhang zwischen Fitness und Rundenzahl wider, da die Simu- Marcel Graef 13
16 3 Optimierung und Evaluation Eval.-Nr. Merkmale 1* Param.-Nr Rundenzahl mit Parameterraum aus Tabelle 3.3 ø Rundenzahl 20,14 20,08 20,08 20,06 σ Rundenzahl 12,03 12,01 12,02 12,02 Minimum Rundenzahl Maximum Rundenzahl Gesamtbilanz mit Parameterraum aus Tabelle 3.3 ø Gesamtbilanz 14,26 14,34 14,31 14,25 σ Gesamtbilanz 11,70 11,76 11,70 11,73 Minimum Gesamtbilanz -82,5-82,5-82,5-82,5 Maximum Gesamtbilanz Tab. 3.5: Übersicht über die vier besten Individuen lationsszenarien gleich sind. Im Weiteren sind im Wesentlichen die blauen Punktwolken von Interesse. Bei allen Punktwolken fällt auf, abgesehen von wenigen Ausreißern, dass sie mehr oder weniger in Richtung der Hauptdiagonalen verlaufen. Das heißt, dass eine hohe Fitness bei f s (Ind.) bzw. f e (Ind.) in einem gewissen Band auch zu einer hohen Rundenzahl führt. Es gibt dabei durchaus Schwankungen, die bei der dunkelblauen Punktwolke deutlich werden. Aber dieses Band, in dem die Werte zu Großteil liegen, beträgt ca. 7,5 Runden. Da der Bereich e3 sowohl Standardwerte, Extremwerte und gleichverteilte Werte für Ausgangsszenarien beinhaltet, wird es das Ziel sein, ein Individuum aus den blauen Punktwolken rechts oben im Diagramm auszuwählen. In Tabelle 3.5 sind die besten vier Ergebnisse aufgelistet. Für diese in Tabelle 3.5 aufgeführten vier besten Ergebnisse wurden die Fitnesswerte für den Parameterraum, der sich durch Fitnessfunktion und der damit verbundenen Bereiche aus Tabelle 2.1 ergibt berechnet. Auffallend ist, dass unter den vier besten Ergebnissen keines mit einer Turnierselektion entstanden ist. Dies könnte unter Umständen daran liegen, dass gerade in den ersten Generationen die Auswahl zu zufällig vorgenommen wurde. In Tabelle 3.5 sind die Ergebnisse der Simulationsszenarien (e3) aus Tabelle 3.3 unter Rundenzahl bzw. Gesamtbilanz mit Parameterraum aus Tabelle 3.3 dargestellt. Das Ergebnis * mit der Nr. 1 ist als bestes Individuum ausgewählt worden. Es erreichte bezüglich der Marcel Graef 14
17 4 Resümee Rundenzahl und des Parameterraums e3 einen Mittelwert von 20,14 und eine Standardabweichung von 12,03. Bei diesem Individuum ist f s (Ind.) = 31, Resümee Aufgrund der sehr begrenzten Zeit wurde die Repräsentation der Strategie auf Java festgelegt und anschließend nicht in Frage gestellt. Es sind hier durchaus andere Ansätze - z.b. LIPS-Ausdrücke oder prädikatenlogische Ausdrücke - möglich. In dieser Arbeit wurden zwei Selektionsmechanismen untersucht, auch hier sind durchaus mehr Versuche denkbar. Es wurden zwei Bewertungsfunktionen ausprobiert und die Resultate verglichen. Die Bestenselektion hat sich bei dieser Konstruktion des Algorithmus zur genetischen Programmierung als wesentlich besser herausgestellt. Die Mutations- und Rekombinationsoperatoren wurden aus Zeitgründen nicht evaluiert. Es kann daher keine Schlussfolgerung bezüglich der Wirksamkeit der einzelnen Operatoren gemacht werden. Im Nachhinein hätte dies evtl. in kleinen Untersuchungen zunächst evaluiert werden sollen. Wie schon in Abschnitt 2.3 angerissen, ist die Erreichbarkeit aller Punkte im Suchraum nicht gegeben. Die Ursache liegt hier in der verwendeten Bibliothek und dem damit verbundenen Implementationsaufwand. Die Erzeugung beliebiger Anweisungen, Schleifen und anderer Strukturen wäre durchaus sinnvoll und würde vermutlich zu besseren Ergebnissen führen. Spezielle Bibliotheken zur genetischen Programmierung wie [epo12], [JGA12], [ECJ12] bieten einen großen Funktionsumfang und könnten evtl. einige aufgetretene Probleme lösen. Evtl. sind sogar wesentlich bessere Ergebnisse in einer kürzeren Zeit möglich. Dennoch wurde in dieser Arbeit gezeigt, dass mit relativ wenig Operatoren recht passable Ergebnisse erreicht werden können. Eine durchschnittliche Rundenzahl von 20,14 ist bei den wenigen evolutionären Operatoren und Versuchen ein passables Ergebnis. Gemäß des Trends wäre vermutlich bei 1000 Generation noch ein besseres Individuum entstanden. Marcel Graef 15
18 Literatur Literatur [ant12] ANTLR team: ANTLRv3. Version: aufgerufen: [dom11] IBM Corporation and others: Package org.eclipse.jdt.core.dom. http: //help.eclipse.org/indigo/topic/org.eclipse.jdt.doc.isv/reference/ api/org/eclipse/jdt/core/dom/package-summary.html. Version: aufgerufen: [ECJ12] Sean Luke AND et al.: ECJ 20 A Java-based Evolutionary Computation Research System. eclab/projects/ecj/. Version: aufgerufen: [epo12] EpochX: EpochX. Version: aufgerufen: [GB04] Gamma, E. ; Beck, K.: Contributing to Eclipse: principles, patterns, and plug-ins. Addison-Wesley Professional, 2004 [JGA12] Klaus Meffert: Java Genetic Algorithms Package. net/. Version: aufgerufen: [Oek12] Wikimedia Foundation Inc.: Ökolopoly. 96kolopoly. Version: aufgerufen: [Wei07] Weicker, K.: Evolutionäre Algorithmen. Vieweg+ Teubner Verlag, 2007 Abbildungsverzeichnis 1.1 Dies ist der von Antlr generierte abstrakte Syntaxbaum zum Java Programm aus Listing Überblick über das Gesamtkonzept Zusammenhang zwischen Rundenzahl und Fitness Marcel Graef 16
19 Tabellenverzeichnis.1 Güteverlauf der Individuen, die eine Fitness größer gleich 20 nach der Fitnessfunktion f s (Ind.) aufweisen. Das Diagramm zeigt, dass ein Individuum, das eine hohe Fitness hat, auch im Mittel auf verschiedene Ausgangssituationen ([e1 & e2] sowie [e3]) eine höhere Rundenzahl erreicht als ein Individuum, welches eine niedrige Fitness aufweist Güteverlauf der Individuen, die eine Fitness größer gleich 20 nach der Fitnessfunktion f e (Ind.) aufweisen. Das Diagramm zeigt, dass ein Individuum, das ein hohe Fitness hat, auch im Mittel auf verschiedene Ausgangssituationen ([e1 & e2] sowie [e3]) eine höhere Rundenzahl erreicht als ein Individuum, welches eine niedrige Fitness aufweist Tabellenverzeichnis 2.1 Übersicht über die betrachteten Simulationszenarien Parametereinstellungen für die Optimierung des Algorithmus zur genetischen Programmierung. Die Ergebnisse zu den Parameterkombinationen, die sich aus den mit * gekennzeichneten Werten ergeben, lagen bei der Abgabe dieser Arbeit noch nicht bzw. nicht vollständig vor Systeminformationen der benutzten Hardware Übersicht über die betrachteten Simulationszenarien bei der Auswahl des besten Individuums Parameterauswertung des Algorithmus zur genetischen Programmierung Übersicht über die vier besten Individuen Marcel Graef 17
20 Anhang Anhang Mittelwert von blau & grün Durchschnittliche Rundenzahl Bereich e3 (fs(ind)) 35 Fitness Individuen Durchschnittliche Rundenzahl Bereich e1 & e2 (fs(ind)) Güte Abb..1: Güteverlauf der Individuen, die eine Fitness größer gleich 20 nach der Fitnessfunktion f s (Ind.) aufweisen. Das Diagramm zeigt, dass ein Individuum, das eine hohe Fitness hat, auch im Mittel auf verschiedene Ausgangssituationen ([e1 & e2] sowie [e3]) eine höhere Rundenzahl erreicht als ein Individuum, welches eine niedrige Fitness aufweist. Marcel Graef 18
21 Anhang Individuen Mittelwert von blau & grün Durchschnittliche Rundenzahl Bereich e3 (fe(ind)) Fitness Durchschnittliche Rundenzahl Bereich e1 & e2 (fe(ind)) Güte Abb..2: Güteverlauf der Individuen, die eine Fitness größer gleich 20 nach der Fitnessfunktion f e (Ind.) aufweisen. Das Diagramm zeigt, dass ein Individuum, das ein hohe Fitness hat, auch im Mittel auf verschiedene Ausgangssituationen ([e1 & e2] sowie [e3]) eine höhere Rundenzahl erreicht als ein Individuum, welches eine niedrige Fitness aufweist. Marcel Graef 19
Survival of the Fittest Optimierung mittels Genetischer Algorithmen
Übung zu Organic Computing Survival of the Fittest Optimierung mittels Genetischer Algorithmen Sabine Helwig Lehrstuhl für Informatik 12 (Hardware-Software-Co-Design) Universität Erlangen-Nürnberg sabine.helwig@informatik.uni-erlangen.de
MehrBetriebliche Optimierung
Betriebliche Optimierung Joachim Schauer Institut für Statistik und OR Uni Graz Joachim Schauer ( Institut für Statistik und OR Uni Graz Betriebliche ) Optimierung 1 / 19 1 Joachim Schauer ( Institut für
MehrAdaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff
Adaptive Systeme Evolutionäre Algorithmen: Überlebenskampf und Evolutionäre Strategien Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff Überblick Einleitung Adaptive Filter Künstliche
MehrDas diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser
Mehr1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
Mehr2.2 Syntax, Semantik und Simulation
2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?
MehrSynthese Eingebetteter Systeme. Übung 6
12 Synthese Eingebetteter Systeme Sommersemester 2011 Übung 6 Michael Engel Informatik 12 TU Dortmund 2011/07/15 Übung 6 Evolutionäre Algorithmen Simulated Annealing - 2 - Erklären Sie folgende Begriffe
Mehr10. Vorlesung Stochastische Optimierung
Soft Control (AT 3, RMA) 10. Vorlesung Stochastische Optimierung Genetische Algorithmen 10. Vorlesung im Aufbau der Vorlesung 1. Einführung Soft Control: Definition und Abgrenzung, Grundlagen "intelligenter"
Mehr30. Parser-Generatoren
30. Parser-Generatoren Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden http://st.inf.tu-dresden.de Version 11-0.1,
MehrBetriebliche Optimierung
Betriebliche Optimierung Joachim Schauer Joachim Schauer Betriebliche Optimierung 1 / 31 1 Metaheuristische Verfahren 2 Joachim Schauer Betriebliche Optimierung 2 / 31 Einleitendes Metaheuristische Verfahren
MehrGP-Music: An Interactive Genetic Programming System for Music Generation with Automated Fitness
GP-Music: An Interactive Genetic Programming System for Music Generation with Automated Fitness Raters Brad Johanson, Riccardo Poli Seminarvortrag von Thomas Arnold G ˇ ˇ ˇ ˇ WS 2012/13 TU Darmstadt Seminar
MehrAdaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff
Adaptive Systeme Evolutionäre Algorithmen Teil II Evolutionsfenster durch Mutation und sexuelle Rekombination Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff Evolutionäre Algorithmen
MehrErfolgversprechende Konfigurationen für Versuche mit Evolutionsstrategien anhand von ausgewählten Testfunktionen
Erfolgversprechende Konfigurationen für Versuche mit Evolutionsstrategien anhand von ausgewählten Testfunktionen Krischan Keitsch 3. Juni 214 Zusammenfassung Um ein Optimierungsproblem mit einer Evolutionsstrategie
MehrGeneral Video Game AI Competition 2016
General Video Game AI Competition 2016 BFS, MCTS und GA - Einführung Miriam Moneke, Nils Schröder, Tobias Joppen Christan Wirth, Prof. J. Fürnkranz 27.04.2016 Fachbereich Informatik Knowledge Engineering
MehrPraktikum Softwareanalyse und -transformation
Praktikum Softwareanalyse und -transformation Thilo Mende Universität Bremen Fachbereich 3 Mathematik und Informatik Arbeitsgruppe Softwaretechnik http://www.informatik.uni-bremen/st Sommersemester 2009
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrHauptseminar Repräsentationen für Optimierungsalgorithmen
Stefan Bens Hauptseminar Dresden, 03.07.2008 Inhalt 1. Motivation 2. Einleitung 3. Repräsentationsarten und Eigenschaften 4. Beispiel 5. Zusammenfassung Folie 2 Als Repräsentation bezeichnet man die Kodierung
MehrSeminar Verkehrsinformatik Offline-Optimierung der Lichtsignal-Koordinierung mittels genetischer Algorithmen
Fachhochschule Wedel - SS 2006 Seminar Verkehrsinformatik Offline-Optimierung der Lichtsignal-Koordinierung mittels genetischer Algorithmen Marco Lehmann (wi5909) m@rco-l.de 3. Juli 2006 Gliederung 1.
MehrObjektorientierte Programmierung mit C++ (WS 2016/2017)
Institut für Numerische Mathematik Dr. Andreas F. Borchert und Dr. Michael C. Lehn 26. Januar 2017 Blatt 12 Objektorientierte Programmierung mit C++ (WS 2016/2017) Abgabe bis zum 2. Februar 2017, 16:00
MehrEvolutionäre Algorithmen
Karsten Weicker Evolutionäre Algorithmen 2., überarbeitete und erweiterte Auflage m Teubner Inhaltsverzeichnis 1 Natürliche Evolution 1 1.1 Entwicklung der evolutionären Mechanismen 2 1.2 Evolutionsfaktoren
MehrAlgorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrAnwendung genetischer Algorithmen zur Lösung des n Dame Problems und zur Optimierung von Autoprofilen
Anwendung genetischer Algorithmen zur Lösung des n Dame Problems und zur Optimierung von Autoprofilen Jana Müller Seminar Das Virtuelle Labor Otto von Guericke Universität Magdeburg Gliederung 1. Motivation
MehrEinführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich
06.07.2006 Gliederung 1 2 3 4 . Autor und Name Features Autor Autor und Name Features Autor: Étienne Gagnon : Teil seiner Masterarbeit an der McGill-Universität Montreal vom März 1998 Name Autor und Name
MehrConstraint-basierte Planung und Optimierung von Prüfungsterminen mithilfe einer graphischen Benutzeroberfläche
Douglas Cunningham,Petra Hofstedt, Klaus Meer, IngoSchmitt (Hrsg.): INFORMATIK 2015 LectureNotes in Informatics (LNI), Gesellschaft für Informatik, Bonn 2015 Constraint-basierte Planung und Optimierung
MehrEinführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen
Einführung in die Methoden der Künstlichen Intelligenz Evolutionäre Algorithmen Dr. David Sabel WS 2012/13 Stand der Folien: 12. November 2012 Evolutionäre / Genetische Algorithmen Anwendungsbereich: Optimierung
MehrProgrammieren in Java
Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 6. März 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrWiederholungsklausur "ADP" WS 2016/2017
PD Dr. J. Reischer 23.02.2017 Wiederholungsklausur "ADP" WS 2016/2017 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes
MehrEin kleiner Blick auf die generische Programmierung
TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen
MehrInstitut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März
MehrKodierung Genetische Algorithmen und Simulated Annealing
Kodierung Genetische Algorithmen und Simulated Annealing Referenten Dipl.-Ing. (FH) Dipl.-Ing. (FH) 1 Agenda Erklärung des Genetischen Algorithmus f(x)=x² (2-dimensional) Verschiedene Codierungen Binärcode,
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 12. März 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrJava: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
MehrSTACK Mathematische Aufgaben mit ILIAS testen (Ein Frage-Typ im ILIAS-Objekt Test)
STACK Mathematische Aufgaben mit ILIAS testen (Ein Frage-Typ im ILIAS-Objekt Test) Inhalt: Einleitung Vorteile von STACK-Fragen Beispielaufgabe Generierung einer Zufallsfrage 1. Einleitung Der elektronische
MehrDynamisches Huffman-Verfahren
Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über
MehrPrüfungsrelevante Studienleistung Logische Programmierung (Sommer 2006) Magische Quadrate. Patricia Röschke (46016) Martin Grandrath (46375)
Prüfungsrelevante Studienleistung Logische Programmierung (Sommer 2006) Magische Quadrate Patricia Röschke (46016) Martin Grandrath (46375) 31. Oktober 2006 Inhalt 1 Aufgabenstellung 2 2 Erläuterung der
MehrImplementation und Evaluierung innovativer Heuristiken für die Anordnung von Entwurfsentscheidungen
Implementation und Evaluierung innovativer Heuristiken für die Anordnung von Entwurfsentscheidungen Diplomarbeit Thomas Scharler Universität Hamburg, FB Informatik, AB Tech Implementation und Evaluierung
MehrInstitut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar
MehrEinführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen
Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 8 Besprechung: 11. 15.12.2017 (KW 50) Vorbereitende
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 17. Februar 2018 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
Mehr13. Bäume: effektives Suchen und Sortieren
13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:
MehrGenetische Algorithmen
Genetische Algorithmen Shawn Keen Zusammenfassung Eine weitere Herangehensweise an das maschinelle Lernen ist die Nachahmung evolutionärer Prozesse. Hier wollen wir uns mit den sogenannten Genetischen
MehrDefinition Compiler. Bekannte Compiler
Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung
MehrEvolutionäre / Genetische Algorithmen. Einführung in die Methoden der Künstlichen Intelligenz. Evolutionäre / Genetische Algorithmen (2) Beispiel
Evolutionäre / Genetische Algorithmen Einführung in die Methoden der Künstlichen Intelligenz PD Dr. David Sabel SoSe 0 Anwendungsbereich: Optimierung von Objekten mit komplexer Beschreibung Objekte: Üblicherweise
Mehr13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
MehrDefinition von domänenspezifischen Sprachen mit Xtext: Einführung
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 28. November 2012 Taentzer Modellgetriebene Softwareentwicklung 246 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen
MehrParsing SystemVerilog 2012
Parsing Julian Nagel Lehrstuhl für Rechnerarchitektur Universität Heidelberg 06.07.2016 1 2 3 Inhaltsverzeichnis 4 5 6 Viele Ideen dazu wie effektiv Hardware entwickelt werden kann, aber keine IDE welche
MehrInterpreter - Gliederung
Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache
MehrFakultät IV Elektrotechnik/Informatik
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrOptimale Produktliniengestaltung mit Genetischen Algorithmen
Optimale Produktliniengestaltung mit Genetischen Algorithmen 1 Einleitung 2 Produktlinienoptimierung 3 Genetische Algorithmen 4 Anwendung 5 Fazit Seite 1 Optimale Produktliniengestaltung mit Genetischen
Mehr1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:
MehrEINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrInformatiCup 2009 EvolutionConsole
InformatiCup 2009 EvolutionConsole Wilhelm Büchner Hochschule 19. März 2010 1 1. Das Team Teammitglieder Ralf Defrancesco KION Information Services GmbH Systemadministrator Daniel Herken Scooter Attack
MehrAnleitung zum Applet
Anleitung zum Applet Vertrauensbereich für den Mittelwert bearbeitet von: WS 2004/2005 E/TI-7 betreut von: Prof. Dr. Wilhelm Kleppmann Inhaltsverzeichnis 1 Vorwort...3 2 Graphische Benutzeroberfläche...4
MehrGenetische Algorithmen
Genetische Algorithmen Prof. Dr. Ottmar Beucher Dezember 2001 Genetische Algorithmen 1 Optimierungsaufgaben Ein einfaches Beispiel Prinzipielle Formulierung Lösungsansätze Genetische Algorithmen Anwendungen
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 7. September 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrStratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:
Stratego/XT und ASF+SDF Meta-Environment Paul Weder Seminar Transformationen Datum: 20.01.2006 Gliederung Allgemeines ASF+SDF Meta-Environment Stratego/XT Zusammenfassung/Vergleich SDF (Syntax Definition
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
MehrProgrammiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
MehrLösungshinweise/-vorschläge zum Übungsblatt 2: Grundlagen der Programmierung (WS 2018/19)
Prof. Dr. Ralf Hinze Sebastian Schweizer, M.Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Programmiersprachen Lösungshinweise/-vorschläge zum Übungsblatt 2: Grundlagen der Programmierung
MehrDefinitionen/Vorarbeit zum Thema Java
Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript
MehrInformatik II Übung, Woche 10
Giuseppe Accaputo 10. März, 2016 Plan für heute 1. Typumwandlung (Typecasts) 2. Ordnerstruktur für Übungen 3. Vorbesprechung Übung 3 4. Nachbesprechung Übung 2 (inkl. Live Programmierung) Informatik II
MehrGenetische und Evolutionäre Algorithmen (Vol. 2)
Vortrag über Genetische und Evolutionäre Algorithmen (Vol. 2) von Adam El Sayed Auf und Kai Lienemann Gliederung: 4) Rückblick 5) Allgemeine Einführung 6) Genauere Beschreibung von Evolutionären Strategien
MehrGenetische Programmierung
15. Juli 2007 Anfang der 90er von John R. Koza entwickelt. Verfahren zur automatisierten Erstellung von Programmen. Von der Evolution inspiriert. Anforderungen an die Möglichst korrekte Lösung ergeben
Mehr1. Klausur - Probeklausur
EI Info J2 2011-12 INFORMATIK 1. Klausur - Probeklausur Vorgeschlagene Bearbeitungszeit: 60 Minuten. In der Klausur wird es möglich sein, eine (zwei für Neue ) Teilaufgaben zu streichen! Hier sind mehr
MehrProgrammiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrProgrammierung für Mathematik HS11
software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren
MehrAlgorithmen auf Sequenzen
Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 4 Reguläre Ausdrücke Webseite zur Vorlesung http://ls11-www.cs.tu-dortmund.de/people/rahmann/teaching/ss2008/algorithmenaufsequenzen
MehrEine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate
COMA Eine Einführung Quellcode: Anweisung(en)1 Wiederhole: T.Bosse Anweisung(en) 2 Einfache Schleifen (z.b. for-loop) Wiederhole: Falls (Bedingung) wahr, tue: Anweisung(en) 2 sonst führe Verzweigungen
MehrOptimierung auf rekonfigurierbaren Rechensystemen
Optimierung auf rekonfigurierbaren Rechensystemen Evolution in dynamisch rekonfigurierbarer Hardware Peter Bungert Hartmut Schmeck Institut für Angewandte Informatik und Formale Bescheibungsverfahren (AIFB)
Mehrb) Nennen Sie vier hinreichende Bedingungen für Evolution. b) Anzahl fortlaufender Einsen von rechts. c) Sind in a) oder b) Plateaus enthalten?
Übungsblatt LV Künstliche Intelligenz, Evolutionäre Algorithmen (), 204 Exercise. Evolution a) Finden Sie zwei Evolutionsbeispiele auÿerhalb der Biologie. Identizieren Sie jeweils Genotyp, Phänotyp, genetische
MehrEINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrAllgemeine Informatik 2 im SS 2007 Programmierprojekt
v05 30.06.2007 Technische Universität Darmstadt Fachbereich Informatik Prof. Dr. Johannes Fürnkranz Allgemeine Informatik 2 im SS 2007 Programmierprojekt Bearbeitungszeit: 04.06. bis 13.07.2007 Die Formalitäten
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrB6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden
Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren
MehrKünstliche Intelligenz - Optimierungsprobleme - Suche in Spielbäumen
Künstliche Intelligenz - Optimierungsprobleme - Suche in Spielbäumen Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Optimierungsprobleme
MehrVerybench: grafisches Frontend für Testwell CMT++ Code Complexity Measures Tool
Verybench: grafisches Frontend für Testwell CMT++ Code Complexity Measures Tool Testwell CMT++ ist ein von der finnischen Firma Testwell Oy (www.testwell.fi) entwickeltes konsolenbasiertes Werkzeug zur
MehrOptimierung und Entwurf mit Evolutionären Algorithmen
Fakultät Informatik, Institut für Angewandte Informatik, Lehrstuhl für Technische Informationssysteme Optimierung und Entwurf mit Evolutionären Algorithmen Dresden, 01.02.2007 Gliederung natürliche Evolution
MehrEinführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen
Einführung in die Methoden der Künstlichen Intelligenz Prof. Dr. Manfred Schmidt-Schauß SoSe 2018 Stand der Folien: 9. Mai 2018 Evolutionäre / Genetische Algorithmen Anwendungsbereich: Optimierung von
MehrProgrammieren lernen mit Perl
Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 14. März 2016 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrDas Problem des Handlungsreisenden
Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme
MehrInhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.
1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Beispiele für Algorithmen Im folgenden Abschnitt sollen ausgewählte
Mehr