Verhalten der NSCs

Ein weiteres mögliches und sehr ergiebiges neues Thema wäre die KI der NSCs. Welche Anforderungen und welche Wünsche werden an eine KI in einem Computerspiel gestellt? Ich weiß vor allem, was ich nicht möchte. Ich möchte keine “dummen Bots”. Ich möchte keine feindlichen NSCs, die nach der Uhr ihre Attacken ausführen, ich möchte keine zivilen NSCs, die zu jeder vollen Stunde ihren üblichen Weg laufen und dabei jedes Mal dieselbe Unterhaltung führen. Mehr noch: Frei nach dem Motto “Lernen ist wie Rudern gegen den Strom. Sobald man aufhört, treibt man zurück” (Benjamin Britten) ist jede KI, die sich dem Verhalten der Spieler nicht anpasst, die nicht dauerhaft von ihrer Umwelt lernt, unbefriedigend. Ich würde also erwarten, dass sich die NSCs dem Umfeld und damit auch meinen Aktionen anpassen. Das Ziel einer KI für feindliche, vor allem aber für verbündete NSCs in einem Spiel, in dem viel Zeit auch außerhalb von Kämpfen verbracht wird, sollte auch die Erhaltung und Erzeugung von Ambiente und Konsistenz beinhalten. Die NSCs sollten Aktionen nicht ausführen, weil wir das so geskriptet haben, sondern weil sie einen Grund dafür haben. Sie sollten kein Brot kaufen, weil ein Skript ihnen sagt, dass sie jeden Tag ein Brot kaufen, sondern weil sie Hunger haben und ein Brot kaufen dann eine gute Idee ist. Wenn die gesellschaftlichen Gepflogenheiten sich durch die Spieler ändern, dann sollten sie es erkennen. Wenn sich Treffpunkte heraus gebildet haben, an denen sich die Spieler vermehrt aufhalten, dann sollten die NSCs sich daran anpassen und zum Beispiel beginnen, dort Ware zu verkaufen oder nach Arbeit zu suchen. Und das alles, ohne! für jede Situation ein eigenes Skript zu schreiben. Leider bestehen die meisten KI Systeme, wie sie in Lehrbüchern stehen, nur aus immer komplexeren Skripten, die immer mehr Daten mit einrechnen. Die KI, wie ich sie mir vorstelle, ist in drei Ebenen unterteilt:

  • Ebenen der KI

    Ebenen der angedachten künstlichen Intelligenz

    Motivationsebene: Mit Hilfe einer Motivationspyramide wird bestimmt, welche Bedürfnisse den NSC motivieren, also welche Ziele angegangen werden. Je nach Archetyp des NSCs kann die Motivationspyramide entsprechend angepasst sein, bzw. die sich dahinter verbergenden konkreteren Ziele können variieren (Anerkennung kann sowohl in handwerklichem Können, in Reichtum oder auch im Krieg gesucht werden). Diese Ziele schränken die Optionen, die der nächsten Ebene gewählt werden können, stark ein. Beispiel für eine in dieser Ebene getroffene Entscheidung: Die Bedürfnisse der Art “Grundbedürfnisse” sind erfüllt, Ziele mit Zweck Bedürfniserfüllung “Sicherheit” werden nun auch verfolgt.

  • Optionsebene: Welche Handlungsoptionen stehen zur Verfügung, wie werden sie bewertet, welche werden ausgeführt? Beispiel für eine in dieser Ebene getroffene Entscheidung: Aus der Motivationsebene kamen hohe Bewertungen für die Bedürfnisse “Grundbedürfnisse” und “Sicherheit”. Es stehen also Optionen wie “Essen / Trinken bei Gastwirt y oder Bauer z besorgen” aber auch “ein Schloss bei Schmied y kaufen und einbauen” oder “eine Waffe bei Schmied x kaufen” zur Verfügung, nicht aber Optionen der Selbstverwirklichung wie “ein Bild malen”. Diese Optionen werden gewertet und eine Entscheidung für eine oder mehrere Optionen werden getroffen.
  • Situationsebene:Die Optionsebene hat eine auszuführende Handlung bestimmt. Die Situationsebene ist die konkreteste Ebene, hier geht es um Fragen wie: Wie verhalte ich mich, wenn ein “befreundeter” NSC oder Spieler vorbeiläuft, wie führe ich die eigentlich Aktion (“Waffe kaufen”) durch, wie biege ich an Kreuzung b ab, wenn mein eigentlicher Weg versperrt ist, wie reagiere ich, wenn mich jemand angreift? Beispiel für eine Entscheidung dieser Ebene: “Gib dem Schmied x Geld für die Waffe”, aber auch Reaktionen auf einen Angriff wie “die Flucht ergreifen” oder “zur Wehr setzen” und damit verbunden das Kampfverhalten (welche Schläge führe ich aus..).

