Osa 1 jätti putken tilaan, jossa kanonisten jälkihavaintojen virta soljuu viestiväylälle. Jokainen havainto on erillinen atomi — "lähde X raportoi kohteen sijainnissa Y nopeudella Z hetkellä T". Fuusiomoottorin tehtävänä on päättää, mitkä havainnot viittaavat samaan fyysiseen kohteeseen, kasata ne vakaiksi jäljiksi kasvavalla tunnistevarmuudella, hallita elinkaarta havaintojen lakatessa tai uusien saapuessa sekä tarjota kyseltävä näkymä maailmaan COP:lle ja loppupään kuluttajille. Osa 2 käsittelee tämän moottorin rakentamista.

Käsitteellisinä viittauksina toimivat Military Data Fusion Explained alan yleiskatsaukseen, JDL Data Fusion Model tasokartoitukseen sekä pilariartikkeli Complete Guide to Defense Data Fusion laajempaan arkkitehtoniseen kehykseen.

Vaihe 1: Kaksivaiheinen korrelaatiosuodatin

Fuusiomoottorin ydinpäätökseen — siihen, onko saapuva havainto päivitys olemassa olevaan jälkeen vai uuden jäljen synty — ei tarvitse käyttää yhtä ainoaa algoritmia. Tuotannossa skaalautuva malli käyttää kahta vaihetta: edullista sääntöpohjaista suodatinta, joka hoitaa helpot tapaukset, ja probabilistista assosiaatiomoottoria, jota kutsutaan vain silloin, kun sääntökerros on monitulkintainen.

Sääntöpohjainen vaihe hoitaa ne 90 % havainnoista, jotka ovat yksiselitteisiä. Jokaiselle saapuvalle havainnolle se laskee kinemaattisen kantaman sisällä olevien ehdokasjälkien joukon — sijainti-aika-portin. Tunnistepriorit suodattavat lisää: havainto, joka on merkitty "alukseksi", ei voi vastata "ilma-aluksen" jälkeä. Myös lähdeyhteensopivuus suodattaa: maatutkan havainto ei voi vastata vedenalaisen alustan ilmajälkeä. Kun portti tuottaa täsmälleen yhden ehdokkaan, joka läpäisee tunniste- ja lähdesäännöt, havainto päivittää tuon ehdokkaan suoraan. Kun portti tuottaa nolla ehdokasta, havainto käynnistää alustavan uuden jäljen. Edullinen, nopea, selitettävä.

Probabilistinen vaihe käynnistetään, kun sääntökerros palauttaa useita ehdokkaita tai kun jälkitiheys on niin korkea, että varma porttaus on mahdotonta. Joint Probabilistic Data Association (JPDA) laskee todennäköisyyden sille, että havainto kuuluu kullekin ehdokasjäljelle, ja päivittää jokaista todennäköisyydellä painotettuna. Multiple Hypothesis Tracking (MHT) ylläpitää useita jälkihypoteeseja havaintojen yli lykäten assosiaatiopäätöksiä, kunnes riittävästi näyttöä on kertynyt. Molemmat ovat laskennallisesti raskaampia ja vaikeampia virittää; molemmat ovat oikeassa vain niissä tapauksissa, joissa sääntökerros teki virheen sitoutuessaan.

Yksi erityinen sudenkuoppa kannattaa nostaa esiin: MHT tuottaa ilman karsintaa eksponentiaalisen määrän hypoteeseja. Karsintapolitiikka — kuinka monta hypoteesia säilytetään, milloin yhdistetään, milloin poistetaan — on tärkeämpi kuin itse ydinalgoritmi. Aseta oletukseksi aggressiivinen karsinta; löysennä vain silloin, kun operatiivinen näyttö sitä vaatii.

Vaihe 2: Sääntökerroksen virittäminen

Sääntökerros on se, mihin suurin osa fuusiosuunnittelun työstä kohdistuu. Algoritmi on yksinkertainen; virittäminen on käsityötä.

