#

move it 2

In diesem Teil beschäftige ich mich etwas detailierter mit der internen Repräsentation der topologischen Welt im Agenten, sowie mit dem Sichtfeld eines Agenten.

Attribute für Felder der internen Repräsentation

Zum Aufbau einer internen Repräsentation der Welttopologie muss ein Agent zu den Feldern bestimmte Informationen ablegen. Zu Beginn kennt der Agent das Feld, auf dem er sich befindet. Dieses Feld erhält im internen Graphen den Vermerk A für Active / Actual. Weiterhin kann der Agent, festgelegt durch seinen Sichtradius, einige benachbarte Felder sehen. Diese werden im Graphen als G wie SeeinG markiert. Das folgende ASCII soll dies verdeutlichen. Die Felder O stellen unbekannte beliebige Felder vor. * markiert ein unüberwindbares Feld. Links ist die Welt zu sehen, wie sie tatsächlich ist, rechts die aktuelle interne Repräsentation des Agenten.

OOOOO
O*OOO
GGOOO
AGOOO
 
O
|
G-G-O
| |
A-G-O

Der Agent kann in diesem Fall erkennen, dass es zwischen den sichtbaren Feldern Verbindungen gibt. Auch kann er erkennen, dass von den sichtbaren Feldern weitere Verzweigungen zu unbekannten Feldern (O) führen. Bewegt sich der Agent um ein Feld nach Rechts, so ändern sich die Informationen in der internen Repräsentation. Felder, die bereits gesehen wurden, aber nicht mehr im Sichtbereich sind, erhalten den Vermerk S für Seen. Ein weiterer Vermerk ist V für Visited, Felder die bereits besucht wurden.

OOOOO
O*OOO
GGGOO
GAGOO
 
O   O
|   |
S-G-G-O
| | |
V-A-G-O

Auf diese Weise wird der Graph der internen Repräsentation durch Erkundungen erweitert und aktualisiert.

Sichtbarkeit

Ein wichtiger Bestandteil der Agentenwahrnehmung ist das Sehen. Der Agent hat ein Sichtfeld (z.B. 180° oder 360°) mit einem Sichtradius (z.B. 1 Feld). Es ist Aufgabe der Welt bzw. der physikalischen Gegebenheiten, festzustellen, was ein Agent sehen kann. Der Agent seinerseits kann dann diese Information abfragen. Die Bestimmung, was ein Agent sehen kann, hängt davon ab, ob die Felder in sichtweite sind, dem Sichtfeld entsprechen und ob diese Felder „durchsichtig“ sind. Hierzu drei Beispiele:

OOOOO   OGGGO   OGGGO
O*OOO   O*AGO   O*AGG
GGGOO   OGGGO   OGGGO
GAGOO   OOOOO   GOGOG

Im ersten Fall ist nichts besonderes gegeben. Durch die Begrenzung der Welt ist das Sichtfeld und die Sichtweite (hier 1 Feld) gegeben. Im zweiten Fall besitzt der Agent ein Sichtfeld von 360° und kann durch das undurchsichtige Feld (*) nicht sehen. Im dritten Fall hat der Agent ebenfalls ein Sichtfeld von 360° und eine Sichtweite von 2 Feldern. Dennoch kann er die Felder hinter dem undurchsichtigen Feld nicht erblicken.
Für die Berechnung der sichtbaren Felder kann ein einfacher Manhattan Algorithmus benutzt werden, bei dem Felder in 8 Richtungen sichtbar sind:

  • Horizontale und vertikale Felder:
    Hierbei können die sichtbaren Felder einfach durch Iterieren auf dem abstrakten Graphen ermittelt werden. Kommt ein Feld, das undurchsichtig ist, so hört der Algorithmus in dieser Richtung auf.
  • Diagonale Felder:
    Diagonale Sichtlinien können durch Anwenden der Iterationsregeln geradeaus+Abbiegen pro Sichtweite wie oben abgehandelt werden. Dabei müssen beide Möglichkeiten ein diagonales Feld zu erreichen ausgewertet werden. Also z.B. für das Feld links unten muss der Pfad links+runter sowie runter+links getestet werden. Ist einer der Pfade nicht sichtblockiert, so kann der Agent dieses Feld sehen.
  • Leave a Reply »»

    Note: All comments are manually approved to avoid spam. So if your comment doesn't appear immediately, that's ok. Have patience, it can take some days until I have the time to approve my comments.