Bagel
Biologically inspired Graph-Based Language
Ansprechpartner/in:
Bagel ist eine Graph basierte Programmiersprache. Dabei werden Rechenoperationen durch Knoten beschrieben und der Datenfluss wird durch Kanten definiert. Ein Algorithmus der durch einen Bagel Graphen dargestellt wird kann auf einer höheren Ebene wieder als Rechenoperation eines Bagel Knoten verwendet werden. Auf diese Weise werden die Kernalgorithmen mit den gleichen Graphen (Schnittstellen) beschrieben wie die Organisation von verschiedenen Software- bzw. Bagel-Modulen. Das und die Möglichkeit, beliebig viele Kanten eines Inputs auf verschiedene Art und Weise miteinander verrechnen zu können, erlauben vor allem die effiziente Modellierung von hierarchischen verhaltensbasierten Architekturen.
Schlüsselwörter: | Steuerung, Verhalten, Roboter Programmierung |
Status: | aktiv |
Betriebssystem: | macOS, Windows, Linux |
Programmiersprachen: | C, C++ |
Eigentumsrechte: | Diese Software wurde vom DFKI sowie von der Arbeitsgruppe Robotik der Universität Bremen entwickelt und wird unter dieser Verantwortung weiterentwickelt. Bei Fragen und Anregungen wenden sie sich an die Ansprechpartner. |
Softwarebeschreibung
Die Besonderheit der Bagel Repräsentation ist, dass Lernverfahren, wie beispielsweise genetische Algorithmen, mit der Graphstruktur arbeiten und somit auf allen Verhaltensebenen eingesetzt werden können. So kann beispielsweise eine erste Optimierung Kernalgorithmen generieren während mit den gleichen Werkzeugen in einer zweiten Iteration die Verwendung der erlernten Kernalgorithmen entwickelt wird. Ebenso können beide Iterationen über eine Ko-Evolution auch gleichzeitig durchgeführt werden. Neben den positiven Eigenschaften von Bagel für die Verwendung von Lernverfahren minimiert der vereinfachte Funktionsumfang, im Vergleich zu Programmiersprachen wie C, deutlich die Fehleranfälligkeit der Algorithmen. Beispielsweise können keine Speicherzugriffsfehler durch das Programmieren in Bagel generiert werden.
Zum Erstellen von Bagel Modulen wird eine graphische Benutzeroberfläche bereitgestellt wodurch auch komplexe Bagel-Graphen übersichtlich entwickelt werden können. Die Möglichkeit, externen C/C++ Code einbinden zu können, erlaubt außerdem das schnelle Nutzen und Überführen von bestehen Bibliotheken.
Zum Erstellen von Bagel Modulen wird eine graphische Benutzeroberfläche bereitgestellt wodurch auch komplexe Bagel-Graphen übersichtlich entwickelt werden können. Die Möglichkeit, externen C/C++ Code einbinden zu können, erlaubt außerdem das schnelle Nutzen und Überführen von bestehen Bibliotheken.