r-io suiter-io suitesupervision docs
← Supervision
Supervision / Strategy 01 · checked by default

Weighted Graph Distance

The distance between the field and the plan, weighted by meaning. Every instance added, deleted or updated in one world only is looked up in a matrix of weights (concept × world × kind of change, involved or not); the weights are summed per failure category and divided by the threshold of the category. A change found in both worlds cancels out.

implemented byWeightedGraphDistanceStrategy · gind-npm-strategy-supervision-weighted-graph-distance
01 · Principle

Which world changed, how, and on what

FieldExpectedBaselineRead as
presentabsentabsentFIELD · Add: something new on the field, unknown to the plan.
absentpresentpresentFIELD · Delete: vanished on the field while the plan still has it.
absentpresentabsentEXPECTED · Add: the plan created it, not on the field yet.
presentabsentpresentEXPECTED · Delete: the plan removed it (resolved), the field still has it.
value Avalue BA or BUpdate, on the side whose value differs from the baseline (both sides when both moved).

Each case is weighted with the row of the closest concept of the instance (its own concept, then its parents) and the column involved or other: an instance used by a remaining task or treated by the solution is involved. The contribution is weight / threshold of its category; a category is the sum of its contributions.

02 · The matrix

Rows of concepts, two worlds, five kinds of change

Columns — for each world (FIELD, EXPECTED): Add, Del. inv. (deletion of an involved instance), Del. other, Upd. inv., Upd. other. Each cell holds a weight, a category and a “why”, the reason shown in the editor and in the explanation of a contribution.

Rows — grouped as Problem, Solution and Resources. A concept without a row takes the row of its closest parent (an Intrusion_Alert takes the Actuality row); “Add a concept row” gives a concept weights of its own.

Thresholds — one per category, at the top of the editor: the sum of weights at which the category needs an action. Default 1 for the alerts, 0.3 for Improvable.

Ignored — identity and display properties (modelNodeId, nodeFingerprint, status, color, icon, description…) and every creation or modification date, which the clone of the expected world rewrites.

03 · Default weights

The matrix of a new project

Cells not listed are 0 (ignored). The EXPECTED world is 0 everywhere: the plan moving on is normal; a resolved actuality waiting for its sensor (the orange halo) must not raise anything.

ConceptFIELD AddFIELD Del. inv.FIELD Upd. inv.Why
Actuality110.1A new problem not treated fires Uncovered alone; a treated one which vanished makes its tasks useless (Obsolete); a change of its description is a small gap.
Potentiality0.50.50.3Only a hypothesis: two of them fire the alert; a change of probability may set other priorities (Improvable).
Risk0.300Not a problem yet: worth a new deduction to see whether prevention pays off.
Objective000Field objectives stay ACTIVE until the expert closes the crisis: weighting them would leave a gap at the end of every plan.
Resource01per propertyA resource of a remaining task disappears: the task cannot be done (Failing).
Person0.31per propertyA person arrives who was not known at deduction time: a new deduction could do better.
Good0.21per propertyA new good: could improve the plan, rarely urgent.
Sensor00.50A sensor the solution relies on disappears: the field becomes blind on a problem it handles.
UncoveredFailingObsoleteImprovable
04 · Properties and crossings

Weights per property of an involved instance

Clicking a concept shows the weights of its properties: an update of a listed property of an involved instance takes the property weight instead of the Upd. inv. weight of the row.

Resource propertyFIELDCrossingWhy
Geolocation0—A resource moves all along its tasks while the plan keeps its starting position; the drift of the moves is measured by the KPIL indicators recalculation.
Resource:strain0≥ 75 → 1Fatigue grows with every task: an ordinary change is not weighted, crossing the high strain threshold is (Failing).
presence1—The resource left the site: its remaining tasks cannot be done.
personal calendar0.5—The resource becomes unavailable for part of the plan: two such changes fire the alert.

Crossing — a numeric property with a crossing threshold is weighted when its field value reaches the threshold while its baseline value was below it, whatever its own weight. Person and Good copy the property weights of Resource.

05 · The editor

Every cell explains itself

Clicking a weight opens a panel with its “why”, its value and category, and what this value implies: “on its own, this change fires the red alert”, “two such changes fire it”… Frozen while a solution is supervised.

06 · Example

IMT Albi Crisis: an intrusion during the gas leak