Motivationsebene

In der Motivationsebene wird ermittelt, welche Ziele den NSC momentan motivieren. Sie soll so umgesetzt werden, dass das allgemeine Handeln der NSCs von den Spielern als verständlich und natürlich angesehen wird. Die einzelnen NSCs aber auch ganze Städte sollen ein harmonisches und verständliches Bild abgeben. Das Handeln und die Ziele von NSCs sollen von den Spieler nachvollzogen werden können (“Wenn ich das wäre, würde ich das auch so sehen” oder zu mindestens “Ich würde es anders machen, aber ich kann es schon verstehen, dass er sich so fühlt.”).

Maslowsche Bedürfnispyramide

Maslowsche Bedürfnispyramide

Zugrunde lege ich meinen Überlegungen eine der verbreitetsten Motivationstheorien, die Bedürfnispyramide von Maslow, siehe auch [1][2]. Es handelt sich hierbei um eine Inhaltstheorie. Inhaltstheorien beschäftigen sich vornehmlich mit den Inhalten von Motivation und der Klassifikation dieser Inhalte, die Stärke einer Motivation wird nur begründet durch ein unbefriedigtes Bedürfnis, nicht aber durch äußere Anreize. Ein solcher Ansatz ist aus meiner Sicht für NSCs einfacher umzusetzen als ein stark durch externe Eindrücke beeinflusster Ansatz nach einer Prozesstheorie. Die Bedürfnispyramide von Maslow beschreibt menschliche Bedürfnisse und Motivationen (in einer hierarchischen Struktur) und versucht diese zu erklären. In unserem Falle beschreibt sie das grundlegende Verhalten der NSCs, also die Motivation der NSC ist durch die Motivationspyramide beschrieben. Mehr Informationen zu der Maslowschen Bedürfnishierarchie findet ihr unter Wikipedia: Maslowsche Bedürfnispyramide.

Dynamische Entwicklung der Bedürfnisse

Dynamische Entwicklung der Bedürfnisse

