Genetisches Programmieren für die Generierung einer Strategie zur Lösung von Ökolopoly

Größe: px
Ab Seite anzeigen:

Download "Genetisches Programmieren für die Generierung einer Strategie zur Lösung von Ökolopoly"

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

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

Mehr

Betriebliche Optimierung

Betriebliche 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

Mehr

Adaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff

Adaptive 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

Mehr

Das 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 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

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 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

Mehr

2.2 Syntax, Semantik und Simulation

2.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?

Mehr

Synthese Eingebetteter Systeme. Übung 6

Synthese 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

Mehr

10. Vorlesung Stochastische Optimierung

10. 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"

Mehr

30. Parser-Generatoren

30. 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,

Mehr

Betriebliche Optimierung

Betriebliche Optimierung Betriebliche Optimierung Joachim Schauer Joachim Schauer Betriebliche Optimierung 1 / 31 1 Metaheuristische Verfahren 2 Joachim Schauer Betriebliche Optimierung 2 / 31 Einleitendes Metaheuristische Verfahren

Mehr

GP-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 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

Mehr

Adaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff

Adaptive 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

Mehr

Erfolgversprechende Konfigurationen für Versuche mit Evolutionsstrategien anhand von ausgewählten Testfunktionen

Erfolgversprechende 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

Mehr

General Video Game AI Competition 2016

General 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

Mehr

Praktikum Softwareanalyse und -transformation

Praktikum 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

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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

Mehr

Hauptseminar Repräsentationen für Optimierungsalgorithmen

Hauptseminar 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

Mehr

Seminar Verkehrsinformatik Offline-Optimierung der Lichtsignal-Koordinierung mittels genetischer Algorithmen

Seminar 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.

Mehr

Objektorientierte Programmierung mit C++ (WS 2016/2017)

Objektorientierte 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

Mehr

Evolutionäre Algorithmen

Evolutionä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

Mehr

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen & Datenstrukturen Midterm Test 2 Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Anwendung 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 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

Mehr

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

Einfü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

Mehr

Constraint-basierte Planung und Optimierung von Prüfungsterminen mithilfe einer graphischen Benutzeroberfläche

Constraint-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

Mehr

Einführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen

Einfü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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Elementare Konzepte von

Elementare 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)

Mehr

Javakurs für Anfänger

Javakurs 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

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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:

Mehr

Wiederholungsklausur "ADP" WS 2016/2017

Wiederholungsklausur 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

Mehr

Ein kleiner Blick auf die generische Programmierung

Ein 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

Mehr

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Institut 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

Mehr

Kodierung Genetische Algorithmen und Simulated Annealing

Kodierung 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,

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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:

Mehr

Java: Eine kurze Einführung an Beispielen

Java: 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

Mehr

STACK 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) 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

Mehr

Dynamisches Huffman-Verfahren

Dynamisches 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

Mehr

Prü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) 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

Mehr

Implementation und Evaluierung innovativer Heuristiken für die Anordnung von Entwurfsentscheidungen

Implementation 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

Mehr

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut 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

Mehr

Einfü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 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

Mehr

Praktikum 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. 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

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software 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

Ü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

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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:

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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

Mehr

13. Bäume: effektives Suchen und Sortieren

13. 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:

Mehr

Genetische Algorithmen

Genetische 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

Mehr

Definition Compiler. Bekannte Compiler

Definition 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

Mehr

Evolutionä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. 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

Mehr

13. Bäume: effektives Suchen und Sortieren

13. 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

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Definition 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

Mehr

Parsing SystemVerilog 2012

Parsing 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

Mehr

Interpreter - Gliederung

Interpreter - 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

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultä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)

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivü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

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.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

Mehr

Software Entwicklung 1

Software 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

Mehr

Optimale Produktliniengestaltung mit Genetischen Algorithmen

Optimale 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

Mehr

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 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:

Mehr

EINI 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 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

Mehr

InformatiCup 2009 EvolutionConsole

InformatiCup 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

Mehr

Anleitung zum Applet

Anleitung 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

Mehr

Genetische Algorithmen

Genetische Algorithmen Genetische Algorithmen Prof. Dr. Ottmar Beucher Dezember 2001 Genetische Algorithmen 1 Optimierungsaufgaben Ein einfaches Beispiel Prinzipielle Formulierung Lösungsansätze Genetische Algorithmen Anwendungen

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lö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

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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

Mehr

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Stratego/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

Mehr

Kapitel 12: Induktive

Kapitel 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

Mehr

Programmiertechnik 1 FOR-SCHLEIFEN

Programmiertechnik 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

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 2: Grundlagen der Programmierung (WS 2018/19)

Lö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

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/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

Mehr

Informatik II Übung, Woche 10

Informatik 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

Mehr

Genetische und Evolutionäre Algorithmen (Vol. 2)

Genetische 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

Mehr

Genetische Programmierung

Genetische 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

Mehr

1. Klausur - Probeklausur

1. 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

Mehr

Programmiertechnik 1 FOR-SCHLEIFEN

Programmiertechnik 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

Mehr

Programmieren in Java -Eingangstest-

Programmieren 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

Mehr

Programmierung für Mathematik HS11

Programmierung 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

Mehr

Algorithmen auf Sequenzen

Algorithmen 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

Mehr

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

Eine 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

Mehr

Optimierung auf rekonfigurierbaren Rechensystemen

Optimierung 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)

Mehr

b) Nennen Sie vier hinreichende Bedingungen für Evolution. b) Anzahl fortlaufender Einsen von rechts. c) Sind in a) oder b) Plateaus enthalten?

b) 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

Mehr

EINI 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 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

Mehr

Allgemeine Informatik 2 im SS 2007 Programmierprojekt

Allgemeine 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

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben 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

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: 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,

Mehr

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

B6.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

Mehr

Künstliche Intelligenz - Optimierungsprobleme - Suche in Spielbäumen

Kü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

Mehr

Verybench: grafisches Frontend für Testwell CMT++ Code Complexity Measures Tool

Verybench: 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

Mehr

Optimierung und Entwurf mit Evolutionären Algorithmen

Optimierung 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

Mehr

Einführung in die Methoden der Künstlichen Intelligenz. Evolutionäre Algorithmen

Einfü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

Mehr

Programmieren lernen mit Perl

Programmieren 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

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische 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:

Mehr

Das Problem des Handlungsreisenden

Das 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

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 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