The solution deduced for the gas leak at Rapsodee is supervised: all categories are at 0. When the timeline of r-iosemit reaches “Presence detected at Iomega”, the CEP rule raises an Intrusion_Alert, an Actuality the solution does not treat.

It is new on the field and absent from the plan and the baseline: FIELD · Add of the Actuality row, weight 1, Uncovered. Uncovered = 1 / 1 = 1.00: the alert box opens with the contribution “New Intrusion_Alert … on the field, unknown to the supervised solution”. Meanwhile the gas leak, resolved by the process and confirmed by the sensor, changed in both worlds and weighs nothing.

07 · Watch points

Good to know

The baseline waits for the clone

The expected world is cloned progressively: the strategy only starts once its size stops growing, otherwise half-cloned instances would look like additions.

Positions are not weighted

A person walking to a task moves on the field only; the distances and durations are judged by the KPIL indicators recalculation.

Health became strain

The strain of a resource (Resource:strain, KPIL) is the measure of fatigue or wear; presence and personal calendar sit on Resource for persons and goods alike.

gind-detection-engine-weighted-graph-distance-strategy/…/WeightedGraphDistanceStrategy.javaComparison of the worlds, weighing, crossings, default matrix and its reasons.
gind-npm-strategy-supervision-weighted-graph-distance/src/weighted-graph-distance-matrix.component.*The matrix editor, the property detail and the explanation panel.
Supervision / Stratégie 01 · cochée par défaut

Weighted Graph Distance

La distance entre le terrain et le plan, pondérée par le sens. Chaque instance ajoutée, supprimée ou modifiée dans un seul monde est cherchée dans une matrice de poids (concept × monde × type de changement, impliquée ou non) ; les poids sont additionnés par catégorie d’échec et divisés par le seuil de la catégorie. Un changement vu dans les deux mondes s’annule.

implémentée parWeightedGraphDistanceStrategy · gind-npm-strategy-supervision-weighted-graph-distance
01 · Principe

Quel monde a changé, comment, et sur quoi

TerrainAttenduRéférenceLecture
présentabsentabsentFIELD · Add : quelque chose de nouveau sur le terrain, inconnu du plan.
absentprésentprésentFIELD · Delete : disparu du terrain alors que le plan l’a encore.
absentprésentabsentEXPECTED · Add : le plan l’a créé, pas encore sur le terrain.
présentabsentprésentEXPECTED · Delete : le plan l’a retiré (résolu), le terrain l’a encore.
valeur Avaleur BA ou BUpdate, du côté dont la valeur diffère de la référence (des deux côtés si les deux ont bougé).

Chaque cas est pondéré avec la ligne du concept le plus proche de l’instance (son concept, puis ses parents) et la colonne impliquée ou autre : une instance utilisée par une tâche restante ou traitée par la solution est impliquée. La contribution vaut poids / seuil de sa catégorie ; une catégorie est la somme de ses contributions.

02 · La matrice

Des lignes de concepts, deux mondes, cinq types de changement

Colonnes — pour chaque monde (FIELD, EXPECTED) : Add, Del. inv. (suppression d’une instance impliquée), Del. other, Upd. inv., Upd. other. Chaque case porte un poids, une catégorie et un « why », la raison affichée dans l’éditeur et dans l’explication d’une contribution.

Lignes — regroupées en Problem, Solution et Resources. Un concept sans ligne prend celle de son parent le plus proche (une Intrusion_Alert prend la ligne Actuality) ; « Add a concept row » donne à un concept des poids à lui.

Seuils — un par catégorie, en haut de l’éditeur : la somme de poids à laquelle la catégorie demande une action. 1 par défaut pour les alertes, 0,3 pour Improvable.

Ignoré — les propriétés d’identité et d’affichage (modelNodeId, nodeFingerprint, status, color, icon, description…) et toutes les dates de création ou de modification, que le clone du monde attendu réécrit.

03 · Poids par défaut

La matrice d’un nouveau projet

Les cases non listées valent 0 (ignorées). Le monde EXPECTED est à 0 partout : que le plan avance est normal ; une actualité résolue qui attend son capteur (le halo orange) ne doit rien lever.