Die Bedürfnisse sind hierarchisch in der Bedürfnispyramide angeordnet und werden nacheinander (von unten nach oben) verhaltenswirksam. Ist ein Bedürfnis befriedigt, so hat es keine motivierende Wirkung mehr und Ziele der nächsthöheren Ebene werden angegangen. Maslow unterteilt die Bedürfnisse in Defizitbedürfnisse und Wachstumsbedürfnisse. Defizitbedürfnisse sind erfüllt, wenn der vorher verspürte Mangel gedeckt wurde. Hierzu zählen physiologische Bedürfnisse, Sicherheitsbedürfnisse, soziale Bedürfnisse und Individualbedürfnisse. Wachstumsbedürfnisse, also das Bedürfnis nach Selbstverwirklichung, können nicht erfüllt werden. Hier strebt der Mensch danach, sich stetig zu verbessern, sein Potential voll auszuschöpfen. Wie schon erwähnt werden höher angesiedelte Bedürfnisse erst wahrgenommen, wenn die Bedürfnisse der darunter liegenden Schichten zu mindestens teilweise befriedigt sind (siehe hierzu die Graphik “Dynamische Darstellung der Bedürfnishierarchie nach Maslow”). Also je vollständiger eine bestimmte Schicht an Bedürfnissen befriedigt ist, desto höher werden die Bedürfnisse der nächsten Schicht gewertet. Dabei können durchaus auch mehrere Motivationsebenen gleichzeitig aktiv sein, wie die Graphik unten rechts zeigt. Hierbei geht es nicht um die momentane, kurzfristige Situation, sondern um die langfristige Entwicklung. Jemand, der kurz Hunger hat, fällt in seiner Persönlichkeitsentwicklung nicht auf die Schicht der physiologischen Bedürfnisse zurück. Hinter den einzelnen Bedürfnissen versteckt sich (angepasst auf NSCs in einem Spiel):

  • Physiologische Bedürfnisse – Grundbedürfnisse: Essen, Trinken, Schlafen (…?)
  • Sicherheitsbedürfnisse – “Gefühl” der Sicherheit, Stabilität, Zuverlässigkeit, Bedürfnis nach Regeln, Grenzen und Schutz, in einem Spiel: wenige Angriffe der Gegner, an die Gegnerpräsenz angepasste Sicherheitsmaßnahmen (Wälle, Wachen..), sicherer Stadtkern…
  • Soziale Bedürfnisse – Bedürfnis nach Zugehörigkeit, nach der Gesellschaft bestimmter Personen, Abneigung gegen Einsamkeit, Ausgestoßensein, Wurzellosigkeit und Ablehnung, in einem Spiel: Gesellschaft befreundeter NSCs und Spieler (zum Beispiel bei Gesellen-NSCs des Meisters)
  • Individualbedürfnisse (in einigen Quellen auch Ich-Bedürfnisse oder Achtungsbedürfnisse genannt) – Individualbedürfnisse werden unterteilt in
    • Selbstverbesserung, in einem Spiel: berufliche Verbesserung, Erfolg, Freiheit/Unabhängigkeit
    • Verbesserung der Außenwirkung: Ansehen, Titel..
  • Selbstverwirklichung – Suche nach den eigenen Grenzen, Ausschöpfung seines vollen Potentials, in einem Spiel stark abhängig vom Archetypen des NSCs

Welche Ziele sich für einen bestimmten NSC hinter den allgemeinen Bedürfnissen verbergen kann auch vom Charakter des NSCs abhängen. So strebt der typische Geselle als Individualbedürfnis vielleicht nach beruflicher Verbesserung und Ansehen des Meisters, während ein gegnerischer Herrscher als Individualbedürfnis nach Unabhängigkeit und Macht strebt. Die Bedürfnisse, die von den einzelnen NSCs in den einzelnen Bedürfnisklassen verspürt werden, sind grundlegend dieselben, aber anders gewichtet.

Obwohl es zu dieser Inhaltstheorie durchaus legitime Kritikpunkte gibt, halte ich sie als Grundlage für NSCs in einem Computerspiel für geeignet. Dadurch, dass die genannten Bedürfnisse konkret festlegbar sind und es konkrete Regeln gibt, welche Bedürfnisse vom NSC gerade verspürt werden, ist eine Implementierung in einem Spiel machbar. Gleichzeitig lässt das Modell zu, die NSCs zu individualisieren, ohne dafür Inkonsequenzen oder hohen Entwicklungsaufwand in Kauf nehmen zu müssen und ohne, dass das sich bietende Bild der NSCs erzwungen oder inkonsequent scheint. Die Theorie bietet wohl (auch aufgrund ihrer Einfachheit) keine perfekte, umfassende Beschreibung des Verhaltens oder auch nur der Motivation eines Menschen, stellt aber eine gute Grundlage für aufbauende Entscheidungsmodelle zur Verfügung.

Optionsebene

