Teil 1 hinterließ die Pipeline mit einem Strom kanonischer Track-Beobachtungen, die auf den Message Bus fließen. Jede Beobachtung ist ein isoliertes Atom — „Quelle X meldet Objekt an Position Y mit Geschwindigkeit Z zur Zeit T". Die Aufgabe der Fusions-Engine besteht darin, zu entscheiden, welche Beobachtungen sich auf dasselbe physische Objekt beziehen, sie zu stabilen Tracks mit wachsender Identitätskonfidenz zu akkumulieren, den Lebenszyklus zu verwalten, wenn Beobachtungen aufhören oder neue eintreffen, und eine abfragbare Sicht der Welt für das COP und nachgelagerte Verbraucher bereitzustellen. Teil 2 handelt vom Aufbau dieser Engine.
Die konzeptionelle Referenz ist Militärische Datenfusion erklärt für den Überblick über die Disziplin, das JDL-Datenfusionsmodell für die Ebenenzuordnung und der Pillar-Leitfaden Vollständiger Leitfaden zur Datenfusion in der Verteidigung für den breiteren architektonischen Rahmen.
Schritt 1: Der zweistufige Korrelationsfilter
Die zentrale Entscheidung der Fusions-Engine — ob eine eingehende Beobachtung eine Aktualisierung eines bestehenden Tracks oder die Geburt eines neuen ist — muss nicht mit einem einzigen Algorithmus getroffen werden. Das Muster, das in der Produktion skaliert, verwendet zwei Stufen: einen günstigen regelbasierten Filter, der die einfachen Fälle behandelt, und eine probabilistische Zuordnungs-Engine, die nur dann aufgerufen wird, wenn die Regelschicht mehrdeutig ist.
Die regelbasierte Stufe behandelt die 90 % der Beobachtungen, die eindeutig sind. Für jede eingehende Beobachtung berechnet sie die Menge der Kandidaten unter den bestehenden Tracks innerhalb der kinematischen Reichweite — ein Positions-Zeit-Gate. Identitäts-Priors filtern weiter: eine als „Schiff" getaggte Beobachtung kann nicht zu einem „Flugzeug"-Track passen. Auch Quellenkompatibilität filtert: eine Beobachtung von einem Bodenradar kann nicht zu einem Luft-Track einer Unterwasserplattform passen. Wo das Gate genau einen Kandidaten produziert, der die Identitäts- und Quellenregeln besteht, aktualisiert die Beobachtung diesen Kandidaten direkt. Wo das Gate null Kandidaten produziert, initiiert die Beobachtung einen neuen tentativen Track. Günstig, schnell, erklärbar.
Die probabilistische Stufe wird aufgerufen, wenn die Regelschicht mehrere Kandidaten zurückgibt oder die Track-Dichte hoch genug ist, dass konfidentes Gating unmöglich ist. Joint Probabilistic Data Association (JPDA) berechnet die Wahrscheinlichkeit, dass eine Beobachtung zu jedem Kandidaten-Track gehört, und aktualisiert jeden gewichtet nach der Wahrscheinlichkeit. Multiple Hypothesis Tracking (MHT) hält mehrere Track-Hypothesen über Beobachtungen hinweg und schiebt Zuordnungsentscheidungen auf, bis sich genügend Evidenz angesammelt hat. Beide sind rechnerisch schwerer und schwieriger zu tunen; beide sind nur für die Fälle korrekt, in denen die Regelschicht falsch lag, sich festzulegen.
Eine spezifische Fallstrick, die hervorgehoben werden sollte: MHT erzeugt eine exponentielle Anzahl von Hypothesen ohne Pruning. Die Pruning-Policy — wie viele Hypothesen behalten werden, wann zusammengeführt, wann gelöscht wird — ist wichtiger als der Kernalgorithmus. Standardmäßig aggressiv prunen; nur dann nach außen tunen, wenn operative Evidenz es verlangt.
Schritt 2: Tuning der Regelschicht
Die Regelschicht ist dort, wo der meiste Fusions-Engineering-Aufwand landet. Der Algorithmus ist einfach; das Tuning ist Handwerk.
Die Gate-Parameter, die zählen:
- Kinematische Gate-Größe — wie weit eine Beobachtung von der vorhergesagten Position des Tracks entfernt sein darf, um noch zu passen. Zu klein verfehlt echte Aktualisierungen nach Sensorrauschen; zu groß erzeugt falsche Korrelationen in dichten Szenen.
- Identitäts-Gate — welche Identitätsattribute übereinstimmen müssen (immer: Typtaxonomie; manchmal: Subtyp, Rumpfnummer, Rufzeichen).
- Quellenmengen-Regeln — welche Quellen welche Track-Typen aktualisieren können. Domänenspezifisch (ein maritimes Radar sollte keinen Unterwasser-Track aktualisieren) und plattformspezifisch (ein SIGINT-Kontakt nur mit Peilung darf sich nicht ohne Peilungsabgleich mit einem kinematischen Track assoziieren).
- Toleranz für Zeit seit letzter Aktualisierung — Beobachtungen gegen Tracks, die zu lange schweigen, erzeugen einen neuen tentativen Track, statt sich wieder mit dem alten zu assoziieren.
Standardwerte stammen aus den Genauigkeits- und Latenzprofilen des Quellkatalogs. Operatives Tuning kommt aus dem Replay gegen aufgezeichnete Daten, mit Metriken zur Falsch-Korrelations-Rate und Fehl-Assoziations-Rate. Beschaffungsreife Fusions-Engines haben diese Tuning-Stellschrauben für das operative Team exponiert, pro Einsatz anpassbar; maßgeschneiderte Programme codieren die Werte oft hart und bereuen es, wenn sich der Einsatzkontext verschiebt.
Schritt 3: Wann und wie probabilistische Zuordnung aufrufen
Probabilistische Zuordnung ist das richtige Werkzeug, wenn regelbasiertes Gating keine konfidente Einzelübereinstimmung produzieren kann. Das Signal, dass probabilistische Zuordnung benötigt wird: das Gate gibt mehr als einen Kandidaten zurück, in einer Rate über (sagen wir) 5 % in der operativen Szene.
Das pragmatische Aufrufmuster:
JPDA für moderate Dichte. Wenn das Gate 2-4 Kandidaten pro mehrdeutiger Beobachtung zurückgibt, berechnet JPDA Zuordnungswahrscheinlichkeiten mit kinematischen Priors (Mahalanobis-Distanz von der vorhergesagten Position) und Identitäts-Priors. Track-Aktualisierungen werden nach Wahrscheinlichkeit gewichtet; kein einzelner Track erhält eine „definitive" Aktualisierung, aber die wahrscheinlichsten Kandidaten akkumulieren die Evidenz schneller.
MHT für die schwierigsten Fälle. Wenn das Gate viele Kandidaten zurückgibt und Zuordnungsmehrdeutigkeit über Beobachtungen hinweg fortbesteht, schiebt MHT die Entscheidung auf. Es hält Hypothesen (alternative Interpretationen, welche Beobachtung zu welchem Track gehört) und prunt nach Wahrscheinlichkeit. Nach mehreren Beobachtungen tritt die dominante Hypothese hervor und die anderen werden gelöscht.
Kombinierte Ausgabe. Beide Algorithmen produzieren Aktualisierungen, die in denselben Track Store zurückfließen wie regelbasierte Aktualisierungen. Aus Sicht der nachgelagerten Verbraucher sehen alle Aktualisierungen identisch aus; der Unterschied liegt in den angehängten Konfidenz- und Provenienz-Metadaten.
Die Implementierungsrealität: Gut getestete Open-Source-Bibliotheken existieren sowohl für JPDA als auch für MHT (Stone Soup, FilterPy und angrenzende Werkzeuge). Die meisten operativen Fusions-Engines wrappen eine getestete Bibliothek, statt von Grund auf zu implementieren. Der Engineering-Aufwand liegt in der Integration, dem Tuning und der operativen Härtung — nicht im Algorithmus.
Schritt 4: Die Zustandsmaschine für den Track-Lebenszyklus
Tracks haben Lebenszyklen. Die Zustandsmaschine, die sie regiert, ist eine der operativ folgenreichsten Entscheidungen der Plattform: Operatoren tolerieren fehlende Tracks, aber sie tolerieren keine selbstbewusst angezeigten veralteten Tracks. Der Lebenszyklus ist die Grenze zwischen vertrauenswürdiger und nicht vertrauenswürdiger Anzeige.
Die Zustandsmaschine für das laufende Beispiel:
- Tentative (tentativ). Erste Beobachtung; wartet auf Bestätigung. Wird im operativen COP nicht angezeigt, es sei denn, ein Operator fordert explizit die Sichtbarkeit niedriger Konfidenz an. Zerfällt zu gelöscht, wenn keine Nachfolge innerhalb eines konfigurierbaren Fensters erfolgt.
- Confirmed (bestätigt). Zwei oder mehr korrelierte Beobachtungen innerhalb des Fensters kinematischer Konsistenz. Promotion aus tentativ. Der Standardzustand für angezeigte Tracks.
- Mature (reif). Bestätigt und für mindestens N Minuten mit konsistenten Aktualisierungen persistent. Wird von nachgelagerter Analytik verwendet, die stabile Identität für Verhaltensmusteranalyse oder Verhaltensanalyse benötigt.
- Fading (verblassend). Keine Aktualisierung innerhalb des erwarteten Revisit-Intervalls für diese Quellklasse. Anzeige als veraltet markiert (dunkleres Symbol, Altersindikator). Pro Quellklasse konfigurierbar — ein 30 Sekunden alter maritimer Track ist in Ordnung; ein 30 Sekunden alter Luft-Track verblasst.
- Lost (verloren). Keine Aktualisierung über einen längeren Zeitraum. Aus der aktiven Anzeige entfernt, aber im Track Store für Audit und historische Analyse aufbewahrt.
Die Übergänge sind zeitbasiert und aktualisierungsbasiert, wobei beide einen einzigen Entscheidungsbaum speisen. Jeder Übergang wird mit dem auslösenden Ereignis protokolliert (Beobachtungsaktualisierung, Timeout-Ablauf, Operator-Override). Das Übergangslog speist den Event-Sourced Audit Trail, der in Event Sourcing für Audit Trails in der Verteidigung behandelt wird.
Ein praktisches Detail: Der Lebenszyklusdienst ist ein separater Prozess von der Korrelations-Engine. Er abonniert Track-Update-Events von der Korrelation, berechnet Lebenszyklusübergänge und veröffentlicht sie als separaten Stream auf dem Bus. Die Entkopplung lässt die Lebenszyklus-Policy sich weiterentwickeln, ohne die Korrelations-Engine zu berühren.
Schlüsselerkenntnis: Lebenszyklusverwaltung ist die Schicht, die Fusion auf Demo-Niveau von operativer Fusion trennt. Eine Plattform, die korrekte Tracks produziert, den Operatoren aber nie sagt, wann ein Track veraltet ist, ist eine Plattform, der Operatoren das Vertrauen entziehen. Bauen Sie den Lebenszyklusdienst, bevor der Fusionsalgorithmus vollständig getunt ist — er zahlt sich jedes Mal aus, wenn eine Sensorverbindung abbricht.
Schritt 5: Der Track Store als Event-Sourced Read Model
Fusion gibt einen Strom von Track-Aktualisierungen und Lebenszyklusübergängen aus. Der Track Store ist die materialisierte Sicht: der aktuelle Zustand jedes aktiven Tracks, abfragbar durch das COP, durch Analytik und durch externe APIs. Die früh zu treffende architektonische Entscheidung ist, dass der Track Store ein Read Model ist, keine autoritative Quelle. Die autoritative Quelle ist das Event-Log auf dem Message Bus. Der Track Store wird auf Anforderung aus dem Log rekonstruiert.
Die Vorteile dieses Musters:
Löschen und neu aufbauen. Der Store kann geleert und aus dem Log ohne Datenverlust neu aufgebaut werden. Schema-Migrationen, Performance-Tuning und Wiederherstellung korrupter Daten werden routinemäßig statt riskant.
Mehrere Read Models. Ein COP-optimiertes Read Model (geospatial indexiert, Hot-Track-Cache, Reads mit niedriger Latenz) koexistiert mit einem analytikoptimierten Modell (denormalisiert, batchfreundlich) und einem Modell für externe APIs (gefiltert, klassifiziert pro Verbraucher). Alle sind Projektionen desselben zugrunde liegenden Event Streams.
Zeitreisen-Abfragen. „Was glaubte die Plattform um 14:32?" wird trivial: spielen Sie das Log bis 14:32 gegen eine frische Projektion zurück. After-Action-Review, Training und Akkreditierungs-Audits profitieren alle.
Die Implementierung: PostgreSQL mit der PostGIS-Erweiterung für geospatiale Abfragen (Standard für das laufende Beispiel). Eine Redis-Schicht davor für Hot-Track-Reads im Sub-Millisekunden-Bereich auf dem kritischen Pfad des COP. Der relationale Speicher bewältigt Long-Tail-Abfragen und Persistenzgarantien. Die detaillierte Engineering-Sicht, einschließlich der Indizierungsstrategien, die auf Milliarden von Punkten skalieren, findet sich in PostGIS für geospatiale Verteidigungsdaten.
Schritt 6: Widerstehen Sie der Graphdatenbank (vorerst)
Eine vorhersehbare Versuchung im Fusionsdesign ist, eine Graphdatenbank „für Beziehungen" hinzuzufügen. Konvoierkennung, Formationserkennung, Kontaktnetzwerke — diese klingen alle graphförmig. Die Versuchung besteht darin, sie in Neo4j oder Äquivalentem zu modellieren und „natürliche" Beziehungsabfragen zu gewinnen.
Der pragmatische Gegenpunkt: Beziehungen zwischen Tracks sind JDL-Ebene-2-Fusion, ein separates Anliegen von der Track-Pflege auf Ebene 1. Bauen Sie zuerst Ebene 1, betreiben Sie sie ein Jahr im Einsatz und besuchen Sie Ebene 2 erst dann erneut, mit der operativen Evidenz in der Hand. Die Beziehungen auf Ebene 2 erweisen sich oft als anders geformt als die Intuition der Graphdatenbank vorhersagte — temporal-relational statt rein topologisch, klassifizierungsbewusst statt offen, auf höherer Abstraktion ausgedrückt als per-Track-Kanten.
Die Plattformen, die Erfolg haben, beginnen mit PostGIS + Redis für das Read Model, beweisen Fusion auf Ebene 1 und fügen Ebene-2-Fähigkeiten als separate Dienste hinzu, die denselben Event Stream konsumieren. Die Plattformen, die scheitern, fügen die Graphdatenbank in Woche eins hinzu und verbringen zwei Jahre damit, die unangemessene Abstraktion zu debuggen.
Schritt 7: Testen Sie die Fusions-Engine gegen die Realität
Eine Fusions-Engine, die nur mit Spielzeuglast getestet wurde, besteht Integrationstests und fällt im Einsatz aus. Die Disziplinen, die Probleme vor dem Einsatz erkennen:
Replay-Test-Harnisse. Aufgezeichnete Sensorspuren aus realen Operationen, mit voller Rate und mit beschleunigter Rate gegen die Fusions-Engine zurückgespielt. Die Spuren sind die Regressionstest-Suite: jede Algorithmus- oder Schemaänderung muss äquivalente oder bessere Ergebnisse produzieren, nicht nur unter synthetischer Last.
Track-Qualitätsmetriken in CI. Falsch-Korrelations-Rate, Fehl-Assoziations-Rate, Track-Fragmentierungsrate, Timing der Lebenszyklusübergänge. Jede Metrik im Zeitverlauf verfolgt; Regressionen gaten das Release. Die Metriken werden gegen die Replay-Spuren ausgewertet, nicht gegen synthetische Last.
Adversariales Szenarientesten. Gespoofte AIS-Nachrichten mit unplausibler Kinematik. Radarplots, die die Physik verletzen. Quellenausfälle in kritischen Momenten. Die Fusions-Engine muss unter schlechter Eingabe graceful degradieren — nicht abstürzen, nicht selbstbewusst-aber-falsche Tracks produzieren. Das breitere Engineering-Muster für adversariale Robustheit in der Verteidigung findet sich in Test missionskritischer C2-Systeme.
Last- und Surge-Tests. 95. Perzentil-Fusionslatenz unter 500 ms bei 10.000 Beobachtungen/Sekunde; 99. Perzentil unter 1,5 s. Aufrechterhalten für die Dauer einer operativen Rotation, nicht nur für den Marketing-Benchmark. Die Plattform muss einstellige CPU-Reserve in Prozent für Surge-Behandlung haben.
Was als Nächstes kommt
Teil 2 hat die Engine gebaut. Die zweistufige Korrelation behandelt die einfachen und schweren Fälle. Die Lebenszyklus-Zustandsmaschine bringt Aktualität für Operatoren an die Oberfläche. Der Track Store als Event-Sourced Read Model unterstützt Abfragen, ohne zur autoritativen Quelle zu werden. Die Testdisziplinen validieren die Schicht gegen die Realität.
Teil 3 geht tiefer in den Multi-INT-Fall — die Kombination von SIGINT, IMINT, ELINT, OSINT, HUMINT, GEOINT, MASINT in denselben Fusionsstrom unter Beibehaltung ihrer semantischen Unterschiede — und behandelt die Klassifizierungs- und Freigabe-Propagation, die die Verteidigungsfusion einzigartig erfordert.