ConceptFIELD AddFIELD Del. inv.FIELD Upd. inv.Pourquoi
Actuality110,1Un nouveau problème non traité déclenche Uncovered à lui seul ; un problème traité qui a disparu rend ses tâches inutiles (Obsolete) ; un changement de sa description est un petit écart.
Potentiality0,50,50,3Seulement une hypothèse : il en faut deux pour l’alerte ; un changement de probabilité peut changer les priorités (Improvable).
Risk0,300Pas encore un problème : vaut une nouvelle déduction pour voir si la prévention est rentable.
Objective000Les objectifs du terrain restent ACTIVE jusqu’à ce que l’expert clôture la crise : les pondérer laisserait un écart à la fin de chaque plan.
Resource01par propriétéUne ressource d’une tâche restante disparaît : la tâche ne peut pas être faite (Failing).
Person0,31par propriétéUne personne arrive, inconnue au moment de la déduction : une nouvelle déduction ferait peut-être mieux.
Good0,21par propriétéUn nouveau bien : pourrait améliorer le plan, rarement urgent.
Sensor00,50Un capteur sur lequel compte la solution disparaît : le terrain devient aveugle sur un problème qu’elle traite.
UncoveredFailingObsoleteImprovable
04 · Propriétés et franchissements

Des poids par propriété d’une instance impliquée

Un clic sur un concept montre les poids de ses propriétés : la modification d’une propriété listée d’une instance impliquée prend le poids de la propriété au lieu du poids Upd. inv. de la ligne.

Propriété de ResourceFIELDFranchissementPourquoi
Geolocation0—Une ressource se déplace tout au long de ses tâches alors que le plan garde sa position de départ ; l’écart des déplacements est mesuré par le recalcul des indicateurs KPIL.
Resource:strain0≥ 75 → 1La fatigue augmente à chaque tâche : un changement ordinaire n’est pas pondéré, franchir le seuil de fatigue élevée l’est (Failing).
presence1—La ressource a quitté le site : ses tâches restantes ne peuvent pas être faites.
personal calendar0,5—La ressource devient indisponible pendant une partie du plan : deux changements de ce type déclenchent l’alerte.

Franchissement — une propriété numérique avec un seuil de franchissement est pondérée quand sa valeur terrain atteint le seuil alors que sa valeur de référence était en dessous, quel que soit son poids. Person et Good reprennent les poids de propriétés de Resource.

05 · L’éditeur

Chaque case s’explique

Un clic sur un poids ouvre un panneau avec son « why », sa valeur, sa catégorie et ce que cette valeur implique : « à lui seul, ce changement déclenche l’alerte rouge », « deux changements de ce type la déclenchent »… Figé pendant la supervision d’une solution.

06 · Exemple

IMT Albi Crisis : une intrusion pendant la fuite de gaz

La solution déduite pour la fuite de gaz à Rapsodee est supervisée : toutes les catégories sont à 0. Quand la frise de r-iosemit atteint « Presence detected at Iomega », la règle CEP lève une Intrusion_Alert, une Actuality que la solution ne traite pas.

Elle est nouvelle sur le terrain et absente du plan comme de la référence : FIELD · Add de la ligne Actuality, poids 1, Uncovered. Uncovered = 1 / 1 = 1,00 : la boîte d’alerte s’ouvre avec la contribution « New Intrusion_Alert … on the field, unknown to the supervised solution ». Pendant ce temps, la fuite de gaz, résolue par le processus et confirmée par le capteur, a changé dans les deux mondes et ne pèse rien.

07 · Points d’attention

Bon à savoir

La référence attend le clone

Le monde attendu est cloné progressivement : la stratégie ne démarre qu’une fois sa taille stable, sinon les instances à moitié clonées passeraient pour des ajouts.

Les positions ne sont pas pondérées

Une personne qui se rend à une tâche ne bouge que sur le terrain ; distances et durées sont jugées par le recalcul des indicateurs KPIL.

La santé est devenue la fatigue

La fatigue d’une ressource (Resource:strain, KPIL) mesure l’épuisement ou l’usure ; presence et personal calendar sont portés par Resource, pour les personnes comme pour les biens.

gind-detection-engine-weighted-graph-distance-strategy/…/WeightedGraphDistanceStrategy.javaComparaison des mondes, pondération, franchissements, matrice par défaut et ses raisons.
gind-npm-strategy-supervision-weighted-graph-distance/src/weighted-graph-distance-matrix.component.*L’éditeur de matrice, le détail des propriétés et le panneau d’explication.