Die nächste Ebene ist die Optionsebene. In der Motivationsebene wurden offene Bedürfnisse mit einer zeitabhängigen Gewichtung (die der Relevanz des Bedürfnisses in der aktuellen Situation des NSCs entspricht, also Informationen wie die Stärke des momentan verspürten Defizits beinhaltet) und einer zeitunabhängigen, charakterabhängigen Gewichtung (die den Charakter, den Archetypen des NSCs widerspiegelt) übermittelt. Das Ziel ist es nun, mögliche Handlungsoptionen zu ermitteln und geeignete Optionen, die der Motivation des NSCs am besten entspricht, zu bestimmen.

Die meisten aktuellen Ansätze zu künstlicher Intelligenz behandeln so genannte Agenten, anschaulich beschrieben zum Beispiel in [3]. Ein Agent nimmt seine Umwelt über Sensoren wahr und kann in dieser Umwelt durch Aktuatoren Aktionen ausführen. Ein rationaler Agent handelt so, dass er seinen (erwarteten) Nutzen maximiert. Um eine solche Entscheidung treffen zu können, braucht man ein Kriterium für den Nutzen einer Aktion, es wird eine so genannte Leistungsbewertung durchgeführt. Ein rationaler Agent sucht also aus allen von ihm ausführbaren Aktionen unter Berücksichtigung der wahrgenommenen Umwelt (und unter Umständen unter Berücksichtigung der bisher wahrgenommenen Umwelt, also der Erinnerung des Agenten) die Aktion aus, die ihm mit der definierten Leistungsbewertung den höchsten Nutzen liefert. Die zugrunde liegende Leistungsbewertung ist also von enormer Wichtigkeit und die Definition einer sinnvollen, unseren Erwartungen genügenden Leistungsbewertung wird ein zentraler Punkt in diesem Abschnitt sein. In unserem Fall kann der Nutzen einer Aktion definiert werden als die Summe von erwartete Bedürfniserfüllung * Gewichtungen des Bedürfnisses (übermittelt aus der Motivationsebene) über alle Bedürfnisse. Doch woher weiß der Agent (= der NSC), welche Aktionen die Anerkennung anderer einbringen, satt machen oder die Sicherheit erhöhen?

Die Antwort auf diese Frage gliedert sich in zwei Schritte. Im ersten Schritt brauchen wir Kriterien, wann ein Bedürfnis erfüllt ist. Diese Kriterien sind unabhängig von den ausführbaren Aktionen und werden bei der Definition des Bedürfnisses mitgeliefert. So könnte das Bedürfnis “Hunger” zum Beispiel erfüllt sein, wenn in den letzten 6 Wachstunden mindestens 500kcal an Nahrung aufgenommen wurden. Das Bedürfnis “Sicherheit” könnte erfüllt sein, wenn in den letzten x Tagen / Wochen kein Angriff mehr auf die eigene Person oder andere Personen stattfand oder (in geringerem Maße) wenn in den letzten x Tagen / Wochen keine Verletzung aus Angriffen entstanden ist. Schwieriger hier die sozialen Bedürfnisse. Wie misst man Anerkennung und woran erkennt das Programm die Anerkennung eines Spielers? Diese Frage könnte zu einem eigenen Artikel werden, ich will mich in diesem Artikel darauf beschränken, dass es irgendwie geht (zum Beispiel indem NSCs anderen NSCs Einheiten des Gutes “Anerkennung” für Leistungen überlassen). Wir haben nun also folgende Situation: Das Programm kann messen, wie stark ein Bedürfnis erfüllt wird. Es weiß jedoch nicht, welche Aktionen zu einer solchen Erfüllung führen.

