Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

ChuChu Zeit im Agentensystem.

Ähnliche Präsentationen


Präsentation zum Thema: "ChuChu Zeit im Agentensystem."—  Präsentation transkript:

1 ChuChu Zeit im Agentensystem

2 Überblick Zeit im Multi-Agenten-System – Randbedingungen für ChuChu
Erweiterung der Agenten Details ClockAgent – TimeKQMLAgent Anwendung in TrainAgent/Beispiel Zeit im Objektmodell

3 „Zug Z soll um t Uhr von A nach B fahren“
Idee der Zeit fehlt im Multi-Agenten-Modell Nötig: einheitlicher Zeitbegriff für alle Agenten Gleichzeitigkeit/Nachzeitigkeit  gleiche Zeit Proportional zur Realzeit  Referenzzeit (Agenten u.U. verteilt!) Agentenmodell  Autonomie Zeit im Objektmodell

4 Implementationsentscheidungen
Bereitstellung Referenzzeit durch ClockAgent Zeiteinheit: „Spielminute“ = TimeFactor Sekunden (frei wählbar) „Stellgenauigkeit“ in Sekunden  Präzision = 1 sec Für Agenten sichtbare Resolution: TimeFactor sec (änderbar) Möglichst große Autonomie der Agenten: eigene Zeit durch Systemuhr, aber Weltwissen muss anfangs von ClockAgent eingeholt werden Zeit im Objektmodell

5 Klassenhierarchie TimeKQMLAgent Clock KQMLAgent ClockAgent TrainAgent
RouteAgent (StationAgent) (Spezialisierungen) Zeit im Objektmodell

6 tsim = (int) ((tSystem(Agent) – t0(Agent)) / f)
Zeitübermittlung TimeKQMLAgent Systemzeit tSystem‘ TimeKQMLAgent Systemzeit tSystem‘ Nullzeit t0‘ Umrechnungsfaktor f query time ClockAgent Systemzeit tSystem Nullzeit t0 Umrechnungsfaktor f (tSystem–t0, f) tsim = (int) ((tSystem(Agent) – t0(Agent)) / f) [f] = 1min/s Zeit im Objektmodell

7 ClockAgent CLOCK Systemuhr query time waitForRequests() ERROR
receiveKQMLmess() processKQMLmess(...) ERROR TimeRecipients: TRAIN1, TRAIN2,... doWork() sleep(n*60) forall(TimeRec.) tellTime(...) Systemuhr tell time tellTime(receiver) TimeFactor, StartingTime tell time Zeit im Objektmodell

8 TimeKQMLAgent - Initialisierung
Tochterklasse, z.B. TrainAgent query time inittime() sendKQMLmess(...) sleep(...) CLOCK TimeInitialized = true TimeFactor = ... StartingTime = ... TimeInitialized = false tell time processTimeMessage() processKQMLmessage() Zeit im Objektmodell

9 TimeKQMLAgent – Funktionalität
Aktuelle Zeit int currentTime(); int currentDay(); int currentHour(); int currentMinute(); Umrechnungen int calcDay(int minutes); int calcHour(int minutes); int calcMinute(int minutes); int timeFromHourMin(int hour, int min); String-Konversion int timeFromString(const char* timestring); string timeToString(int time); string daytimeToString(int time); TimeKQMLAgent Tochterklasse TimeFactor StartingTime Systemuhr currentTime() ... Zeit im Objektmodell

10 Anwendung: TrainAgent
Bisher: 2 Threads + grafische Steuerung doWork() waitForRequests() Neuer Thread: doSchedule() Terminierte Ereignisse werden KQML-stringcodiert in Listenobjekt Schedule abgelegt doSchedule() überprüft die Liste regelmäßig mittels Vergleich mit currentTime() Bei Übereinstimmung: processKQMLmessage(...) Zeit im Objektmodell

11 ...TrainAgent graphisch TRAIN_Z t / doWork() doSchedule()
sleep(1) check schedule waitForRequests() travel(A,B,t) processKQMLmessage(...) Wissen Schedule travel(from,to,time=-1) t / travel(A,B) (pathreserve...) Zeit im Objektmodell

12 Zusammenfassung/Ausblick
Grundfunktionalität zur agenteninternen Arbeit mit Zeit vorhanden Grundfunktionalität zur Kommunikation über Zeit vorhanden Aber: Wegeplanung/Reservierung muss Reservierungszeit/-zeiträume vorsehen – work in progress Zeit im Objektmodell

13 Threads Threads = konkurrierende Prozesse, die sich einen Adressraum teilen Vorteile: gemeinsamer Zugriff auf Daten möglich meist effizienter (betriebssystemabh.) Nachteil: Synchronisation notwendig! Pthreads: Mutexes sollen Daten vor konkurrierendem Zugriff schützen – „Locking“ Zeit im Objektmodell


Herunterladen ppt "ChuChu Zeit im Agentensystem."

Ähnliche Präsentationen


Google-Anzeigen