Begriff
Fluent
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
In der normalen Logik ist alles ewig.
IstMensch(Sokrates) ist wahr. Immer.
In der echten Welt ändern sich Dinge.
IstHungrig(Sokrates)?
Mal ja, mal nein. Kommt auf die Zeit an.
Ein Fluent ist eine "fließende" Eigenschaft.
Eine Funktion, die von der Zeit (oder Situation) abhängt.
Statt Hungrig (Konstante) schreiben wir Hungrig(t).
Der Begriff kommt von Isaac Newton ("Fluxionen"), wurde aber von McCarthy für die KI übernommen.
Merksatz: Eine logische Funktion oder ein Prädikat in der künstlichen Intelligenz, dessen Wahrheitswert sich über die Zeit oder in Abhängigkeit von Aktionen ändert.
In PDDL (Planung).
In der Definition der Domäne:
predicates: (at ?robot ?room).
at ist ein Fluent. Es ist wahr in State 1, falsch in State 2.
color(robot, green) ist (meistens) ein statisches Prädikat (kein Fluent), weil Roboter sich selten umlackieren.
Man muss im Design streng trennen: Was ändert sich? Was bleibt?
1. Functional vs. Relational Fluents
- Relational:
On(Box, Table, S)-> Wahr/Falsch. - Functional:
Location(Box, S) = Table. -> Gibt einen Wert zurück. Funktionale Fluents sind kompakter ("Die Box kann nur an einem Ort sein"), aber schwerer in Prolog zu handhaben.
2. Reification
Manchmal behandelt man Fluents als Objekte ("Reification").
Holds(On(Box, Table), S).
Hier ist On(Box, Table) ein Term (ein Ding), kein Prädikat.
Das erlaubt Meta-Regeln ("Gesetze der Physik gelten für alle Fluents").
1. Situation-indexed Predicates
Mathematisch wird ein Fluent oft durch das Anhängen eines Situations-Arguments realisiert.
Anstatt IstOffen(Tuer) schreiben wir IstOffen(Tuer, s).
Dabei ist s die Historie aller Aktionen: do(Öffnen, do(Hingehen, s0)).
In der Forschung (Golog, Situation Calculus) erlaubt dies das induktive Beweisen. Man kann beweisen: "Egal welche Aktionen man ausführt, solange keine 'Schließen'-Aktion dabei ist, bleibt die Tür offen." Fluents sind also nicht nur Variablen, sondern Indices in einen unendlichen Baum von möglichen Welten.
2. Fluents in Golog (Agentensteuerung)
In der Sprache Golog (Logic Programming for Robots) werden Fluents genutzt, um die Welt des Agenten zu definieren.
Ein wichtiger Punkt ist der Unterschied zwischen Primitive Fluents (direkt durch Aktionen änderbar) und Defined Fluents.
IstGefaehrlich(Raum, s) :- IstOffen(Gasleitung, s), Temperatur(Raum, s) > 100.
Hier ist IstGefaehrlich ein abgeleitetes Fluent. Es ändert sich automatisch, wenn sich die zugrunde liegenden Faktoren ändern. In der Produktion spart das tausende von "Update"-Regeln, da die Logik der Welt automatisch mitfließt.
3. Fluents & Die "Persistenz-Gleichung"
Die modernste Art, Fluents zu handhaben, sind Successor State Axioms (Reiter's Solution).
Die Gleichung sieht so aus:
Fluent(s') <=> (Aktion_verursacht_Fluent OR (Fluent(s) AND NOT Aktion_beendet_Fluent)).
Das ist die perfekte mathematische Lösung für das Frame-Problem. Es besagt: Ein Ding ist jetzt wahr, wenn die letzte Aktion es wahr gemacht hat ODER wenn es vorher wahr war und die letzte Aktion es nicht kaputt gemacht hat. Diese Formel ist die Basis für fast alle modernen symbolischen Planer in der KI.
Quick-Check
Sind Variablen Fluents?
In Java: Ja, jede Variable ist ein Fluent (sie ändert ihren Wert). In der Mathe/Logik: Nein, Variablen sind Platzhalter (x=5), die sich innerhalb einer Formel nicht ändern. Fluents sind die Brücke zwischen Mathe-Statik und Welt-Dynamik.In Physik?
Dort heißt es "Zustandsgröße" (Temperatur T(t)).Warum der Name?
Vom Lateinischen "fluere" (fließen). Alles fließt (Panta Rhei).