Woher wissen wir, welche Auswirkungen eine Aktion wahrscheinlich haben wird? Wir nutzen eigene und fremde Erfahrungen, suchen nach Gemeinsamkeiten mit der geplanten Aktion und sehen uns an, welche Auswirkungen ähnliche Aktionen in der Vergangenheit hatten. Mein erster Gedanke hierzu war “Self-Organizing Maps”, ein selbstständiges, nicht überwachtes Lernverfahren aus dem Bereich der künstlichen neuronalen Netze. siehe auch [4]. Hierbei geht es darum, dass man eine Menge an Impulsen (= Auswirkungen) hat, zwischen denen man einen Abstand (wie ähnlich sind die Auswirkungen) definieren kann. Weiter hat man eine Menge an Neuronen (= Aktionen), jedes Neuron hat einen Gewichtsvektor (von der Größe der Freiheitsgrade der Auswirkungen). Gewichtsvektoren und Impulse befinden sich also im selben Raum. Dieses Gewicht kann man anschaulich interpretieren als den “Standardimpuls”, der von diesem Neuron bearbeitet wird (als die erwartete Auswirkung dieser Aktion). Jeder Impuls wird auf das Neuron abgebildet, dessen Gewichtsvektor dem Impuls am nächsten liegt. Also in unserem Fall: Jede Auswirkung wird der Aktion zugewiesen, dessen “Standardauswirkung” (= erwartete Auswirkung) der Auswirkung am nächsten liegt. Im nächsten Schritt wird die neue Information ausgewertet und die Gewichtsvektoren werden entsprechend angepasst. In unserem Fall heißt das: Die Umwelt nach der Aktion wird beobachtet und die Gewichtsvektoren werden modifiziert, um die neuen Information einfließen zu lassen. Am Anfang werden die Gewichtsvektoren mit Startwerten initialisiert (im Original werden sie zufällig verteilt) gesetzt und finden über diese Modifikation langsam ihren “richtigen” Wert. Wenn zum Beispiel bisher für “ein Brötchen nehmen” kaum eine Bedürfniserfüllung für das Bedürfnis “Hunger” festgestellt wurde (zum Beispiel weil diese Aktion bisher kaum ausgeführt wurde), der Agent ein Brötchen isst, daraufhin eine Abnahme des Hungers feststellt, dann wird das Gewicht vom Neuron “ein Brötchen essen” der Auswirkung “hohe Bedürfniserfüllung” für das Bedürfnis “Hunger” angenähert. Um dieses Bewertungsverfahren für Aktionen nutzen zu können müssen wir die Aktionen in Elementaroptionen zerlegen, eine Vorschrift für die Anpassung der Gewichte definieren und nach Möglichkeit ein Maß für die Ähnlichkeit von Aktionen finden. Letzteres ergibt sich im Wesentlichen aus der Zerlegung in Elementaroptionen. So zerlegt sich zum Beispiel die Option “Kaufe ein Schwert” in die Optionen “Händler x aufsuchen”, “Geld abgeben”, “Schwert bekommen”. Je mehr Informationen genutzt werden, um die Auswirkungen zu bestimmen, desto besser kann der Agent abschätzen, welche Aktionen er ausführen sollte. Wenn im Neuron zusätzlich gespeichert wäre, wie gut der NSC mit Schwert oder mit Axt umgehen kann, so würde diese Information die vorausgesagten Auswirkungen der Aktion beeinflussen. Natürlich erhöht sich durch die Erhöhung der Dimension des Impulses auch der Rechenaufwand des Verfahrens. Hier muss also gründlich abgewägt werden, welche Information berücksichtigt wird.

Doch woher weiß der NSC, welche Elementaroptionen betrachtet werden sollen? Alle möglichen Optionen zu betrachten übersteigt den akzeptablen Rechenaufwand bei Weitem (und ist je nach Situation nicht durchführbar). Wir müssen also mit der Information arbeiten, die uns vorliegt: die Leistungsbewertung über die Bedürfnisse und deren Gewichtungen. Wir wissen, welchen Effekt wir erzielen wollen, wir wissen also, in welchem Bereich von Impulsen wir nach einer zugehörigen Elementaroption suchen müssen. Ist eine Menge solcher möglicher Elementaroptionen (zum Beispiel “Schwert bekommen”) gefunden, wird zu jeder Kombination von einer oder mehreren Elementaroptionen eine Folge von Elementaroptionen bestimmt, die ausführbar sind (zum Beispiel “Händler x aufsuchen”, “Geld abgeben”, “Schwert bekommen”). Die Folge von Elementaroptionen mit dem höchsten summierten Nutzen wird ausgeführt. Die Veränderung der Bedürfnisbefriedigung wird (über längeren Zeitraum) beobachtet und die Gewichte werden entsprechend angepasst, wobei tendenziell unmittelbare Folgen stärkere Veränderungen hervorrufen als langfristige Folgen (da diese der Aktion nur noch bedingt zuordbar sind). Ebenso werden die Änderungen in der Befriedigung der Bedürfnisse an die Motivationsebene zurück übermittelt.

