Und jetzt begrüße ich Sie noch einmal sehr herzlich.
Ich freue mich, dass Sie alle hier sind.
Liebe Kollegen, liebe Mitarbeiterinnen und Mitarbeiter, liebe
Studierende, ich hoffe, dass auch Studierende da sind.
Ich freue mich sehr, dass ich jetzt diese Vorlesung halten darf.
Und es geht um den Entwurf guter Algorithmen.
Und das Thema kam her aus meiner Antrittsvorlesung.
Ich habe hier vor fast genau 25 Jahren eine Vorlesung gehalten, um zu
erzählen, was ich vorhabe in der Forschung, in der Lehre, Ansätze für
den systematischen Entwurf guter Algorithmen.
Nun ist das heute nicht die Antrittsvorlesung, und es ist nicht der
13.
Januar, sondern es ist die Abschiedsvorlesung und der 16.
Februar.
Was habe ich damals erzählt?
Ich habe eine Übersicht, oder ich habe das gegliedert damals in Güte
von Algorithmen, dann den systematischen Entwurf, verschiedene
Ansätze, das passt auch heute, passt schon.
Also, Algorithmen ist ein zentraler Begriff, der hat mich wirklich
mein ganzes Leben als Wissenschaftler begleitet.
Und worum geht das eigentlich?
Also, ich denke, die meisten hier wissen, das war doch mal zur
Erinnerung.
Was ist ein Algorithmus?
Ein endlich beschriebenes, deterministisches Verfahren mit Ein- und
Ausgabe, das für alle zulässigen Eingaben terminiert und deren
Deskoperation effektiv sind.
Oder auch eine endliche Beschreibung der Ausführung, eine endliche
Folge von Befehlen auf einer abstrakten Maschine.
Klingt sehr abstrakt, machen wir es konkret.
Ich mache ein ganz einfaches Beispiel, nämlich das Beispiel hier,
Bubble Sort.
Sortieren lieben wir als Informatiker, kann man so schön einfach
erklären.
Und da steht jetzt ein bisschen Programmcode, also endlich
beschrieben.
Was macht dieses Verfahren?
Es soll sortieren, wir haben eine Folge S1 bis S6, in diesem Fall eine
ganz einfache Folge.
Wir wollen sie von oben nach unten aufsteigen, sortieren.
Und wie man hier sieht, fangen wir also unten an bei N und vergleichen
jeweils, ob die Elemente in der richtigen Anordnung sind oder nicht.
In diesem Fall sind sie es nicht, 4 und 6 müssen vertauscht werden.
Wir machen weiter, gehen weiter nach oben, sehen dann, 1 und 5 sind
auch in der falschen Reihenfolge.
Gehen weiter, wir sehen 1 und 2 sind in der falschen Reihenfolge, wir
müssen die auch vertauschen.
Und jetzt sind wir einmal bis nach oben gelaufen.
Das war also einmal diese Schleife.
Und jetzt fangen wir unten wieder an, laufen wieder nach oben und
stellen fest, die 3 und die 5 sind in der falschen Richtung, die
müssen wir auch wieder vertauschen.
Und dann oben drüber ist schon alles in Ordnung.
Wir gehen wieder nach unten, fangen wieder von unten an und sehen
dann, dass 4 und 5 in der falschen Ordnung sind, auch die werden
vertauscht und dann ist die ganze Folge schon sortiert.
Ganz einfaches Verfahren.
Also so einfach ist ein Algorithm.
Der Text, hier ein bisschen visualisiert, jetzt wissen Sie, wie man
ganz einfach sortiert.
Und warum nennt man das Bubble Sort?
Weil hier so die leichten Elemente nach oben gehen, die schweren
sinken nach unten wie so Blasen in Wasser, also deswegen Bubble Sort.
Wenn man sich anschaut, ich mache ja immer effiziente Algorithmen, was
kostet die Ausführung dieses Algorithmus?
Da schaut man sich das halt an und stellt fest, dass wir eigentlich
Summe 1 bis N-1 viele Vergleiche machen müssen, also N²-Vergleiche.
Okay.
Was ist daran interessant?
Die Anzahl der Vergleiche, auch man guckt sich an, die Beziehung
zwischen den Programmstrukturen, den Datenstrukturen und auch den
Rechnerstrukturen.
Und dieses hier, das hat mich eigentlich vor allen Dingen in meinem
wissenschaftlichen Leben begleitet und da werde ich ein bisschen was
darüber erzählen im Weiteren, was das damit zu tun hat.
Also was ist jetzt eigentlich ein guter Algorithmus?
Das wäre erst mal überhaupt ein Algorithmus.
Wann ist der eigentlich gut?
Wir haben Kriterien dafür, eine Vielzahl von Kriterien.
Das ist Korrektheit, Effizienz, Genauigkeit bei realwertigen
Verfahren, Robustheit, Anpassungsfähigkeit, Sicherheit, Eleganz,
Einfachheit, Stabilität.
Ich könnte Ihnen eine ganze Vorlesung, ein ganzes Semester lang
darüber ganz viel erzählen, dafür reicht heute die Zeit leider nicht.
Also beschränke ich mich mal auf die Effizienz.
Auch da gibt es eine ganze Reihe von Dingen, die wir anschauen können.
Wir können die Rechenzeit anschauen, ein bisschen abstrakter die
Anzahl der Operationen, die ausgeführt werden.
Wenn wir Operationen parallel ausführen wollen, brauchen wir mehrere
Prozessoren.
Also wie viele Prozessoren brauchen wir, wie gut sind sie ausgelastet,
wie viel Speicherplatz brauchen wir für die Daten, wenn wir
Algorithmen in Hardware implementieren, wie viel Chipfläche brauchen
wir dafür, all das sind Kriterien.
Das kann man alles analysieren, aber eine Aussage darüber, wie gut der
Algorithmus ist, bekommen wir erst, wenn wir das vergleichen können
mit anderen Algorithmen.
Da kann man sagen, der eine hat mehr oder weniger.
Oder auch im Vergleich mit unteren Schranken, wenn wir wissen, wie
viel wir mindestens brauchen an Vergleichen zum Beispiel.
Jetzt schauen wir uns an Bubble Sort nochmal.
Da wissen wir, für Sortierverfahren, da brauchen wir mindestens n log
n Vergleiche.
Bubble Sort braucht n Quadrat, ganz schlecht.
Also n Quadrat ist weit weg, wir wissen, es gibt Verfahren, die können
das mit n log n.
Also Bubble Sort war ein schlechtes Beispiel.
Jetzt schauen wir uns mal eine bisschen andere Variante an.
Ein bisschen andere Situation, nämlich ein lineares Feld von
Prozessoren, wir wollen darauf sortieren.
Die Folge ist jetzt verteilt über dieses lineare Feld.
Ich zeige Ihnen jetzt eine Variante von Bubble Sort, also eine
Variante der Kernidee von Bubble Sort, diese lokalen Vergleiche.
Und jetzt wollen wir das Odd-Even-Transposition-Sort uns anschauen.
Das macht folgendes, es werden zunächst mal die Paare mit ungeradem
ersten Index verglichen und in richtige Anordnung gebracht und danach
die mit geradem Index.
Und dann geht man wieder zurück zu dem mit ungeradem und dann wieder
zu dem mit dem geradem Index.
Oder wenn wir das in die Zeit ausrollen, dann haben wir also hier
diese Folge der Vergleiche, die gemacht werden.
Und nach n solchen Schritten, das ist also immer hier ein Schritt,
nach n solchen Schritten kann zumindest, wenn also stellen Sie vor,
das größte Element war zu Anfang hier vorne bei dem S1 und soll
nachher zu dem S8, nach n Schritten kann das da hingekommen sein und
in der gleichen Zeit ist auch die Folge schon sortiert.
Das heißt aber auch, wir brauchen ja mindestens n Schritten.
Das heißt, die Laufzeit O von n, also lineare Zeit, ist gar nicht zu
unterbieten auf einem linearen Feld.
Auf einmal ist diese Bubble-Sort-Idee ein optimaler Algorithmus.
Wir können gar nicht schneller sortieren, als der das hier macht, also
ist das ein perfekter Algorithmus.
Und deshalb habe ich noch eine Idee, das was ich hier so als
Vergleiche ausgerollt habe über die Zeitachse, das kann ich ja auch
direkt implementieren in Halfware.
Ich mache aus jedem Vergleich einen Vergleich am Baustein, dann habe
ich einen Sortierchip und in dem kann ich jetzt in jedem Arbeitstakt
eine neue Folge eingeben und nach n Takten kommen die hier unten
wieder raus.
Das heißt, wenn ich jetzt viele Folgen sortieren will, dann habe ich
pro Folge, die ich sortieren muss, nur konstanten Aufwand.
Das heißt, ich kann im Prinzip in jedem Takt eine Folge sortieren.
Und vor, war ein Aufwand von n².
Der Aufwand von n² ist immer noch da, aber wir können das jetzt eben
in dem Zeitverhalten viel besser darstellen.
Ein optimales Verfahren und wir sehen diese einfache Idee, Bubble
Sort, kann man in vielfältiger Weise verwenden und was man hier vor
allen Dingen sieht, das ist jetzt eine Einsicht, die man hat, wenn wir
etwas sagen über die Güte von Algorithmen, dann müssen wir einmal
anschauen, was sind eigentlich die rechten Strukturen, die wir wenden
dafür, wo wird er ausgeführt.
Das ist also ein Punkt, auf den ich hier hinweisen wollte.
Jetzt haben wir gerade eben Parallelität genutzt für das Sortieren.
Jetzt gehe ich in ein anderes Beispiel, die Matrixmultiplikation.
Wir wollen zwei Matrizen multiplizieren, A und B.
Das heißt, wir müssen die Elemente Cij berechnen, also hier, wenn wir
das oberste berechnen wollen, jeweils eine Zeile mit einer Spalte
multiplizieren, das Skalarprodukt berechnen und dafür gibt es viele
verschiedene Verfahren.
Standardansatz, Schulmethode ist diese dreifach geschaffte Schleife,
wo im Prinzip diese Summe berechnet wird.
Hier ganz in der innersten Schleife, Aik mit Bkj multipliziert, dieses
Produkt wird berechnet und dann wird das aufsummieren aufs
Zwischenergebnis.
Das ist also der Kern der Skalarproduktoperation.
Damit können wir Matrizenprodukte berechnen.
Der Aufwand offensichtlich n hoch 3, weil wir hier dreifach geschaffte
Schleifen haben, müssen wir 4n² Elemente jeweils n Operationen machen,
oder Größenordnung n, n Multiplikationen und n-1 Additionen.
Und damit haben wir einen sehr hohen Aufwand.
Das wollen wir jetzt parallel machen, verspreche ich Ihnen zu schauen,
was wir damit aussichten können.
Also parallel, das heißt auf einer Parallel Random Access Machine zum
Beispiel, viele Prozessoren und das, was uns sofort einfällt, ist
einfach alle Produkte, die berechnet werden müssen, also zum Beispiel
die für 1Cj, die Produkte Aik, Bkj, alle parallel zu machen, das ist
ein ebenes Stück.
Und danach addieren wir die einfach auf und das geht in log n plus 1
Schritten zu machen.
Das heißt auf einmal sind wir in der Zeit, in der Anzahl der Schritte,
die wir brauchen, parallele Schritte auf Log n von n hoch 3.
Das ist ein drastischer Zeitgewinn, aber n hoch 3 Prozessoren, sehr
viel Aufwand, der gleiche Aufwand natürlich wie vorher, aber was die
Anzahl der Operationen angeht, aber eben in der Zeit in wesentlich
weniger Schritte gepresst, weil wir das parallel machen können.
Wenn uns n hoch 3 zu viel ist, könnte man sagen, wir nehmen einfach
nur n² Elemente, für jedes Cij ein Prozessorelement, schön
gitterähnlich verbunden und jetzt bewegen wir einfach die Matrizen A
und B hier durch dieses Feld hindurch und dann kommen gerade in jedem
Feld hier alle Elemente zusammen, die für das Skalarprodukt benötigt
werden und nach insgesamt 3 minus 2 Takten sind die Matrizen ganz
durchbewegt und wir haben das Produkt in diesem Feld berechnet.
Man kann es noch anders machen, man kann auch die Matrix C bewegen und
dann wäre nach 4n minus 2 Takten auch die Matrix C nicht nur
berechnet, sondern auch hier rechts wieder ausgegeben.
Und das heißt, wir hätten dann mit n² Prozessoren in linearer Zeit das
Produkt berechnet und vorher waren das n hoch 3 Elemente, also
besseren Zeitgewinn kann man hier gar nicht erzielen.
Jetzt sieht das natürlich, wenn man sich das anschaut, wie kommt man
darauf, die Daten jetzt gerade so anzuordnen.
Wieso funktioniert das gerade hier so?
Woher weiß ich, welche Zahl ich hier wann hinschreiben muss?
Oder welches Element ich da hinschreiben muss?
Und jetzt will man das natürlich möglichst systematisch machen und das
korrekt machen, also verwenden wir einfach einen sogenannten Mapping
-Ansatz, das ist also eine systematische Entwurfsmethode, bei der wir
einfach das, was ich vorher als Programmwort aufgeschrieben hatte,
jetzt als Gleichungssystem hinschreiben, sogenannte uniforme lineare
Rekurrenzgleichungen und wir haben hier für jedes Triple I, K, J,
gerade im Wesentlichen diese Skalarprodukt-Operationen noch zu machen,
von A, I, K mal B, K, J, jetzt aber mit Variablen, die drei Indizes
haben.
Das sind die einzelnen Berechnungsschritte, die wir machen müssen,
also für jedes I, K, J, eine Multiplikation, eine Addition und alle
Berechnungen können wir also einfach jetzt für n gleich 3 zum Beispiel
in so einem Datenabhängigkeitsgraf aufmalen, in dem dargestellt ist,
woher eigentlich für eine solche Berechnung die Daten A, B und C
kommen.
So, das ist ein Datenabhängigkeitsgraf, wir wollen aber eigentlich auf
einem zweidimensionalen Prozessorfeld etwas berechnen und wir hatten
ja vorher da das C von links nach rechts bewegt, das B nach oben, das
A nach unten und wie kriegt man jetzt den Datenabhängigkeitsgraf
darauf?
Ganz einfach, indem man jedes I, K, J, darauf transformiert mit einer
Matrix, mit einer Transformationsmatrix, die hier angegeben ist und
dann kriegt man raus für jede Berechnung, die am Punkt I, K, J gemacht
wird in diesem Datenabhängigkeitsgraf, die Zeit und den Ort, an dem
diese Berechnung in diesem Feld ausgeführt werden soll.
Man kann das sogar so machen, dass dann systematisch dabei auch schon
der Programmmod rauskommt, das heißt systematisch bekommt man auf
diese Art und Weise die Vielfalt von verschiedenen Variationen eines
Algorithmus oder von Algorithmen heraus, die alle auf diesem Schema
basieren, aber in unterschiedlicher Art und Weise das dann realisieren
in solchen zweidimensionalen Prozessorfeldern.
Also ein systematischer Anwurf garantiert korrekte Algorithmen.
Jetzt haben wir uns nicht nur solche Algorithmen wie Sortieren und
Matrixmodifizierung angeschaut, sondern auch viele schwierige
Probleme, übrigens nenne ich hier oben ab und zu so ein paar Personen,
die in dem Umfeld sich beschäftigt haben und promulgiert haben oder
auf jeden Fall wissenschaftlich in meiner Gruppe gewesen sind oder mit
meiner Gruppe zusammengingen.
Wir haben uns mit Optimierungsproblemen beschäftigt, mit vielen
schwierigen Problemen, Problemen des Handelsreisenden,
Projektplanungsprobleme mit allen möglichen Varianten, mit
Schedulingproblemen, Kommissionierung, unikriteriell, multikriteriell,
also bei Projektplanung zum Beispiel nicht nur wichtig, wie lange
dauert ein Projekt, sondern was sind die Risiken, was kostet es und so
weiter und so fort, haben wir mehrere Kriterien und die spielen
natürlich alle eine Rolle.
Und man muss dann sehen, wie man entsprechend bestmöglich optimiert,
dann können die Probleme statisch sein, sie können sich während der
Ausführungszeit verändern, Projekte können während der Ausführungszeit
ihre Gestalt ändern, Anforderungen können sich ändern, gibt es ein
paar große Projekte, wo sich ständig die Anforderungen ändern, die
dauern dann oft länger.
Und wir haben versucht, das mit Verfahren zu machen, die wir gut
beherrschen können.
Es gibt die Exaktenverfahren, die sind sehr zeitaufwendig und wir
haben uns vor allem beschäftigt mit Meteoristiken, bei denen wir
gesagt haben, wir schauen mal an, inwieweit wir in der Natur
interessante Vorgehensweisen haben, die wir übertragen in Algorithmen,
insbesondere Dinge aus der Evolution oder auch wie Insektenstaaten
sich verhalten, das wurden dann die genetischen Algorithmen, die
Ameisenalgorithmen, Partikelschwarmoptimierung, da sind einige oder
viele Narben meiner Toteranten mit verbunden und wir haben hier
interessante Ergebnisse erzielen können.
Wesentlich dabei ist einmal, wie repräsentiert man eigentlich die
Probleme und die Lösungen und wie gestaltet man die produzierenden
Operatoren.
Ansonsten hat man relativ wenig Probleme mit der Ausführung, weil wir
wenig wissen müssen über den Suchraum.
Wir bekommen leider keine Optimalitätsgarantie, wir können also nicht
sagen, dieser evolutionäre Algorithmus oder Ameisenalgorithmus bringt
uns ein optimales Ergebnis, aber die Lösungen sind sehr häufig Gute
Nacht, das war das, was Herr Hans-Werner sagte, passt schon.
Gute Nacht ist eben.
Also das sind Lösungen, die sind häufig gut und insbesondere, wenn
sich die Randbedingungen ständig ändern, dann ist das etwas ganz
Tolles.
Und solche sich ändernden Randbedingungen sehen wir immer mehr, je
mehr Bereiche die Informatik hineingeht, sehen wir, dass es
erforderlich ist, sich darauf einzustellen und das ist das, was uns
bewogen hat, dieses Gebiet Organic Computing zu entwickeln, innerhalb
des Fachbereichs Technische Informatik, der Gesellschaft der
Informatik und der Informationstechnischen Gesellschaft.
Wir haben das Glück gehabt, dass wir ein Schwerpunktprogramm
erfolgreich initiieren konnten, zusammen mit Christian Müller-Schlör
und Pia Ungerer.
Pia Ungerer sitzt da oben und sitzen einige, die hier in dem Projekt
intensiv mitgearbeitet haben.
Wir waren getrieben hier von einer Erkenntnis.
Es ist nicht die Frage, ob adaptive und selbstorganisierende Systeme
entstehen werden, sondern wie wir sie entwerfen und kontrollieren.
Und das heißt, es ist nicht nur irgendeine Spielwiese, wir haben uns
etwas Nettes Neues ausgedacht, sondern wir sind immer mehr umgeben von
solchen Systemen.
Und dann ist es entscheidend, wie wir diese Systeme tatsächlich
gestalten.
Wir sollten sie so gestalten, dass wir damit gut umgehen können, dass
wir uns zu Diensten setzen.
Das war das, was uns angetrieben hat.
Und es war eine fantastische Erfahrung, dass wir hier ein neues
Forschungsgebiet prägen konnten.
Wir haben 18 Projekte, die wir im Zeitraum von sechs Jahren intensiv
gemeinsam gearbeitet haben und wir haben das dann am Ende
aufgeschrieben in dem Buch Organic Computing, a paradigm shift for
complex systems.
Und ich werde Ihnen nur ganz kurz ein Beispiel darstellen, in dem wir
insbesondere in meiner Gruppe, zusammen mit der Gruppe von Christian
Müller -Schlör, sehr viel getan haben, nämlich das Organic Traffic
Control.
Und dabei geht es darum, dass wir uns beschäftigen, wie wir den
Verkehrsfluss am besten gestalten können.
Wir hatten hier das Straßennetz in Hamburg als Beispiel und auch Daten
aus einer Verkehrszählung.
Zum Glück hat mein Bruder dort Verkehrszählung gemacht, von der
Verbindung herstellt und wir haben aus Hamburg Daten bekommen.
Was sieht man an diesem Straßennetz?
Diese dicken grünen oder auch dicken und dünneren grünen Pfeile deuten
an, wie stark der Verkehrsfluss ist zu dieser Zeit, die hier angegeben
ist, also in den Morgenstunden.
Und in den Abendstunden sieht das anders aus.
Das heißt, wir haben dynamisch veränderliche Verkehrsverhältnisse und
deswegen müssen sich eigentlich die Ampelsteuerung dynamisch anpassen.
Und das war unser Ziel, das so zu machen, dass immer der aktuelle
Verkehrsfluss bestimmt, wie die Ampeln geschaltet werden.
Also es müssen die grünen Phasen der Ampeln gesteuert werden, dafür
braucht man an jeder Ampel eine entsprechende Steuerung und es sollen
auch die Ampeln koordiniert werden untereinander, das heißt, sie
müssen auch kommunizieren.
Damit haben wir uns intensiv beschäftigt.
Also es ging darum, wir haben diese Ampelsteuerung, den Traffic Light
Controller, das ist also die Einheit, die die Ampel tatsächlich
steuert und die kann das auch, die hat entweder eine Festzeitsteuerung
oder ist verkehrsabhängig.
Wir haben also eine Reihe Parameter, die diese grünen Phasen
tatsächlich steuern.
Und obendrüber bauen wir jetzt eine Architektur, die das
Verkehrsverhalten verbessert.
Also die Ampelsteuerung kann das auch so, es kann verbessert werden.
Verbessert werden kann das dadurch, dass wir das beobachten, die
aktuelle Situation.
Dann haben wir ein sogenanntes Learning Classifier System, in dem wir
abhängig von der aktuell beobachteten Situation bestimmte
Parametereinstellungen gespeichert haben, die wir dann auswählen, eine
geeignete nach unten geben und die Ampelsteuerung dadurch etwas
modifizieren und wir beobachten, wie gut die Modifizierung gewesen ist
und lernen dabei ständig, dass dieses Online Learning, wir lernen
ständig, wie wir eigentlich am besten diese verschiedenen Parameter
aussuchen sollen.
Und dann ist obendrüber eine weitere Ebene, nämlich diese Ebene des
Offline Lernen.
Es gibt Situationen, bei denen wir kein gutes Verhalten beobachten und
dann brauchen wir eine neue Steuerung, die erzeugen wir mit einem
evolutionären Algorithmus, auf Basis eines Simulators, dieser Kreuzung
oder des Verkehrsnetzes und sobald wir eine gute Lösung gefunden
haben, geben wir die dann nach unten in diese Learning Classifier
Systeme und der gibt sie dann wieder runter auf diese Ampelsteuerung
bei Bedarf.
Also eine mehrschichtige Architektur und das ist eigentlich dann das
Muster gewesen für das Organic Computing, in vielen anderen Bereichen
hat sich herausgestellt, ist diese Architektur eigentlich sofort
anzuwenden, eine sogenannte Observer-Controller-Architektur, sind noch
eine Reihe Komponenten drin, wie ich ja angedeutet habe.
Das Wesentliche ist, hier unten das System, das wir dadurch beobachten
und steuern, kann auch so arbeiten, aber es kann besser arbeiten, es
ist anpassungsfähiger, wenn wir diesen Observer-Controller hinzufügen.
Und man kann das in große Systeme machen, man kann einen Observer
-Controller verwenden, man könnte das machen.
Man kann auch viele einzelne Einheiten haben bei den Verkehrsnetzen,
hatte ich das angedeutet, viele einzelne Steuerungen, die hier
intelligente Ampeln-Daten mit damit bezeugen und wir können auch
drüber noch eine weitere Ebene setzen und beobachten, was dort
passiert, versuchen das zu verbessern.
Okay, jetzt haben wir also einiges getan, um solche Systeme zu
verbessern und wir haben dann uns etwas zeitlich parallel, das
überlappte sich etwas, angefangen uns mit Energiesystemen zu
beschäftigen und festgestellt, dort sind eigentlich genau solche
Systeme, die sich ständig irgendwie verändern, die eine Beobachtung
und Steuerung ständig brauchen und wir haben dann uns hergenommen, das
unterste Ende der Energiesysteme, nämlich den Endabnehmer, die
Gebäude, die Häuser, Endkomponenten und haben eine Architektur
entwickelt, das Organics Smart Home, als ein flexibles Gebäude-Energie
-Management -System.
Das ist eine Architektur, die ich hier angedeutet habe, ich erwarte
nicht, dass wir das alles sofort sehen, was das tut, aber das
Wesentliche ist, es dient dazu, die Systeme zu überwachen, sie zu
simulieren, da haben wir diesen Energy Simulation Core, sie zu
optimieren, da oben wird also optimiert und zwar viele verschiedene
Komponenten, die dort vorhanden sind und das Ganze ist tatsächlich im
Einsatz bei uns im Energy Smart Home Lab und auch im FZE House of
Living Labs, das heißt, das ist wirklich etwas, wo wir zeigen und
erfahren, wie wir tatsächlich mit diesen Ansätzen etwas sinnvoll
beeinflussen können.
Das Ziel ist, also das Ziel dieser Forschung ist nicht, sich hier auf
das Gebäude zu beschränken, sondern ein Energie-Informations- und
Steuerungsnetz mit verteilter Systemintelligenz zu schaffen, das dann
tatsächlich in der Lage ist, unsere Systeme dauerhaft auch wirklich
besser zu machen.
Das heißt, es ist hier angedeutet, ein bisschen übertrieben
vielleicht, dass überall jetzt dieses Server-Controller oder Organics
Smart Home da drin steht.
Gemeint ist einfach nur, wir brauchen solche dezentralen Punkte, an
denen wir etwas entscheiden.
Wir brauchen nicht eine zentrale Einheit, die alle Daten sammelt und
dann Entscheidungen trifft, sondern wir müssen da entscheiden, wo es
erforderlich ist und müssen also ein sehr dezentrales Netz aufbauen
und dafür brauchen wir die geeigneten Methoden, Architekturen und
Denken, dass wir hier einen guten Beitrag geleistet haben.
Etwas, was man hier beobachtet, ist, das Ganze kann man nicht alleine,
sondern nur mit vielen, also verbunden mit vielen anderen, mit
Energietechnikern, Energiewirtschaftsleuten und mit vielen
verschiedenen Personen, die hier gemeinsam dafür sorgen, dass so ein
System tatsächlich funktionieren kann.
Etwas, was beim Organic Computing eine Rolle spielt, war die Anpassung
an den Kontext.
Lassen Sie mich dazu, zu diesem Thema Anpassung an den Kontext, noch
ein bisschen mehr sagen.
Es heißt im Prinzip, wenn ich einen Algorithmus entwerfe, dann sollte
ich immer die verfügbaren Informationen wirklich auch nutzen.
Was bedeutet das?
Ein kurzes Beispiel nochmal zurück, ein einfaches, wie der
Algebraisches Problem.
Wir haben ein Polynom, das wir ausrechnen müssen, Summe a, i, x, o, i,
Polynom hinten, Grades.
Das kann man auf diese Art und Weise machen, wie es hier steht, das
sogenannte Horner-Schema.
Da haben wir n Multiplikationen, n Additionen zu machen beim Polynom
des Grades n.
Und das ist optimal, es geht nicht besser.
Man kann beweisen, zur Auswertung eines Polynoms, zur Berechnung eines
Polynoms brauche ich genau n Additionen, genau n Multiplikationen.
Wenn ich aber dieses Polynom nur für mehrere verschiedene Werte von x
berechnen muss, dann kenne ich die Koeffizienten.
Und dann kann ich die Darstellung etwas verändern und kann auf einmal
die Hälfte der Multiplikationen einsparen.
Das heißt, wenn ich mehr Informationen nutze, wenn ich alle
Informationen nutze, die ich habe, kann ich tatsächlich den Vorteil
haben.
Und das ist also ein Beispiel, wo man das sieht.
Es ist immer gut, solche Informationen zu nutzen.
Und hier wieder ein anderes Beispiel, in dem ich nicht aktiv selbst
arbeite, wo aber dieses Prinzip auch sehr stark eingesetzt wird, die
Suche im World Wide Web.
Das kennen wir alle.
Und etwas, was immer mehr gemacht wird, ist, dass dort bei der Suche
über die Anfrage hinaus, alle verfügbaren Informationen genutzt werden
und die bestmögliche Antwort ist.
Das heißt, der Ort der Anfrage, wo wurde gefragt, was hat derjenige
früher schon mal gefragt, was sind dessen Präferenzen, wie hat er
früher schon mal auf Antworten, die mir gegeben wurden, reagiert, was
mag ich später gerne als Antwort sehen, welche Aktivitäten hat er in
sozialen Netzen.
Das heißt, man versucht das Suchergebnis bestmöglich an die
Suchumgebung, also desjenigen, der dort fragt, anzupassen.
Das ist eigentlich ein toller Algorithmus.
Da gibt Ihnen die bestmögliche Antwort.
Man nennt das so mit dem Stichwort Filterblase.
Alles, was an Antworten da sein könnte, wird gefiltert und nur das,
was in der Blase drin ist, kommt dann zu Ihnen tatsächlich auf den
Rechner.
Was heißt das aber?
Das heißt doch, die Antworten auf Anfragen, die sind nicht objektiv,
sondern möglichst subjektiv.
Angepasst an die Interessen und die aktuelle Situation der fragenden
Person.
Ist das gut?
Ist das ein guter Algorithmus?
Man könnte sagen, perfekt.
Der macht das genau richtig.
Ich gebe Ihnen ein Beispiel, das sich auf unsere Fakultät bezieht.
Wo kann man das fachwirtschaftsingenieurwesen studieren?
Wenn Sie diese Frage in Hamburg stellen, heißt das in Hamburg-Harburg.
Wenn Sie die Frage in Berlin stellen, kriegen Sie das Antwort in
Berlin.
Wenn Sie die Frage in Karlsruhe stellen, kriegen Sie das Antwort in
Karlsruhe am KIT.
Wozu führt das?
Wir hatten früher in Befragungen festgestellt, die Mehrheit, die große
Mehrheit unserer Studierenden im wirtschaftsingenieurwesen kam aus
anderen Bundesländern.
Aus dem ganzen Bundesgebiet.
Mittlerweile kommt die überwiegende Mehrheit nur noch aus dem lokalen
Umfeld.
Ein Effekt dieser fantastischen Algorithmus, der die Informationen
bestmöglich nutzt.
Das heißt, wir müssen aufpassen, welche Informationen wir nutzen.
Wenn wir die Möglichkeit schaffen, etwas zu tun, sollten wir nicht
auch die Möglichkeit schaffen, dass wir das abschalten können.
Dass wir sagen, ich möchte jetzt mal eine objektive Antwort haben, die
nicht durch die Filterblase durchgeht.
Damit ich auch wirklich etwas bekomme, was mir der Wahrheit
entspricht.
Also subjektive Antworten, genau das, was wir kriegen, wenn es um
alternative Fakten geht.
Da kann ich mir eine Filterblase schaffen und bekomme Antworten, die
genau zu meinen Präferenzen passen.
Und nicht zu dem, was eigentlich wahr ist.
Also Informatiker sollten eigentlich verpflichtet sein, die
notwendigen, guten Algorithmen zu liefern, die es auch ermöglichen,
die Objektivität und die Relevanz und Rechtfertigung von Antworten
tatsächlich zu überprüfen.
Ich denke, da haben wir noch etwas zu tun.
Ja, das ist also wirklich eine Entwicklung, die ist nicht gut, wenn es
immer mehr Richtung eigene Filterblase geht.
Und ich denke, wir als Wissenschaftler haben uns alle verpflichtet,
die Wahrheit zu suchen und es zu verkünden.
Ich bin darauf verpflichtet worden, als ich promoviert habe und ich
habe diese Verpflichtung an alle meine Doktoranden weitergegeben.
Explizit.
Das ist etwas, wo einige schmunzeln und sagen, ach ist das schon die
Wahrheit, das ist doch lächerlich.
Aber ich denke, das ist eine hohe Anforderung und die Wahrheit zu
suchen und sie zu verkünden, heißt auch, andere müssen das, was ich
gefunden habe, als Wahrheit erkennen können.
Das muss objektiv sein, von anderen nachvollziehbar.
Das sollten wir eigentlich leisten können und das sollten wir auch
liefern können als Informatiker, bei Systemen, die wir anbieten für
ein solches breites Anwendungsgebiet, das in alle Gebiete der
Gesellschaft hinein geht.
Ich hatte gesagt, wir verkünden etwas und lassen Sie mich noch drei
Worte zu guter Lehre sagen.
Wir verkünden, wir lehren, ich verabschiede mich heute aus der Lehre,
nicht aus der Forschung.
Aber was ist gute Lehre?
Welche Auswirkungen hat denn eigentlich die Digitalisierung auf die
universitäre Lehre?
Sind Vorlesungen, ich halte hier eine Abschiedsvorlesung, sind
Vorlesungen überhaupt noch adäquat, um Wissen und Fähigkeiten zu
vermitteln?
Woher kommt eigentlich das Wort Vorlesung?
Vorlesung kommt daher, dass früher das aufgeschriebene Wissen nur den
Professoren zur Verfügung stand.
Die hatten die dicken Bücher und sie haben das Wissen, das
aufgeschrieben war, den Studierenden vorgelesen.
Heute ist das aufgeschriebene Wissen für jeden verfügbar.
Wir haben gar nicht mehr die Aufgabe, etwas vorzulesen.
Aber welche Aufgabe haben wir denn dann?
Wie können wir denn eigentlich heutzutage dafür sorgen, dass wir einen
selbstbestimmten Erwerb von Wissen unterstützen, im Studium und im
Leben danach?
Wir haben das in dem Programm, Herr Ottmann, neue Medien für die
Lehre, virtuelle Universität, genau solche Verfahren entwickelt und
das war immer unser Thema, selbstbestimmte Lehre zu unterstützen.
Ich habe nicht wirklich die gute Antwort.
Ich habe sehr gerne Vorlesungen gehalten, ich halte auch diese
Vorlesungen hier sehr gerne.
Weil ich gerne in aufmerksame Gesichter schaue und das ist wirklich
ein Gewinn, eine Vorlesung zu halten.
Aber trotzdem müssen wir auch Methoden entwickeln, um dafür zu sorgen,
dass ein selbstbestimmter Erwerb von Wissen möglich ist.
Ein Ziel unserer Lehre sollte auf jeden Fall sein, dass wir die
Fähigkeit zur effektiven Selbstorganisation bei den Absolventen dann
tatsächlich erzeugt haben.
Das ist eine wichtige Kompetenz.
Das sollte ein wesentliches Ziel unserer akademischen Lehre sein,
gerade heute, wo wir immer mehr Wissen haben, das immer wieder neu
entsteht und das wir uns dann aneignen müssen.
Wir müssen wissen, wie man das macht.
Und das erfordert im Studium viele Gestaltungsspieler.
Es gibt gerade bei uns in der Fakultät eine Diskussion,
interessanterweise angeregt von den Studierenden, von der Fachschaft,
Studienprofile zu empfehlen.
Wir haben einen sehr großen Studiengang Wirtschaftsingenieurwesen,
sehr breit.
Man kann alles mögliche machen.
Und ein Studienprofil würde dafür sorgen, dass man einfacher den Weg
findet, wo man hingehen soll.
Aber erzeugt das eine größere Kompetenz für eine effektive
Selbstorganisation?
Dafür brauche ich doch eigentlich die Fähigkeit, mir das selbst zu
suchen und meinen Weg zu finden.
Und dann habe ich etwas gelernt.
Und dann über das Wissen, das ich erworben habe, habe ich auch die
Fähigkeit erworben, tatsächlich solche Wege zu finden und Wissen zu
entdecken, das ich brauche.
Und Fertigkeit zu erwerben.
Also das ist etwas, wo man genau aufpassen muss.
Wir dürfen unser Studium nicht verschulen.
Je mehr wir deutlich vorschreiben und sagen, so ist ein guter Weg und
das ist ein anderer Weg und die Studenten begeistern und sagen, oh
toll, ich nehme den Weg A, B oder C, dann geht eine wesentliche
Anforderung verloren, nämlich sich diese Wege selbst zu gestalten,
entsprechend den individuellen Interessen und Fähigkeiten.
Und das ist etwas, was mir wirklich ein Anliegen ist, dass man solche
Gestaltungsspielräume in den Studiengängen tatsächlich behält.
Ein anderer Punkt ist, ich habe gesagt, gute Lehre.
Was ist denn gute Lehre?
Wir werden ständig evaluiert, jedes Semester bekommen wir
Vorlesungsevaluationen und etwas, was mich immer wieder gestört hat,
nicht nur mich, auch viele andere, ist, dass es dort eine Frage gibt
an die Studierenden, wie beurteilen sie den Grad der Anforderungen?
Wie hoch sind die Anforderungen?
Das geht von geringer Anforderung bis hohe Anforderung.
Und geringe Anforderung ist links, links ist alles, was sehr gut ist.
Und hohe Anforderungen sind rechts, rechts ist alles, was ganz
schlecht ist.
Und dann wird noch gefragt, sind die Anforderungen angemessen?
Und dann kann man das so ein bisschen noch variieren da drin, wenn
einer sagt, das ist auch angemessen, dann wird das nicht ganz so
schlimm angesehen, dass man hohe Anforderungen stellt.
Aber das ist doch furchtbar.
Wieso kann es sein, dass eine Vorlesung, die kaum Anforderungen
stellt, als besser angesehen wird und eine bessere Bewertung bekommt,
als eine Vorlesung, die hohe Anforderungen stellt und vielleicht auch
im Endergebnis eigentlich einen viel größeren Erfolg hat?
Das ist ganz schwierig.
Wir hatten einmal einen Fall gehabt, dass Studierende bei einem
Praktikum sagten, ich sehe, ich habe noch ein ganz bisschen Zeit,
deswegen hole ich ein bisschen aus, nach einem Praktikum, das war
etwas, was meine Studierenden immer sagten, der erzählt so viel über
das, was auf den Folien steht, schrecklich.
Ja, aber davon lebt die Lehre, dass man ein bisschen mehr Dinge
erzählt.
Also, wir hatten ein Praktikum, das hatten meine Mitarbeiter
organisiert, also wirklich so ein Praktikum, wo wissenschaftlich
Versuche gemacht wurden, in dem Fall mit mobilen Agenten, mit
Robotern, die über eine Arena liefen und so weiter.
Und da wurden in mehreren Schritten Papiere geschrieben, korrigiert,
evaluiert und die Studenten sagten am Ende, es wurde ihnen zu Beginn
gesagt, das ist ein sehr aufwendiges Praktikum und am Ende sagten die,
das wäre ein fantastisches Praktikum gewesen.
Sie hätten noch nie so viel gelernt, das wäre eine richtig tolle
Betreuung gewesen und in der Bewertung kriegt man eine ganz schlechte
Note, weil diese Punkte Aufwand, zu hoch, angemessen, nicht
angemessen.
Ja, weil nicht angemessen für ein Praktikum.
Also eine schlechte Bewertung.
Aber die Studierenden hatten selbst gesagt, das war eine tolle
Veranstaltung.
Da passt etwas nicht bei der Bewertung von guter oder schlechter
Lehre.
Obwohl wir damit problemlos leben können, also ist gar nicht so
schlimm, wenn auf einmal dann nicht die 100% da stehen, sondern ein
bisschen weniger.
Okay.
Lassen Sie mich am Ende jetzt zu ganz paar Einsichten nochmal kommen.
Was habe ich so für Einsichten gewonnen in meinen vielen Jahren?
Ich könnte auch sagen, ich habe gar nichts dazugelernt.
Man macht bei der Abschiedsvorlesung das gleiche Thema wie bei der
Antrittsvorlesung.
Ja, aber ich denke, ich habe doch ein bisschen was gelernt.
Erstmal verfügbare Ressourcen bestmöglich ausnutzen, ist ein Punkt,
auf den habe ich hingewiesen.
Oh, da habe ich jetzt die Animation falsch gemacht.
Die Korrektheit garantieren natürlich, ein ganz wichtiger Punkt.
Selbstverständlich, das Wichtigste ist, dass ein Algorithmus korrekt
ist und die Ressourcen müssen möglichst gut ausgenutzt werden.
Wir sollten, wenn wir ein Wurfsmuster haben, sollten wir die auch
einsetzen.
Also ich sage keineswegs, jeder muss jetzt Observer Controller
einsetzen.
Aber da ist ein Muster drin.
Und das hat sich in vielen Stellen als vorteilhaft erwiesen.
Und dann sollte man auch versuchen, das auch einzusetzen, weil man
dann einen Rahmen hat, in dem man neue Dinge, neue Systeme schaffen
kann.
Bei unsicheren veränderlichen Randbedingungen robuste,
antastungsfähige Lösungen bevorzugen.
Das ist klar, da habe ich wenig zu sagen können.
Durch andere Disziplinen inspirieren lassen und auch durch die Natur,
aber auch durch andere Disziplinen.
Ich habe sehr viel gelernt über Gebiete, von denen ich vorher nie
etwas gewusst habe.
Über den Bereich Verkehr, über den Bereich Energie.
Und das hätte ich mir nie träumen lassen, dass ich einmal derjenige
bin, der das Thema Energieinformatik dann da vorne bringt und auch
noch einen Preis dafür bekommt, für Beiträge zur Erzeugung und
Verteilung von Energie.
Ich mache Informatik.
Trotzdem sind meine Leistungen dort anerkannt worden.
Das hat mich sehr überrascht und sehr erfreut natürlich.
Aber wenn man etwas beobachtet woanders und inspiriert wird, dann muss
man offen sein für neue Dinge.
Das habe ich versucht immer zu sagen.
Ich habe versucht, Chancen zu ergreifen.
Ein wichtiger Punkt, der uns auch beim Organic Computing beschäftigt
hat, habe ich immer darauf Wert gelegt, wesentlich ist, dass die
Systeme, die wir entwickeln, dem Menschen zunutze sind.
Es macht keinen Sinn, eine Technologie zu entwerfen, die uns
einschränkt in unsere Möglichkeiten, sondern wir sollten erweitert
werden mit den Möglichkeiten.
Wir sollten uns wohler fühlen mit solchen Systemen und sollten nicht
meinen, auf einmal haben wir eine Welt, die wir gar nicht mehr haben
wollen.
Also die Interessen menschlicher Nutzer müssen angemessen einbezogen
sein, ist auch bei unserem Energiemanagement ein ganz wesentlicher
Punkt.
Und natürlich sollen Algorithmen nicht nur theoretisch entworfen
werden, sondern immer auch tatsächlich umgesetzt werden.
Das ist etwas, was das Prinzip hier angedeutet, dieser Zyklus vom
Entwurf, der Analyse, der Implementierung, der Experiment und dann
Veränderungen im Entwurf.
Das ist ein Zyklus, den man eben nur nicht laufen kann, wenn man
tatsächlich die Algorithmen implementiert.
Und wir sind, als wir das Energy Smart Homelab gebaut haben, vom
Bundesrechnungshof angegangen worden, kriegten die Kritik, das wäre
eine Verschwendung von Steuermitteln, dass wir dort so viel Geld
investieren, hätten wir alles simulieren können.
Und zum Glück hatten wir einen guten Projektträger, der uns gesagt
hat, oder der dem Bundesrechnungshof gesagt hat, das war wichtig.
Und wir haben dadurch die Möglichkeit gehabt, Energiemanagementsysteme
zu entwickeln, die wir den Energietechnikern zeigen konnten und sagen
konnten, so funktioniert das, wir können das auf die Art und Weise
beeinflussen und das ist überzeugend.
Wenn wir das in der Simulation gemacht hätten, wäre es nicht
überzeugend gewesen.
Also das ist ein ganz wichtiger Punkt.
Und dann, denke ich, ist klar, der Entwurf guter Algorithmen bleibt
eine Kernaufgabe der Informatik.
Übrigens nochmal zu diesem Algorithm Engineering, dass es hier
Karlsruhe ist, der Hort des Algorithm Engineerings, das bin nicht ich,
sondern das sind Dorothea Wagner und Peter Sanders, die gerade heute
einen Antrag fertigstellen für einen Exzellenzcluster zum Thema
Algorithm Engineering for the Scalability Challenge.
Also ein hochanspruchsvolles Gebiet und es bleibt offensichtlich eine
Kernaufgabe der Informatik.
Abschließend möchte ich noch eine wichtige Einsicht sagen, und das ist
die Einsicht, dass gute Algorithmen, Architekturen und Systeme
eigentlich nur entstehen können, wenn viele Menschen zusammenwirken.
Wir brauchen engagierte, kreative Menschen, Studierende, die ihr
Abschlussarbeiten schreiben, studentische Hilfskräfte, die mitwirken,
Mitarbeiterinnen und Mitarbeiter in der Wissenschaft, in der
Verwaltung, in der Technik, die Kolleginnen und Kollegen, mit denen
wir gemeinsam arbeiten, am Institut, im KIT und darüber hinaus.
Und ich hatte das Privileg, dass ich in all den Jahren, die ich hier
gearbeitet habe, wirklich mit sehr vielen, sehr engagierten, kreativen
Menschen zusammenarbeiten durfte, in vielen sehr spannenden Projekten.
Und deswegen Ihnen allen gilt mein herzlicher Dank und ich danke Ihnen
allen für die Aufmerksamkeit.