Programmablauf: Option auswählen

Nachdem ich letzte Woche den allgemeinen Ablauf der Optionsebene im Coding besprochen habe, wollte ich nun nacheinander die (interessanten) Teile im Ablauf man genauer besprechen. Und starten möchte ich dabei mit der Auswahl der Option, also dem Baustein decide on option.

Auswahl Option

Auswahl Option

Der Ablauf findet (fast) komplett innerhalb der entsprechenden Instanz  der Klasse NPC statt. Einzige Ausnahme ist der Teil “get list of options”, hier wird vom DBHandler eine Liste mit allen Optionen angefordert. Ansonsten sind die folgenden Teile wichtig:

    • compute weights – aus den Bedürfnissen jeweils multipliziert mit der Gewichtung der jeweiligen Motivationsklasse werden die empfundenen Bedürfnisse ermittelt. Nun haben wir also einen Vektor, der genau dem vom NSC erhofften Resultat entspricht. Wir suchen im folgenden also die Option, die der NSC nun ausführen kann und deren erwartetes Resultat dem gefundenen Vektor am besten entspricht.
    • get list of all options – vom DBHandler wird die (ungefilterte) Liste aller Optionen angefordert. Diese enthält (später) mindestens die Nulloption (warten), ist also nicht leer.
    • evaluate (first) option (in list) – Die jeweils oberste Option wird ausgewertet, dabei werden als erstes die Voraussetzungen für die Option geprüft. An jede Option können Bedingungen geknüpft werden, momentan sind mögliche Bedingungen benötigte Items oder ein bestimmter Aufenthaltsort, das lässt sich aber später noch erweitern. Im ersten Schritt der Evaluation wird also geprüft, ob alle benötigten Gegenstände in der benötigten Menge im Inventar sind und ob der NPC am richtigen Ort ist. Dann wird die Wertung der Option ermittelt, diese Wertung ist der Abstand zwischen dem SOM Vektor (der die erwartete Bedürfniserfüllung durch diese Option ausdrückt) und dem im ersten Schritt ermittelten Bedürfnisvektor des NSCs. Ist dieser Wert größer als der Wert der bisher besten gefundenen Option, ist dies Option die bisher beste gefundene Option und wird sich gemerkt. Ist der Wert echt kleiner, wird die Option verworfen. Bei Gleichheit (dies kommt vor Allem / eigentlich nur in der Initialisierungsphase vor), wird die Option mit einer gewissen Wahrscheinlichkeit verworfen, sonst übernommen.

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