Vorhin wurde angesprochen, dass wir sowohl eigene als auch fremde Erfahrungen in unsere Entscheidungen einfließen lassen. Doch meistens werten wir unsere Entscheidungen höher als die Entscheidungen anderer, weiter werten wir Entscheidungen vieler Menschen höher als die Entscheidungen Einzelner. Wenn jeder NSC seine eigene Kohonenkarte bekommt, hätten wir automatisch individuelle NSCs, würden das aber mit einem erhöhten Rechen- und Speicherbedarf erkaufen. Trotzdem sollte man die Möglichkeit der Individualisierung auch auf Optionsebene für weitere Überlegungen im Hinterkopf behalten. So wäre es zum Beispiel möglich, dass nur NSCs, die sich tatsächlich austauschen können (Bewohner einer Stadt..) mit denselben Gewichten arbeiten. Oder man führt eine allgemeine Karte für alle NSCs ein und erlaubt regionale oder sogar individuelle Anpassungen. Doch dazu später mehr..

Situationsebene

Die unterste Ebene der KI ist die Situationsebene. Aus der Optionsebene wurde eine Folge von Elementaroptionen übermittelt. Diese Folge versucht der NSC nun auszuführen. Dabei wird die gegebene Folge auf gesplittet in atomare Aktionen, die dem Agenten als Skripte zur Verfügung stehen, also zum Beispiel “laufe Kurve f(t) ab”, “überreiche Geld an Agent y” oder “führe Hieb z aus”. Bei unvorhergesehenen Ereignissen (Weg versperrt, Agent y nicht da, Angriff) wird entschieden, ob der vorher gefasste Plan weiterhin ausgeführt wird, oder ob abgebrochen wird und ein weiterer Aufruf der Optionsebene stattfindet. Steht zum Beispiel ein mobiles Hindernis im Weg (Spieler), so sollte der NSC warten und den Plan dann weiterführen. Wird das Dorf angegriffen, sollte er von dem Plan, außerhalb der Dorfbefestigungen Pilze zu sammeln, absehen und einen Ausweichplan ersinnen. Wir betrachten also immer noch den Agent NSC, wir haben eine feste Liste an Aktionen zur Verfügung (eingeschränkt durch die gegebene Situation) und benötigen für diese kurzfristigen Entscheidungen abermals eine Leistungsbewertung. Der Nutzen von Aktionen dieser Ebene sollte sowohl ihren Beitrag für die erfolgreiche Ausführung des in der Optionsebene gefassten Plans berücksichtigen, als auch sekundäre Ziele wie die körperliche Unversehrtheit oder das Einhalten von gesellschaftlichen Konventionen beinhalten. Diese Entscheidungen erfordern wiederum die Auswertung von Erfahrungen, man könnte analog zur Optionsebene wieder das Verfahren Self-Organizing Maps nutzen.

