Künstliche Intelligenz

Künstliche Intelligenz ist ein weit gefasster Begriff. Wir benutzen ihn als Oberbegriff für unsere drei Fachgebiete:

Die Anwendungsbereiche für unsere Software sind meist Produktion, Logistik und Verkehr, also im Allgemeinen (Material-)Flussprobleme.

Optimierung

Die Optimierungsprobleme, die wir lösen, sind öfter diskret als kontinuierlich. Meist sind sie so (NP-)komplex, dass Heuristiken zum Einsatz kommen müssen. Und hier gilt: Je genauer der Algorithmus bzw. die Software an Ihr Problem angepasst ist, desto besser und effizienter die Lösung.

Optimierung von Prozessen

Zur Optimierung eines Prozesses muss dieser abstrakt modelliert, parametrisiert und eine bewertende Zielfunktion definiert werden. Optimierungsprobleme werden kategorisiert anhand der Dimensionen ihrer Lösungs- und Zielräume. Die Lösungsverfahren sind speziell auf die Art des Problems abgestimmt.

Heuristiken

Zur Optimierung werden verschiedene Heuristiken eingesetzt: z.B. Genetische Algorithmen, Memetische Algorithmen oder Schwarmintelligenz. Nach dem No-free-Lunch-Theoreme ist eine Heuristik umso besser, je genauer sie an das Problem angepasst ist.

Kombinatorische Optimierung

Reihenfolgeprobleme, Auswahlprobleme und Probleme mit einem ganzzahligen Lösungsraum, wie beispielsweise der Frage nach 2, 3 oder 4 Maschinen, fallen in den Bereich der diskreten bzw. kombinatorischen Optimierung. Diese müssen mit numerischen Verfahren gelöst werden, in komplexen Fällen mit Heuristiken.

Multiskalen-Ansatz

Zur Verringerung der Komplexität erfolgt die Optimierung auf verschieden detaillierten Ebenen: makroskopisch, mesoskopisch und mikroskopisch.

Simulation

Unsere Simulationen sind ereignisdiskret: Die Prozesse laufen schrittweise ab, von einem definierten Zustand zum nächsten. Häufig ist der Anwendungsfall ein Materialfluss, beispielsweise wie Komponenten in einer Produktionshalle bewegt und zusammengesetzt werden. Doch auch die Bewegungen von Fahrzeugen und Fußgängern lassen sich so abbilden. Dazu werden die Beschleunigungen der Fußgänger durch ein Soziale-Kräfte-Modell berechnet.

Simulationsbasierte Optimierung

Lässt sich das Verhalten eines parametrisierten Systems nicht analytisch berechnen, kann eine Simulation helfen. Durch multiple Simulationsläufe können dann optimale Parameter ermittelt werden.

Graphentheorie und Netzwerke

Grundlage für die Simulation ist eine Modellierung von Netzwerken auf Basis der Graphentheorie. Optimale Routen werden mit dem A*-Algorithmus gefunden.

Deterministisch oder stochastisch

Eine deterministische Simulation liefert bei gleichen Eingangs-Parametern immer das gleiche Ergebnis. Dies wird verwendet, um die Auswirkungen verschiedener Parameter zu untersuchen. Eine stochastische Simulation hingegen trifft zufällige Entscheidungen.

Visualisierung in 3D

Die modellierten Prozesse können in 3D dargestellt, aus jeder Perspektive betrachtet und aufgezeichnet werden.

Neuronale Netze

Künstliche Neuronale Netze (KNN) sind dem menschlichen Gehirn nachempfunden. Sie bestehen aus Schichten von sog. Neuronen: eine Eingabeschicht, beliebig viele „versteckte“ Zwischenschichten und eine Ausgabeschicht für das Ergebnis.

Machine Learning

Maschinelles Lernen ist das Teilgebiet der Künstlichen Intelligenz, in dem Computer „selbständig“ Wissen aufbauen und anwenden. Das Wissen wird anhand von großen Datensätzen erlernt und auf unbekannte Daten angewandt. Es gibt verschiedene Arten Maschinellen Lernens, die sich vorrangig darin unterscheiden, wie das erlernte Wissen verarbeitet und gespeichert wird.

TensorFlow

TensorFlow

Das Open-Source-Framework TensorFlow ist eines der populärsten Produkte für Machine Learning und auch unser Favorit. Es läuft auf modernen Mobiltelefonen so performant, dass sich dort Erkennungen in Echtzeit durchführen lassen.

Deep Learning

Eine Art des Maschinellen Lernens ist Deep Learning. Es verwendet Neuronale Netze mit vielen Schichten zwischen Ein- und Ausgabeschicht. Dadurch lassen sich komplexe Zusammenhänge erlernen. Anwendungsfelder sind beispielsweise Bild- und Spracherkennung sowie Textinterpretation (NLP).

PyTorch

PyTorch

Unsere Alternative zu TensorFlow ist PyTorch, ebenfalls Open-Source. Dank umfangreicher Bibliotheken ist das Anwendungsspektrum sehr breit. Mittlerweile gibt es PyTorch Mobile für mobile Anwendungen und Schnittstellen für Java und C++.

Technologie

Oh Schreck, alles entwickelt sich so schnell weiter, jeden Tag etwas Neues. Im Folgenden werden weitere Techniken und Technologien aufgeführt, die unserer Arbeit zugrunde liegen:

Sprachen

In der Vergangenheit war Java unser Werkzeug, heute nutzen wir vorrangig Python. Hardware-nah wird C++ verwendet, zur App-Entwicklung andere Sprachen.

Multi-Threading

Egal in welcher Sprache, Effizienz ist unser Paradigma. Datenstrukturen werden so modelliert, dass parallele Prozesse optimal synchronisiert werden können. Dadurch sind unsere Algorithmen extrem performant.

Datenbanken

Selten startet ein Projekt auf der grünen Wiese. In den meisten Fällen ist beim Kunden eine Datenbank vorhanden, mit der wir zunächst arbeiten. Daher haben wir Erfahrung mit vielen verschiedenen Typen (SQL, relational, NoSQL, objektorientiert) und Marken (MySQL, PostgreSQL, MongoDB, Microsoft SQL, Oracle, etc).

Big Data

Big Data ist heutzutage in aller Munde. Dabei sind es nur Daten in großer Menge. Genauso wie ein Data Warehouse nur eine Datenbank ist, die verschiedene Daten bündelt. Beides lässt sich mit effizienten Algorithmen und adäquaten Schnittstellen gut beherrschen.

Sie möchten mehr erfahren?

Nutzen Sie unseren Rückruf-Service