Merkitykselliset porttiparametrit:

  • Kinemaattisen portin koko — kuinka kaukana havainto voi olla jäljen ennustetusta sijainnista ja silti vastata sitä. Liian pieni ohittaa todelliset päivitykset anturikohinan jälkeen; liian suuri tuottaa vääriä korrelaatioita tiheissä tilanteissa.
  • Tunnisteportti — mitkä tunnistemääritteet on täsmättävä (aina: tyyppitaksonomia; joskus: alatyyppi, runkonumero, kutsumerkki).
  • Lähdejoukkosäännöt — mitkä lähteet voivat päivittää mitäkin jälkityyppejä. Toimialakohtaisia (meritutkan ei pitäisi päivittää vedenalaista jälkeä) ja alustakohtaisia (SIGINT-suuntimakontakti ei välttämättä assosioidu kinemaattiseen jälkeen ilman suuntiman täsmäystä).
  • Viimeisestä päivityksestä kuluneen ajan toleranssi — havainnot liian kauan hiljaa olleita jälkiä vastaan tuottavat uuden alustavan jäljen sen sijaan, että assosioituisivat uudelleen vanhaan.

Oletusarvot tulevat lähdekatalogin tarkkuus- ja viiveprofiileista. Operatiivinen viritys syntyy toistosta tallennettua dataa vastaan, mittareina väärän korrelaation osuus ja virheellisen assosiaation osuus. Hankintatason fuusiomoottoreissa nämä viritysnupit on tuotu esiin, jotta operatiivinen tiimi voi säätää niitä käyttöönotto kohtaisesti; räätälöidyt ohjelmat usein kovakoodaavat arvot ja katuvat sitä, kun käyttöönottokonteksti muuttuu.

Vaihe 3: Milloin ja miten probabilistinen assosiaatio käynnistetään

Probabilistinen assosiaatio on oikea työkalu, kun sääntöpohjainen porttaus ei pysty tuottamaan varmaa yksittäistä vastinetta. Merkki siitä, että probabilistista tarvitaan: portti palauttaa useamman kuin yhden ehdokkaan osuudella, joka ylittää (vaikkapa) 5 % operatiivisessa tilanteessa.

Pragmaattinen käynnistysmalli:

JPDA kohtalaiseen tiheyteen. Kun portti palauttaa 2–4 ehdokasta monitulkintaista havaintoa kohti, JPDA laskee assosiaatiotodennäköisyydet käyttäen kinemaattisia prioreita (Mahalanobis-etäisyys ennustetusta sijainnista) ja tunnistepriorea. Jälkipäivitykset painotetaan todennäköisyydellä; mikään yksittäinen jälki ei saa "lopullista" päivitystä, mutta todennäköisimmät ehdokkaat keräävät näyttöä nopeammin.

MHT vaikeimpiin tapauksiin. Kun portti palauttaa monta ehdokasta ja assosiaation monitulkintaisuus säilyy havaintojen yli, MHT lykkää päätöstä. Se ylläpitää hypoteeseja (vaihtoehtoisia tulkintoja siitä, mikä havainto kuuluu mihinkin jälkeen) ja karsii todennäköisyyden mukaan. Useamman havainnon jälkeen hallitseva hypoteesi nousee esiin ja muut poistetaan.

Yhdistetty tulos. Molemmat algoritmit tuottavat päivityksiä, jotka virtaavat takaisin samaan jälkivarastoon kuin sääntöpohjaiset päivitykset. Loppupään kuluttajien näkökulmasta kaikki päivitykset näyttävät identtisiltä; ero on liitetyssä varmuus- ja alkuperämetatiedossa.

Toteutuksen todellisuus: hyvin testattuja avoimen lähdekoodin kirjastoja on olemassa sekä JPDA:lle että MHT:lle (Stone Soup, FilterPy ja niihin liittyvät työkalut). Useimmat operatiiviset fuusiomoottorit kääräisevät testatun kirjaston sen sijaan, että toteuttaisivat sen alusta. Insinöörityö on integraatiossa, virittämisessä ja operatiivisessa kovettamisessa — ei algoritmissa.

Vaihe 4: Jäljen elinkaaren tila-automaatti

Jäljillä on elinkaaret. Niitä ohjaava tila-automaatti on yksi alustan operatiivisesti merkittävimmistä päätöksistä: operaattorit sietävät puuttuvia jälkiä mutta eivät siedä luottavaisesti näytettyjä vanhentuneita jälkiä. Elinkaari on raja luotettavan ja epäluotettavan näytön välillä.

