-
HINTERGRUND
UND ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein verteilte Informationssysteme.
Insbesondere betrifft die Erfindung einen skalierbaren Multicast-Algorithmus
für bewegliche
Agenten. Anwendungen für
die Erfindung sind u.a. das intelligente Transportsystem, in dem
intelligente Fahrzeuge mit einem Netzwerk verbunden sind und regelmäßig Zustandsinfonnationen
wie Position, Geschwindigkeit, Verkehrs- und Wetterbedingungen u.ä. senden.
Die Erfindung hat weitere Nützlichkeit
in dem intelligenten kooperativen Transportsystem, in dem Fahrzeuge
zusammenarbeiten, um Waren an ihren Zielort zu liefern. Die Grundsätze der
Erfindung lassen sich auch auf andere Anwendungen mit beweglichen
Objekten erweitern, einschließlich
Netzwerkspiele für
mehrere Benutzer.
-
Verteilte
Informationssysteme werden mit der stetig zunehmenden Zahl von Vorrichtungen,
die Konnektivität
auf dem Internet herstellen, immer beliebter. Ein wichtiger Typ
verteilter Informationssysteme betrifft Klienten, die nur an Informationen
zu ihrer unmittelbaren geografischen Umgebung interessiert sind.
Das Verfahren der Erfindung beabsichtigt, solche Informationen effizient
zu erfassen und abzurufen. Eine besonders vielversprechende Anwendung betrifft
das intelligente Transportsystem. Sobald die Mehrzahl aller Fahrzeuge
mit drahtloser Internet-Konnektivität ausgestattet sind, können auf
den Fahrzeugcomputersystemen laufende Softwareanwendungen verwendet
werden, um ein verteiltes Informationssystem aufzubauen.
-
In
einem solchen System würde
jedes Fahrzeug sowohl als Datenquelle als auch als Datenziel dienen,
und Informationen zum Ort jedes Fahrzeugs, seiner Geschwindigkeit,
seiner Fahrtrichtung und andere Zustandsinformationen wie Verkehrs-
und Wetterbedingungen sammeln. Praktisch würde jedes Fahrzeug Informationen
zu seinem Zustand sammeln und diese Informationen an interessierte
Fahrzeuge senden, die die Informationen nutzen würden.
-
Eine
gebräuchliche
Möglichkeit,
ein verteiltes Informationssystem für diese Art von Anwendung aufzubauen,
besteht darin, einen zentralen Server einzurichten, der Informationen
von allen Benutzern (z. B. allen Fahrzeugen) sammelt. Ein solcher
Steuerungsserver wird in Habetha J. et al, "Outline of a centralized multihop ad
hoc wireless network",
Computer Networks, Vol. 37, No. 1, Seiten 63–71, September 2001 beschrieben.
Wenn ein Benutzer Informationen zu den Bedingungen in einer Region
erhalten möchte,
schickt der Benutzer eine Anfrage an den Server und der Server überträgt die Ergebnisse dann
an den anfragenden Benutzer zurück.
Dieses Vorgehen hat Skalienangsprobleme, da mit zunehmender Anzahl
von Benutzern in der Anwendung die Netzwerkbandbreite und die vom
zentralen Server benötigten
Verarbeitungsmittel rasch zunehmen. Der zentrale Server wird schnell
zu einem Flaschenhals und zu einem einzelnen Versagenspunkt für das System.
-
Ein
weiteres gebräuchliches
Verfahren besteht darin, alle Benutzer einer gemeinsamen Multicast-Gruppe
beitreten zu lassen, über
die sie alle Informationen aussenden. Nach dem Empfangen von Informationen
von der Multicast-Gruppe, muss jeder Benutzer diejenigen Nachrichtern
herausfiltern, die er für überflüssig hält. In der
Verkehrsanwendung interessiert sich beispielsweise ein Benutzer
im Nordosten der Stadt nicht für
Verkehrsbedingungen im Südwesten
und konfiguriert daher möglicherweise die
Client-Anwendung so, dass Informationen zum Südwesten als überflüssig herausgefiltert
werden.
-
Obwohl
das Vorgehen mit gemeinsamem Multicast das mit einem einzelnen Server
assoziierte Problem des einzelnen Versagenspunkts löst, ist
der Preis dafür
jedoch sehr hoch, da die Netzwerkbandbreitenanforderungen und die
vom Bordcomputer jedes Benutzers verbrauchten Verarbeitungsmittel stark
erhöht
sind.
-
Die
vorliegende Erfindung behandelt dieses Problem, durch Bereitstellung
mehrerer Multicast-Gruppen. Das System unterteilt ein Gebiet in Regionen
oder Zellen und assoziiert jede Region oder Zelle mit einer Multicast- Gruppenadresse. So erfahren
Benutzer, die sich nur für
Informationen in ihrem sie unmittelbar umgebenden Gebiet oder Sichtbereich
interessieren, Informationen von Interesse durch Kooperation mit
anderen Benutzern in der Nähe.
So würde
ein Benutzer im Nordwesten unter Verwendung der mit dieser Zelle
assoziierten Multicast-Gruppenadresse Informationen von anderen Benutzern
in dieser Region oder Zelle einholen. Gleichzeitig würden Informationen
zu den Bedingungen im Südwesten
unter Verwendung einer anderen Multicast-Gruppenadresse mitgeteilt.
So müssen
die Benutzer im Nordosten keine Informationen zum Südwesten
herausfiltern. Wenn natürlich
ein bestimmter Benutzer daran interessiert ist, Informationen zu
einer anderen Region oder Zelle zu erhalten, muss das gut konzipierte
System in der Lage sein, diese zu liefern. Die vorliegende Erfindung
ermöglicht
dies durch Anwenden einer dynamisch rekonfigurierbaren Quadtree-Datenstruktur,
die die aktuelle Konfiguration und Beziehung aller Zellen oder Regionen
speichert. Obwohl die Quadtree-Struktur derzeit bevorzugt wird,
können
auch andere Datenstrukturen wie Kd-Bäume oder ähnliches verwendet werden. Die
Datenstruktur wird von einem Partitionierungsserver oder -servem
geführt
und aktualisiert, wobei es sich um einen zentralen Server oder um
verteilte Server handeln kann, der bzw. die die optimale Größe und Gruppierung
von Zellen basierend auf den sich ständig ändernden Bedürfnissen
der Benutzer bestimmt bzw. bestimmen.
-
Wenn
sich die Fahrzeuge für
bewegliche Objekte von Ort zu Ort bewegen, holt der Partitionierungsserver
Informationen über
diese Bewegung ein und rekonfiguriert die Quadtree-Datenstruktur,
um die Leistung zu optimieren. So werden Regionen mit einer hohen
Dichte von Benutzern in eine größere Anzahl
von Zellen unterteilt, indem eine oder mehrere bestehende Zellen
in kleinere partitioniert werden. Im Gegensatz dazu können schwach
besetzte Regionen durch Zusammenführen kleinerer, schwächer besetzter,
aneinandergrenzender Zellen zu größeren Zellen zugewiesen werden.
-
Gemäß einem
Aspekt der Erfindung weist der dynamische Quadtree-Partitionierungsalgorithmus
für jede
Zelle einen Koordinator zu, der von den Benutzern dieser Zelle gewählt wird.
Der Koordinator schätzt
dann, basierend auf örtlicher
Kenntnis der Nutzungsbedingungen, die mit dem Teilen bzw. Zusammenführen seiner
Zelle assoziierten Kosten ab. Dadurch dass ein gewählter Koordinator
diese Funktion ausführt,
müssen
die anderen Benutzer in der Zelle zum Sammeln dieser Informationen
keine Rechenressourcen aufwenden. Der Koordinator schickt die Kosteninformationen
an den Partitionierungsserver. Der Partitionierungsserver verwendet
einen Algorithmus, um zu bestimmten, welche Zellen geteilt und welche
Zellen zusammengeführt
werden müssen,
um die globalen Kosten zu minimieren, wodurch die Leistung des Systems
optimiert wird. Der Partitionierungsserver sendet das neue Partitionsschema dann
an alle Benutzer aus. Auf diese Weise wird allen Benutzern mitgeteilt,
welche Zellen für
die Kommunikation verfügbar
sind. Wenn daher ein Benutzer im Nordwesten Informationen vom Südosten erhalten möchte, kann
dieser Benutzer feststellen, welche Zelle derzeit mit dem Südosten assoziiert
ist und möglicherweise
Informationen von Interesse enthält.
-
Die
Erfindung stellt also eine Hybridlösung bereit, die sowohl verteilte
Komponenten (Multicasting, Koordinator) als auch zentralisierte
Komponenten (Partitionierungsserver) nutzt, um ein Gebiet dynamisch
zu partitionieren, so dass die beweglichen Objekte effizient gruppiert
werden. Ein umfassenderes Verständnis
der Erfindung, ihrer Aufgaben und Vorteile erhält man aus der nachfolgenden
Beschreibung und den beiliegenden Zeichnungen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird anhand der ausführlichen Beschreibung und der
beiliegenden Zeichnungen verdeutlicht, wobei:
-
1 eine
zeichnerische Darstellung eines beispielhaften geografischen Gebiets
ist, das in Regionen oder Zellen unterteilt wurde und für das Verständnis der
Grundsätze
der Erfindung nützlich
ist;
-
2 ein
Blockdiagramm einer Client-Anwendung gemäß einer derzeit bevorzugten
Ausführungsform
ist;
-
3 ein
Datenstrukturdiagramm ist, das ein Beispiel einer Quadtree-Datenstruktur
veranschaulicht;
-
4 ein
Datenflussdiagramm ist, das die Beziehungen zwischen den beweglichen
Einheiten, dem gewählten
Koordinator und dem Partitionierungsserver veranschaulicht;
-
5 ein
Ablaufdiagramm des dynamischen Partitionierungsalgorithmus ist;
-
6 eine
beispielhafte Quadtree-Datenstruktur ist, die mit beispielhaften
beweglichen Einheiten besetzt ist und zum Verständnis des Koordinator-Wahlprozesses
nützlich
ist; und
-
7 ein
derzeit bevorzugter absteigender Greedy-Algorithmus zum Unterteilen von Zellen
ist.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Der
dynamische Multicast-Gruppierungsalgorithmus der vorliegenden Erfindung
hat vielerlei Nutzen. Um die Grundsätze der Erfindung zu lehren, ist
in 1 eine Anwendung zur verteilten Verkehrsbedingungserfassung
dargestellt. Bewegliche Einheiten bewegen sich innerhalb eines geografischen Gebiets
und kommunizieren Verkehrsbedingungen untereinander, indem sie verschiedenen
Multicast-Gruppen beitreten, die jeweils mit einer Region oder Zelle
innerhalb des geografischen Gebiets assoziiert sind. Obwohl es sich
bei den beweglichen Einheiten um Kraftfahrzeuge handeln kann, sollte
es klar sein, dass die Grundsätze
der Erfindung ohne Weiteres auf andere Arten von beweglichen Einheiten
wie Flugzeuge, Fußgänger oder
sogar Pakete und Waren unterwegs angewandt werden können. Außerdem hat
die Erfindung, obwohl hier die Anwendung der verteilten Verkehrsbedingungserfassung dargestellt
wurde, vielerlei verschiedene andere mögliche Anwendungen. Ein weiteres
Beispiel einer solchen Anwendung ist das intelligente kooperative Transportsystem,
bei dem Fahrzeuge mit anderen Fahrzeugen kooperieren, um andere
Waren an die richtigen Zielorte zu liefern. Die Erfindung kann außerdem in
Netzwerkspielen für
mehrere Benutzer und in anderen Simulationen verwendet werden.
-
In 1 ist
unter 10 eine Landkarte des District of Columbia abgebildet.
Die Landkarte zeigt ein beispielhaftes geografisches Gebiet von
Interesse, das das District of Columbia und die umgebenden Gebiete
in Virginia und Maryland einschließt. Unter 12 ist eine
Kopie der selben Landkarte des District of Columbia gezeigt, die
mit einer Bevölkerung
von beweglichen Einheiten 14 überlagert ist. Beispielsweise könnte es
sich bei jeder der beweglichen Einheiten um ein Auto, einen Lastwagen
oder ein anderes Fahrzeug handeln, das mit der Client-Anwendungssoftware
gemäß der Erfindung
ausgestattet ist. Jede bewegliche Einheit ist weiter mit geeigneter
Internet-fähiger
Kommunikationsausrüstung
ausgestattet, damit die bewegliche Einheit Kommunikation mit anderen
beweglichen Einheiten aufbauen kann, indem sie einer oder mehreren
Multicast-Sitzungen beitritt. Die Verteilung der Bevölkerung
mobiler Einheiten kann eine beliebige Verteilung von gleichmäßiger Verteilung
zu Normalverteilung, zu stark geballter oder gebündelter Verteilung sein. Darüber hinaus kann
erwartet werden, dass sich die Verteilung im Lauf des Tages verändert, wenn
sich die beweglichen Einheiten beim Erledigen ihrer Geschäfte im Gebiet herum
bewegen. Zum Zweck der Veranschaulichung wurde in 1 eine
gleichmäßige Verteilung
dargestellt. Eine geballte oder gebündelte Verteilung wäre jedoch
eher zu erwarten, da verschiedene Teile des Distrikts unweigerlich
mehr Verkehr haben als andere.
-
Zwei
mobile Einheiten 14 und 16 wurden in 1 genauer
abgebildet. Die Größe bzw.
der Maßstab
der Einheiten wurde zum Zweck der Veranschaulichung übertrieben.
Die Einheit 14 besetzt einen Ort, der nördlich und westlich der Einheit 16 liegt. Jede
Einheit hat einen durch den Kreis 18 bzw. 20 dargestellten
Sichtbereich, der dem geografischen Gebiet entspricht, für das die
Einheit Interesse an der Beschaffung von Informationen hat. Es ist
zu beachten, dass sich die Sichtbereiche 18 und 20 dieser zwei
abgebildeten beweglichen Einheiten zufällig überlappen. Das bedeutet, dass
diese beiden Einheiten ein gemeinsames Interesse haben. Dies ist
keine Systemanforderung, da jede Einheit ihren eigenen Sichtbereich
kontrolliert und daher so viel Fläche einschließen oder
ausschließen
kann, wie gewünscht.
-
Kollektiv
stellen alle kommunizierenden Einheiten eine Menge globaler Informationen 22 zusammen,
die aus all den kollektiven Mengen lokaler Informationen, wie den
mit der Einheit 16 assoziierten lokalen Informationen 24,
besteht. In der derzeit bevorzugten Ausführungsform werden die globalen
Informationen 22 auf verteilte Weise geführt. Es
ist daher nicht notwendig, ein komplettes Exemplar der globalen
Informationen in eine zentrale Datenbank hochzuladen und zu speichern.
Die globalen Informationen existieren statt dessen in einem verteilten
Zustand, in Form einer Sammlung lokaler Informationsmengen. Jede
bewegliche Einheit kann gemäß ihrem spezifischen
Sichtbereich auf die für
diese bewegliche Einheit relevanten Informationen zugreifen. Da die
lokalen Einheiten ihre jeweiligen Sichtbereiche kontrollieren, kann
jede bewegliche Einheit, bei Bedarf Informationen zu einer beliebigen
Region innerhalb des geografischen Gebiets einholen. In einer Verkehrsanwendung
interessiert sich die bewegliche Einheit typischerweise für die Verkehrsbedingungen in
der Nähe.
-
Bewegliche
Einheiten kommunizieren typischerweise basierend auf geografischen Überlegungen
mit anderen beweglichen Einheiten, um Informationen zu erhalten.
Einheiten kommunizieren mit anderen Einheiten, die physikalisch
in einer geografischen Region von Interesse anwesend sind oder die Informationen über eine
geografische Region von Interesse eingeholt haben. Die beweglichen
Einheiten stellen fest, mit welchen anderen Einheiten sie kommunizieren
möchten,
indem sie eine gemeinsame Datenstruktur verwenden, die reflektiert,
wie die beweglichen Einheiten geografisch gruppiert oder angeordnet
sind. Damit alle beweglichen Einheiten eine gemeinsame Basis erhalten,
um zu organisieren, wie sie gruppiert werden, verwendet die derzeit
bevorzugte Ausführungsform
eine Quadtree-Datenstruktur, die dynamisch aktualisiert wird, um
die sich ändernden
Verteilungsmuster der sich bewegenden Einheiten zu reflektieren.
In der bevorzugten Ausführungsform
wird die Quadtree-Datenstruktur
basierend auf den lokal gesammelten und ausgewerteten Informationen
zentral vom Partitionierungsserver generiert. Bei jeder Revision
des Quadtrees wird eine Kopie der Quadtree-Datenstruktur gemeinsam
von den Einheiten genutzt.
-
Jeder
Knoten oder jede Zelle innerhalb der Quadtree-Datenstruktur hat eine zugewiesene Multicast-Gruppenadresse.
Eine bewegliche Einheit, die Informationen zu mit dieser Zelle assoziierten
Bedingungen erhalten möchte,
nimmt einfach an der Multicast-Gruppe teil. Die Quadtree-Datenstruktur
leitet so, basierend auf dem aktuellen Sichtbereich der jeweiligen
Einheit, die beweglichen Einheiten beim Bestimmen, welchen Multicast-Gruppen
sie beitreten sollen.
-
Jede
bewegliche Einheit wirkt in der bevorzugten Ausführungsform sowohl als Datenquelle
als auch als Datenziel. Dies wurde zeichnerisch in 1 unter 26 und 28 dargestellt.
-
In
der derzeit bevorzugten Ausführungsform verfügt jede
bewegliche Einheit über
ein Computersystem, auf dem eine Client-Anwendung läuft, die
in 2 funktionell beschrieben ist. Die Client-Anwendung
hat einen Datenziel-Port 40, durch den eingehende Informationen
von der kollektiven Menge globaler Informationen 22 eintreffen.
Da die globalen Informationen 22 typischerweise auf verteilte
Weise gespeichert sind, kommt der tatsächliche Datenfluss von einer
oder mehreren beweglichen Einheiten, mit denen die Client-Anwendung unter Verwendung
eines oder mehrerer Multicast-Kanäle in Kommunikation steht.
-
Damit
die Client-Anwendung außerdem
Informationen an die Menge globaler Informationen 22 liefern
kann, umfasst die Client-Anwendung einen Datenquellen-Port 42.
Lokale Informationen werden im lokalen Datenspeicher 44 gespeichert.
Wie abgebildet, liefert dieser lokale Datenspeicher Informationen
an den Datenquellen-Port 42. Er empfängt außerdem Informationen vom Datenziel-Port 40,
nachdem diese zuerst von einem Informationsfilter 46 verarbeitet
wurden. Der Informationsfilter siebt überflüssige Informationen, wie Informationen,
die nicht den Sichtbereich der beweglichen Einheit betreffen, heraus.
-
Der
lokale Datenspeicher ist vorzugsweise im computerlesbaren Speicher
gespeichert, der von der Client-Anwendung verwaltet wird. Der lokale
Datenspeicher erhält
Informationen über
die bewegliche Einheit und ihre Mitgliedschaft innerhalb einer Heimatzelle
des Quadtree, wie zeichnerisch unter 50 dargestellt. Der
lokale Datenspeicher erhält
außerdem
weitere lokale Zustandsinformationen, die Anwendungsspezifisch sind.
Wie zeichnerisch unter 52 dargestellt, können die
lokalen Zustandsinformationen Daten zum Ort der beweglichen Einheit,
ihrer Geschwindigkeit sowie andere relevante Positionsdaten und
andere Bedingungen wie Temperatur, Windgeschwindigkeit und andere
Umgebungsbedingungen umfassen.
-
In
der derzeit bevorzugten Ausführungsform hat
jede bewegliche Einheit die Möglichkeit,
als Koordinator für
die Zelle, in der sich die Einheit befindet, zu dienen. Der Koordinator
ist dafür
verantwortlich, Überlastungsbedingungen
in dieser Zelle abzuschätzen
und zu beurteilen, ob diese Zelle unterteilt oder mit anderen Zellen
zusammengeführt
werden muss, um die Leistung zu verbessern. In der bevorzugten Ausführungsform
wird für
jede Zelle ein einziger Koordinator gewählt, basierend darauf, wo sich
eine bewegliche Einheit physikalisch in der Zelle befindet. Bei
Bedarf können
statt dessen andere Kriterien herangezogen werden. Die Client-Anwendung
nutzt ein Verarbeitungsmodul 54, das auf Informationen
zur aktuellen Quadtree-Konfiguration
und zum Ort der beweglichen Einheit in einer bestimmten Zelle vom lokalen
Datenspeicher 44 zugreift, um festzustellen, ob diese Einheit
die Bedingungen erfüllt,
um der Koordinator zu sein. Alle übrigen beweglichen Einheiten haben
das gleiche Modul 54 und sind daher ebenfalls in der Lage
festzustellen, ob sie als Koordinator geeignet sind. Die Regeln
für die
Koordinatorwahl sind so konzipiert, dass in der derzeit bevorzugten
Ausführungsform
nur genau ein Koordinator pro Zelle gewählt wird.
-
Da
jede bewegliche Einheit potenziell in der Lage ist, die Anforderungen
zu erfüllen,
um für
eine bestimmte Zelle zum Koordinator gewählt zu werden, umfasst das
Verarbeitungsmodul 54 eine Verarbeitungsroutine, um Kosteninformationen
zu evaluieren, die reflektieren, ob die Zellen unterteilt oder zusammengeführt werden
sollten. Diese Kosteninformationen werden auf der Zellenebene evaluiert
und dann dem Partitionierungsserver mitgeteilt, wie nachfolgend
genauer diskutiert wird. Die derzeit bevorzugte Ausführungsform
schätzt
Kosten basierend auf der Anzahl von Multicast-Gruppenbeitritten
ab, die in einer gegebenen Zelle stattgefunden haben und der Anzahl überflüssiger Nachrichten,
die Mitglieder dieser Zelle herausfiltern oder zurückweisen
mussten. Die Beitrittskosten entstehen dadurch, dass ein Benutzer
den innerhalb von Zellen assoziierten Multicast-Gruppen beitritt.
Die Kosten durch überflüssige Nachrichten
entstehen, indem die Anzahl der von einer Multicast-Gruppe empfangenen
ungewollten Nachrichten gezählt
werden. Durch das Unterteilen einer Zelle in eine Anzahl kleinerer
Nachfolgerzellen wird ein feineres Gitter aufgebaut, durch das das System
eine bessere Fähigkeit
erhält,
zwischen Benutzern zu unterscheiden und so die Anzahl überflüssiger Nachrichten
zu reduzieren. Auf der anderen Seite erhöht das Unterteilen von Zellen
in immer kleinere Nachfolgerzellen den Bedarf daran, dass Benutzer
zusätzlichen
Multicast-Gruppen beitreten, um ihren Sichtbereich zu erfüllen. So
gibt es entweder Einbußen
bei der Anzahl der Multicast-Gruppenbeitritte oder bei der Anzahl
der überflüssigen Nachrichten. Dies
steht direkt mit der Dichte der Benutzer in einem gegebenen Gebiet
in Beziehung.
-
Wie
zuvor angemerkt, nutzt die derzeit bevorzugte Ausführungsform
eine Vierzellen-Datenstruktur, um ein Gebiet darzustellen und darzustellen, wie
dieses Gebiet in Regionen oder Zellen unterteilt wird. Wie in 3 gezeigt,
besteht das Grundprinzip eines Quadtree darin, eine ebene Region
von Interesse mit einem Quadrat oder anderen Form abzudecken und
dann dieses Quadrat bzw. diese Form rekursiv in kleinere Quadrate
bzw. Formen zu partitionieren, bis jede eine ausreichend gleichmäßige Untermenge
der Eingabe enthält.
In der derzeit bevorzugten Ausführungsform
stellt jedes Quadrat eine Zelle dar, der eine Multicast-Gruppenadresse
zugewiesen wird. Obwohl hier eine vierseitige (quadratische) Datenstruktur
abgebildet und derzeit bevorzugt wird, sollte klar sein, dass Datenstrukturen
anderer Geometrien (z. B. Kd-Bäume)
und anderer Abmessungen verwendet werden können, um die Grundsätze der
Erfindung auszuführen.
Dementsprechend soll der Begriff Quadtree, wie er hierin verwendet wird,
n-dimensionale Datenstrukturen abdecken, wobei n ein ganzzahliger
Wert von 2 oder größer ist.
-
In 3 könnte der
Quadtree für
das Gebiet Washington D.C. aufgebaut werden, indem ein Quadrat um
das gesamte Gebiet Washington D.C. gezogen wird und dann rekursiv
dieses quadratische Gebiet unterteilt wird, wie unter 60, 62 und 64 gezeigt,
bis Zellen geeigneter Größe, basierend
auf dem oben diskutierten Evaluieren der Kostendaten, erhalten werden.
In der derzeit bevorzugten Ausführungsform
müssen
nicht alle Zellen die selbe Größe haben.
So kann der Quadrant ganz im Südwesten wie
unter 70 in kleine Zellen unterteilt werden, wohingegen
die Zellen etwas weiter nördlich
und östlich, wie
unter 72, 4 Mal größer sein
können,
während
die übrigen
Zellen noch größer sein
können,
wie unter 76.
-
Gemäß dem von
der Erfindung implementierten dynamischen Repartitionierungsalgorithmus ändern sich
Größe und Konfigurierung
der Quadtree-Zellen dynamisch mit den sich umher bewegenden Einheiten.
Das grundlegende Partitionsschema, nach dem der Quadtree zu einer
beliebigen gegebenen Zeit konfiguriert wird, wird von einem Partitionierungsserver
unter Verwendung von Informationen berechnet, die ihm von den gewählten Koordinatoren jeder
Zelle übergeben
werden. 4 zeigt, wie der Nachrichtenfluss
für diese
dynamische Repartitionierung abläuft.
In 4 ist eine einzige beispielhafte Zelle 70 dargestellt.
In dieser Zelle befinden sich 6 bewegliche Einheiten, die durch
Kreise 72 dargestellt sind. Alle beweglichen Einheiten
in der Zelle 70 kommunizieren miteinander, was durch die
Verbindungslinien dargestellt ist, unter Verwendung einer mit der Zelle 70 assoziierten
Multicast-Gruppenadresse. Unter Verwendung von Wahlregeln, die nachfolgend
in Verbindung mit 6 beschrieben werden, wird eine
der Einheiten zum Koordinator erklärt. Im dargestellten Beispiel
in 4 wurde die bewegliche Einheit in der unteren
rechten Ecke der Zelle 70 zum Koordinator 74 ernannt.
Der Koordinator 74 sammelt Daten zu Beitritten und überflüssigen Nachrichten von
den Mitgliedern der Zelle 70 und überträgt diese Informationen an den
Partitionierungsserver 80. In der derzeit bevorzugten Ausführungsform
kann es sich beim Partitionierungsserver 80 um einen zentralen
Server handeln, der für
alle Zellen in der Region zuständig
ist. Selbstverständlich
kann bei Bedarf ein einziger Server durch ein Netzwerk von Servern
ersetzt werden, um die Partitions-Generierungsfunktion zu verteilen.
-
Der
Partitionierungsserver nutzt einen vordefinierten Algorithmus, um
unter Verwendung von Informationen, die er von allen Koordinatoren
der verschiedenen im Quadtree vertretenen Zellen erhalten hat, ein
neues Partitionsschema zu bestimmen. Er sendet ein neues Partitionsschema 82 an
die beweglichen Benutzer aus, entweder, indem er an alle Benutzer-Multicast-Gruppen sendet oder
indem die Informationen über
einen einzelnen Benutzer wie den Koordinator 74 weitergeleitet
werden. Das System kann für
diesen Zweck eine dedizierte Koordinator-Multicast-Gruppe haben.
Das neue Partitionsschema repräsentiert
einen neuen Quadtree, der von jedem beweglichen Benutzer gespeichert
wird (im lokalen Datenspeicher 44, 2). Die
Quadtree-Informationen
werden dann von jeder beweglichen Einheit genutzt, um basierend
auf dem Sichtbereich dieser Einheit zu bestimmen, welchen Multicast-Gruppen
diese Einheit beitreten soll.
-
Der
derzeit bevorzugte Partitionierungsserver nutzt einen Greedy-Algorithmus 84,
um das neue Partitionsschema zu generieren, indem er die vorhandene
Quadtree-Datenstruktur basierend auf lokal abgeschätzten Kostendaten ändert. Um
die Quadtree-Anfangsdatenstruktur zu generieren wird derzeit ein
absteigender Greedy-Algorithmus bevorzugt. Ein Ablaufdiagramm dieses
Greedy-Algorithmus ist in 7 gezeigt
und wird nachfolgend diskutiert. Bevor der Initialisierungsalgorithmus
beschrieben wird, wird jedoch der in 4 dargestellte
grundlegende dynamische Repartitionierungsprozess unter Verweis
auf das Ablaufdiagramm in 5 und das Quadtree-Diagramm in 6 ausführlicher
beschrieben.
-
In 5 beginnt
der dynamische Partitionierungsalgorithmus bei Schritt 100 mit
der Wahl eines Koordinators. In der derzeit bevorzugten Ausführungsform
wird der Koordinator basierend auf seiner geografischen Nähe zur Mitte
der Vaterzelle, von der seine Zelle abgeleitet wurde, gewählt. Dies
ist in 6 dargestellt. In 6 sind mehrere
bewegliche Einheiten als Kreise dargestellt. Die Einheiten, die
die Koordinatorkriterien erfüllen,
sind schwarz ausgefüllt.
-
Um
den Koordinator-Wahlprozess zu verstehen, betrachtet man zuerst
die große
Zelle 200. Eine ihrer Nachfolgerzellen 202 ist
in Enkelzellen 204, 206, 208 und 210 unterteilt
dargestellt. Jede der Enkelzellen 204–210 wählt einen
Koordinator. Der erfolgreiche Kandidat ist derjenige, der der Mitte
der Vaterzelle dieses Nachfolgers am nächsten ist. In diesem Fall
wurde die Mitte der Vaterzelle 202 mit einem X gekennzeichnet.
Da die Enkelzelle 204 nur eine Einheit enthält, ist
diese Einheit automatisch der Mitte X der Vaterzelle am nächsten.
Die bewegliche Einheit 212 der Enkelzelle 206 ist
der Mitte X näher als
alle anderen Einheiten in dieser Zelle. Daher wird die Einheit 212 als
Koordinator für
Zelle 206 gewählt. Ebenso
gewinnen die Einheiten 214 und 216 den Wettbewerb
um die größte Nähe zur Mitte
in ihren jeweiligen Zellen und werden daher als Koordinatoren gewählt.
-
Obwohl
das Verfahren der größten Nähe zur Mitte
dazu dient, einen Koordinator für
jede Zelle zu bestimmen, können
alternativ andere Verfahren zum Wählen des Koordinators verwendet
werden. Da das System so konzipiert ist, dass es erwartet, dass
sich bewegliche Einheiten umher bewegen, wird die Wahl des Koordinators
mit ausreichender Häufigkeit
wiederholt, um den dynamischen Eigenschaften des verteilten Informationssystems
gerecht zu werden.
-
In 5 schätzt, nachdem
der Koordinatorwahlprozess abgeschlossen ist, in Schritt 102 jeder Koordinator
die Kostenänderungen
des Teilens oder Zusammenführens
seiner Zelle basierend auf lokalen Kenntnissen ab. Der Koordinator
schickt dann in Schritt 104 die Kostenabschätzungsinformationen
an den Server. Der Server verwendet in Schritt 106 einen
Greedy-Algorithmus, um zu entscheiden, welche Zellen geteilt und
welche zusammengeführt
werden, so dass die globalen Kosten minimiert werden. In Schritt 108 sendet
der Server das neu berechnete Partitionsschema an alle Benutzer
zurück.
Dies kann durch eine flächendeckende
Sendung an alle Benutzer-Multicast-Gruppen erfolgen. Wie in Schritt 110 dargestellt,
kann als Option die neue Partition für jede Zelle an den Koordinator
gesendet werden, z. B. über eine
Koordinator-Multicast-Gruppe, und der Koordinator ist dann dafür zuständig, die
lokalen Teilungs- und Zusammenführungsanweisungen
an jedes Mitglied der Zelle des Koordinators weiterzuleiten.
-
Wie
oben angemerkt, nutzt die derzeit bevorzugte Ausführungsform
einen absteigenden Greedy-Algorithmus, um das Anfangs-Partitionsschema für den Quadtree
zu generieren. Der Greedy-Algorithmus ist in 7 dargestellt
und beginnt mit Schritt 300. Im Schritt 300 wird
die große
Zelle, die das gesamte Gebiet einschließt, zuerst analysiert. Der
Algorithmus schreitet rekursiv fort. Für jede Zelle berechnet der
Algorithmus die abnehmenden Kosten, wenn diese Zelle in n kleinere
Zellen unterteilt wird. Dies ist in Schritt 302 dargestellt.
Dann wählt der
Algorithmus aus dem Ergebnis von Schritt 302 die Zelle,
die die größte Kostenabnahme
hat. Er teilt dann diese Zelle in n = 4 kleinere Zellen, wie unter 304 gezeigt.
Schritte 302 und 304 werden dann wiederholt, bis
alle Zellen verarbeitet wurden oder bis die Kosten nicht mehr abnehmen,
wie in Schritt 306 gezeigt. Obwohl der absteigende Algorithmus
derzeit bevorzugt wird, sind auch andere Algorithmen möglich. Beispielsweise
könnte
das neue Partitionsschema unter Verwendung eines absteigenden Greedy-Algorithmus
basierend auf der Anzahl Benutzer oder eines aufsteigenden Greedy-Algorithmus
berechnet werden. Ein Beispiel eines absteigenden Greedy-Algorithmus
basierend auf der Anzahl Benutzer hat folgende Schritte:
- 1. Beginne mit einem das Gebiet umschließenden Quadrat
als die große
Zelle. Berechne für
jede Zelle innerhalb der großen
Zelle die Anzahl Benutzer in dieser Zelle.
- 2. Wähle
aus dem Ergebnis des vorangehenden Schritts die Zelle mit der größten Anzahl
Benutzer und teile sie in vier kleinere quadratische Zellen.
- 3. Wiederhole die vorangehenden zwei Schritte, bis alle Gruppenadressen
(Zellen) aufgebraucht sind oder die Anzahl Benutzer in jeder Zelle
kleiner als ein Schwellenwert ist.
- 4. Falls noch Gruppen verfügbar
sind, mit einem Greedy-Algorithmus,
wie dem in 7 gezeigten Algorithmus weiter
teilen.
-
Ein
Beispiel eines aufsteigenden Greedy-Algorithmus hat die folgenden
Schritte:
- 1. Unterteile das Gebiet gemäß einem
vollständigen
Quadtree einer gegebenen Tiefe in Zellen.
- 2. Berechne für
jeden zusammenführbaren
Knoten (das heißt
jeder Knoten, der vier Blattnachfolger hat) die Kostenzunahme.
- 3. Wähle
den Knoten mit der geringsten zusammengeführten Kostenzunahme und führe ihn
zusammen.
- 4. Wiederhole die beiden vorangehenden Schritte, bis die Anzahl
Zellen der Anzahl verfügbarer Multicast-Gruppen
entspricht.
-
Im
Gebrauch nutzen die beweglichen Einheiten ihre jeweiligen Sichtbereiche
und den aktuellen Quadtree, um ein Zustandsverbreitungsprotokoll
zu bewirken. Das Protokoll ist so konzipiert, dass sichergestellt
wird, dass die von jeder beweglichen Einheit ausgehende Zustandsnachricht
alle anderen interessierten Einheiten erreicht. Das Protokoll umfasst
die folgenden Schritte:
- 1. Jeder Benutzer berechnet
unter Verwendung seiner Kenntnis des aktuellen Partitionsschemas, das
in der Quadtree-Datenstruktur
reflektiert wird, die Zellen, die seinen eigenen "Sichtbereich" schneiden.
- 2. Jeder Benutzer tritt allen mit diesen schneidenden Zellen
assoziierten Multicast-Gruppen bei und bereitet sich darauf vor,
Informationen von diesen Multicast-Gruppen zu erhalten.
- 3. Jeder Benutzer schickt seine Zustandsinformationen an seine
eigene "Heimat"-Zellengruppe (das
heißt,
die Zellengruppe, in der er sich befindet).
- 4. Nach er die Informationen von allen Multicast-Gruppen, denen
er beigetreten ist, empfangen hat, filtert der Benutzer überflüssige Nachrichten
heraus und führt
ein Protokoll der Anzahl herausgefilterter Nachrichten, so dass
diese Informationen vom Koordinator als Kostenmetrik verwendet werden
können.
-
Die
dynamische Repartitionierung in der derzeit bevorzugten Ausführungsform
wird bewirkt, indem mit der unter Verwendung des Greedy-Algorithmus
aus 7 (oder eines gleichwertigen Algorithmus) generierten
statischen Partitionierung begonnen wird. Während sich die beweglichen
Einheiten herum bewegen, können
sie dynamisch Multicast-Gruppensitzungen
beitreten oder diese verlassen. Außerdem werden basierend auf
dem neuen Partitionsschema neue Koordinatoren gewählt. Der derzeit
bevorzugte dynamische Partitionierungsalgorithmus geht gemäß den folgenden
Schritten vor:
- 1. Benutzer bewegen sich herum.
Mit jedem Schritt werden neue Koordinatoren gewählt.
- 2. Die Koordinatoren berechnen die mit dem Teilen jeder seiner
Nachfolgerblätter
assoziierte Kostenabnahme.
- 3. Wenn ein Knoten vier Nachfolgerknoten hat, berechnet der
entsprechende Koordinator die mit dem Zusammenführen dieser vier Knoten assoziierte
Kostenzunahme.
- 4. Die Koordinatoren schicken jeweils die Kosteninformationen
an den Partitionierungsserver. Der Server entscheidet, ob die neue
Partition erstellt werden soll. Mögliche Kriterien umfassen das
regelmäßige Erstellen
einer neuen Partitionierung nach Ablauf einer gewissen Zeit oder
wenn die Kostenabnahme der neuen Partition ein bestimmtes Niveau
erreicht.
- 5. Wenn der Server entscheidet, eine neue Partition zu erstellen,
verwendet er einen Greedy-Algorithmus, um die Zellen zu berechnen,
die geteilt und zusammengeführt
werden müssen,
um das neue Partitionsschema zu erzeugen. Das neue Schema wird an
alle Benutzer ausgesendet.
-
Obwohl
sich der obige Algorithmus auf einen Partitionierungsserver verlässt, um
das neue Partitionsschema zu beschließen, ist die Rechenlast des Servers
sehr gering, da die Kostenabschätzung
verteilt von den Koordinatoren durchgeführt wird.
-
Der
dynamische Partitionierungsalgorithmus der Erfindung wurde unter
Verwendung einer Computersimulation mit echten geografischen Daten
getestet und hat gezeigt, dass er die Nachrichtenkosten um bis zu
80 Prozent senkt. In der Simulation wurde die Leistung des dynamischen
Quadtree-Partitionsalgorithmus
getestet und mit zellenbasierten Protokollen und statischen Quadtree-Partitionen
verglichen. Es wird angenommen, dass das quadratische Simulationsgebiet
eine Seitenlänge
von Eins hat. In der Simulation wurde angenommen, dass alle Benutzer den
selben kreisförmigen
Sichtbereich haben. Der Radius dieses Sichtbereichs wurde zu 0,01
gesetzt. Alle Benutzer wählten
zufällig
eine Richtung und bewegten sich um einen konstanten Schritt in diese Richtung.
Wenn die Bewegung den Benutzer aus dem Gebiet bewegte, wurde der
Benutzer in das Gebiet "zurückgeworfen", so dass die Anzahl
Benutzer konstant blieb. In der Simulation wurde angenommen, dass
alle Benutzer die selbe Schrittgröße haben. Die gewählten Schrittgrößen waren
0,001, 0,002, 0,005 bzw. 0,01. Um die Datenmenge zu reduzieren,
wurde alle 100 Schritte ein Datenpunkt abgetastet. Eine neue Partition
wurde erstellt, wenn die neue Partition die Nachrichtenkosten um
20 Prozent senken würde.
Die Ergebnisse zeigten, dass der dynamische Quadtree-Partitionierungsalgorithmus
bis zu 80 Prozent der Nachrichtenkosten einsparen würde.