Ein weiterer interessanter Gedanke, der auf dieser Ebene wieder etwas Neues bringen könnte, ist die Frage nach der Empathie der NSCs. Wenn wir mit einem anderen Menschen auf irgendeine Weise interagieren, versuchen wir dessen Reaktion vorherzusehen. Ebenso sollte ein NSC bei Anblick eines anderen NSCs oder Spielers und bei einer geplanten Interaktion mit einem anderen NSC oder Spieler versuchen, dessen erwartete Reaktion auf eigene Aktionen in die Auswahl der eigenen Aktion mit einzubeziehen. Hierzu sehe ich aus der momentanen Sicht zwei Möglichkeiten: Man könnte eine explizite Abfrage dieser Art einbauen, also wenn ein NSC eine Handlung ausführen möchte, dann versetzt er sich zunächst in die Lage des Gegenübers, trifft dort eine Entscheidung und stimmt die eigene Entscheidung auf die antizipierte Entscheidung des Gegenübers ab. Dies erscheint rechenaufwendig und vor allem schwer umsetzbar, da in vielen Fällen die Anzahl der möglicherweise beteiligten anderen Teilnehmer unbekannt oder unüberschaubar sein könnte. Mein Ansatz wäre es daher, auch hier auf die Ergebnisse der Self-Organizing Maps zu vertrauen und dort lieber geeignete Parameter (wie die Anzahl / Art der ansonsten involvierten Personen) mit in die Wertung einfließen zu lassen. Wenn der NSC überlegt, einen Spieler zu schlagen und in fast allen bisher vorgekommenen ähnlichen Entscheidungen körperlicher Schmerz (durch die Abwehrreaktion des Spielers) aufgetreten ist, dann ist die Leistungsbewertung dieser Handlung automatisch sehr niedrig. Entscheidend hierbei ist die richtige Auswahl der einzubeziehenden Parameter. Wenn eine NSC Wache die Anzahl der Feinde vor den Toren der Stadt nicht mit einfließen lässt in die Entscheidung, ob er Alarm schlägt, so kann die Leistungsbewertung dieser Aktion kein befriedigendes Ergebnis liefern. Wünschenswert wäre eine dynamische Ermittlung der relevanten Parameter, doch das ist eine andere Geschichte..

Quellen

[1] “Personalwirtschaft”, Hans Jung, Oldenburg Verlag, München 1999
[2] “Grundlagen und Probleme der Betriebswirtschaft”, Helmut Schmalen, Wirtschaftsverlag Bachem, erschienen Köln 1990
[3] “Künstliche Intelligenz”, Stuart Russel und Peter Norvig, Pearson Studium, Auflage 3, erschienen München 2012
[4] “Self-Organizing Maps”, Teuvo Kohonen, Springer Verlag, erschienen Berlin 1997

Cookie

Ich bin.. hmm, wie fange ich nun am Besten an? Mit dem Trivialen: Ich bin Cookie :) Und wie drücke ich nun am besten aus, wie ich mich in Science-O-Matics und in !∃2.0 einbringe? Vielleicht kurz zu mir: Ich habe Mathe mit einem Schwerpunkt in der reinen Mathematik studiert, nach meinem Abschluss dann ein Jährchen mal ein wenig Geld verdient in der ABAP Entwicklung, dann bin ich zurück zur Uni, habe mit einem kurzen Exkurs in die mathematische Optimierung mein Wirtschaftsmathe Diplom vollendet und mache gerade meinen Doktor in der quantitativen Forschung der Wirtschaftswissenschaften, also Optimierung auf Wirtschaftsseite, Modelle aufstellen, Algorithmen analysieren, anpassen oder entwickeln, implementieren.. Ist echt cool :D Also im Herzen Mathematikerin. Nein, Informatikerin.. Beides halt ^^ Für !∃2.0 mache ich vor allem Mathemagie und deren Umsetzung, aber auch viele andere Hintergrundmodelle. Sachen, die man in Spielen schon immer mal cool gefunden hätte.. "einfach" mal umgesetzt als eigenständiges Feature. So ist zum Beispiel die Generierung der Umwelt zum größten Teil aus meiner Feder. Hmm.. was schreibt man sonst noch in eine Vorstellung rein? Das Alter? - Vergesst es, nach dem Alter einer Dame fragt man nicht :P Hobbies? Tja, Computerspiele, wie man sich wohl denken kann ^^ Aber auch LARP, Gesellschaftsspiele und Trading Card Games, nähen und Sport würde ich dazu zählen.. Ehrlicherweise auch Shoppen, Schuhe und Klamotten ;) Ach, warum ich Cookie heiße? Das sollte schnell klar werden ohne dass ich es ausführe ;)
Posted in Theory-O-Matic. Tagged with , , .

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>