Esimerkkitapauksen tila-automaatti:

  • Alustava. Ensimmäinen havainto; odottaa vahvistusta. Ei näytetä operatiivisessa COP:ssa, ellei operaattori nimenomaisesti pyydä matalan varmuuden näkyvyyttä. Rapistuu poistetuksi, jos jatkohavaintoa ei tule konfiguroitavan ikkunan sisällä.
  • Vahvistettu. Kaksi tai useampi korreloitu havainto kinemaattisen johdonmukaisuuden ikkunan sisällä. Korotettu alustavasta. Näytettyjen jälkien oletustila.
  • Kypsä. Vahvistettu ja pysyvä vähintään N minuuttia johdonmukaisilla päivityksillä. Käytetään loppupään analytiikassa, joka tarvitsee vakaan tunnisteen elämänkulun- tai käyttäytymisanalyysiin.
  • Hiipuva. Ei päivitystä tämän lähdeluokan odotetun uusintakäyntivälin sisällä. Näyttö merkitään vanhentuneeksi (himmeämpi symboli, ikäilmaisin). Konfiguroitavissa lähdeluokittain — 30 sekuntia vanha merijälki on kunnossa; 30 sekuntia vanha ilmajälki hiipuu.
  • Menetetty. Ei päivitystä pitkään aikaan. Poistettu aktiivisesta näytöstä mutta säilytetty jälkivarastossa auditointia ja historiallista analyysiä varten.

Siirtymät ovat aikaperustaisia ja päivitysperustaisia, ja molemmat syöttävät yhteen päätöspuuhun. Jokainen siirtymä kirjataan laukaisevan tapahtuman kanssa (havaintopäivitys, aikakatkaisun umpeutuminen, operaattorin ohitus). Siirtymäloki syöttää tapahtumapohjaistettua audit-jälkeä, jota käsitellään artikkelissa Event Sourcing for Defense Audit Trails.

Käytännön yksityiskohta: elinkaaripalvelu on korrelaatiomoottorista erillinen prosessi. Se tilaa jälkipäivitystapahtumat korrelaatiosta, laskee elinkaarisiirtymät ja julkaisee ne erillisenä virtana väylälle. Erottelu antaa elinkaaripolitiikan kehittyä koskematta korrelaatiomoottoriin.

Keskeinen oivallus: Elinkaarenhallinta on kerros, joka erottaa demotason fuusion operatiivisesta fuusiosta. Alusta, joka tuottaa oikeita jälkiä mutta ei koskaan kerro operaattoreille, milloin jälki on vanhentunut, on alusta, johon operaattorit lakkaavat luottamasta. Rakenna elinkaaripalvelu ennen kuin fuusioalgoritmi on täysin viritetty — se maksaa itsensä takaisin joka kerta, kun anturilinkki katkeaa.

Vaihe 5: Jälkivarasto tapahtumapohjaistettuna lukumallina

Fuusio tuottaa virran jälkipäivityksiä ja elinkaarisiirtymiä. Jälkivarasto on materialisoitu näkymä: jokaisen aktiivisen jäljen nykytila, kyseltävissä COP:n, analytiikan ja ulkoisten API:en kautta. Varhain kannattaa tehdä arkkitehtoninen päätös, että jälkivarasto on lukumalli, ei auktoritatiivinen lähde. Auktoritatiivinen lähde on viestiväylän tapahtumaloki. Jälkivarasto rakennetaan uudelleen lokista tarvittaessa.

Tämän mallin hyödyt:

Pyyhi ja rakenna uudelleen. Varasto voidaan tyhjentää ja rakentaa uudelleen lokista ilman datahäviötä. Skeemamigraatiot, suorituskyvyn viritys ja vahingoittuneen datan palautus muuttuvat rutiininomaisiksi sen sijaan, että olisivat riskialttiita.

Useita lukumalleja. COP-optimoitu lukumalli (geospatiaalisesti indeksoitu, kuumien jälkien välimuisti, matalan viiveen luvut) elää rinnakkain analytiikkaoptimoidun mallin (denormalisoitu, eräystävällinen) ja ulkoisen API:n mallin (suodatettu, kuluttajakohtaisesti luokiteltu) kanssa. Kaikki ovat saman taustalla olevan tapahtumavirran projektioita.

Aikamatkakyselyt. "Mihin alusta uskoi kello 14:32?" muuttuu triviaaliksi: toista loki kello 14:32 asti tuoretta projektiota vastaan. Jälkitarkastelu, koulutus ja akkreditointiauditoinnit hyötyvät kaikki.

Toteutus: PostgreSQL PostGIS-laajennuksella geospatiaalisiin kyselyihin (oletus esimerkkitapauksessa). Redis-kerros etualalla alle millisekunnin kuumien jälkien lukuihin COP:n kriittisellä polulla. Relaatiovarasto hoitaa pitemmän hännän kyselyt ja pysyvyystakuut. Yksityiskohtainen insinöörinäkymä, mukaan lukien indeksointistrategiat, jotka skaalautuvat miljardeihin pisteisiin, on artikkelissa PostGIS for Defense Geospatial Data.

Vaihe 6: Vastusta graafitietokantaa (toistaiseksi)

Ennustettava houkutus fuusiosuunnittelussa on lisätä graafitietokanta "suhteita varten". Saattuevalvonta, muodostelmien tunnistus, kontaktiverkostot — nämä kaikki kuulostavat graafin muotoisilta. Houkutus on mallintaa ne Neo4j:ssä tai vastaavassa ja saada "luonnolliset" suhdekyselyt.

Pragmaattinen vastaväite: jälkien väliset suhteet ovat JDL-tason 2 fuusiota, erillinen huolenaihe tason 1 jäljenylläpidosta. Rakenna ensin taso 1, aja sitä operaatioissa vuoden ajan ja palaa vasta sitten tasoon 2 operatiivinen näyttö käsissä. Tason 2 suhteet osoittautuvat usein tarvitsevan erilaisen muodon kuin graafitietokantaintuitio ennusti — temporaalis-relaatioinen pikemmin kuin puhtaasti topologinen, luokitustietoinen pikemmin kuin avoin, ilmaistuna korkeammalla abstraktiotasolla kuin per-jälki-kaaret.

Menestyvät alustat aloittavat PostGIS + Redis -lukumallista, todistavat fuusion tasolla 1 ja lisäävät tason 2 kyvykkyydet erillisinä palveluina, jotka kuluttavat samaa tapahtumavirtaa. Epäonnistuvat alustat lisäävät graafitietokannan ensimmäisellä viikolla ja viettävät kaksi vuotta sopimatonta abstraktiota vianjäljittäen.

Vaihe 7: Testaa fuusiomoottori todellisuutta vastaan

Fuusiomoottori, joka on testattu vain leikkikuormalla, läpäisee integraatiotestit ja epäonnistuu operaatioissa. Kurinalaisuudet, jotka nappaavat ongelmat ennen käyttöönottoa:

Toistotestialustat. Tallennetut anturijäljet todellisista operaatioista, toistettuina täydellä nopeudella ja kiihdytetyllä nopeudella fuusiomoottoria vastaan. Jäljet ovat regressiotestisarja: minkä tahansa algoritmi- tai skeemamuutoksen on tuotettava vastaavat tai paremmat tulokset, ei vain synteettisellä kuormalla.

Jälkien laatumittarit CI:ssä. Väärän korrelaation osuus, virheellisen assosiaation osuus, jälkien pirstoutumisosuus, elinkaarisiirtymien ajoitus. Jokaista mittaria seurataan ajan myötä; regressiot estävät julkaisun. Mittarit arvioidaan toistojälkiä vastaan, ei synteettistä kuormaa vastaan.

Vihamielinen skenaariotestaus. Väärennetyt AIS-viestit epäuskottavalla kinematiikalla. Fysiikan vastaiset tutkanäytöt. Lähdekatkokset kriittisillä hetkillä. Fuusiomoottorin on heikennyttävä hallitusti huonon syötteen alla — ei kaatua, ei tuottaa luottavaisia-mutta-vääriä jälkiä. Laajempi insinöörimalli vihamielistä kestävyyttä varten puolustuksessa on artikkelissa Testing Mission-Critical C2 Systems.

Kuorma- ja piikkitestaus. 95. persentiilin fuusioviive alle 500 ms 10 000 havainnolla sekunnissa; 99. persentiili alle 1,5 s. Ylläpidettynä operatiivisen vuoron keston ajan, ei vain markkinointivertailuarvon ajan. Alustalla on oltava yhden numeron prosenttiluokan CPU-pelivaraa piikkien käsittelyyn.

Mitä seuraavaksi

Osa 2 on rakentanut moottorin. Kaksivaiheinen korrelaatio hoitaa helpot ja vaikeat tapaukset. Elinkaaren tila-automaatti tuo tuoreuden operaattoreiden näkyviin. Jälkivarasto tapahtumapohjaistettuna lukumallina tukee kyselyitä muuttumatta auktoritatiiviseksi lähteeksi. Testauksen kurinalaisuudet validoivat kerroksen todellisuutta vastaan.

Osa 3 menee syvemmälle multi-INT-tapaukseen — yhdistäen SIGINT:n, IMINT:n, ELINT:n, OSINT:n, HUMINT:n, GEOINT:n ja MASINT:n samaan fuusiovirtaan säilyttäen niiden semanttiset erot — ja käsittelee luokitus- ja jaettavuuspropagaation, jota puolustusfuusio ainutlaatuisesti vaatii.