Skip to content

KB_OAT_Event_Matrix.txt ​

Purpose ​

KB_OAT_Event_Matrix.txt defines the fuzzy logic diagnostic matrix used by the OAT's situational assessment engine. The file specifies two sets of data:

  1. Symptoms — observable plant conditions that the operator may perceive. Each symptom corresponds to a mental belief defined in KB_OAT_HardWired_Diagnosis.txt with an identical name.
  2. Events — plant event categories that the diagnostic engine evaluates. Each event is linked to the symptom list via a row of numerical relationship values.

The diagnostic engine computes a membership value for each event by comparing the currently active symptoms against the event's relationship value row. Because the engine uses a fuzzy logic inference approach, relationship values represent set membership rather than strict probabilities.

Event names must be consistent

Event names used in this file must be consistent with event names referenced in other OAT knowledge-base files (e.g., KB_OAT_System_Decomposition.txt, KB_OAT_Diagnosis_Actions.txt for imbalance events). Inconsistent naming will cause errors during simulation.

Event Types ​

TypeDescription
NormalConditions normally experienced during power operation, including planned load changes and instrument failures.
AOOAnticipated Operational Occurrence — abnormal events expected to occur during the facility lifetime but not expected to cause fuel damage.
DBADesign Basis Accident — more serious events not normally expected to occur; may result in fuel damage.
ImbalanceMass, energy, or momentum flow imbalances used to support knowledge-based problem solving by identifying non-equilibrium plant functions.

Only events in the AOO and DBA categories are used by the operator to detect that an abnormal condition has occurred (see abnormal_signal_threshold in ActionTaker.txt). Imbalance events drive the knowledge-based troubleshooting goal.

Relationship Value Guidelines (Table 3) ​

Relationship values represent the analyst's engineering judgment of the degree to which a symptom would be expected if a given event had occurred.

Symptom CategoryRelationship Value RangeInterpretation
Primary0.7 – 0.99Symptom directly relates to the initiating event; expected with high confidence.
Secondary0.4 – 0.7Symptom results from primary symptoms; normally expected but with lower confidence.
Tertiary0.1 – 0.4Symptom may arise due to primary/secondary symptoms but can be mitigated by control systems or thermal-hydraulic feedback; not reliably observed.

A value of 0.0 indicates no relationship between the event and the symptom.

TIP

Relationship values are bounded by 0.0 – 0.99 (not 1.0). Values are assigned using heuristic rules and engineering judgment; formal thermal-hydraulic or probabilistic analysis is not required.

File Format ​

text
Number_of_Symptoms    NUM_SYMPTOMS
SYMPTOM_NAME_1
SYMPTOM_NAME_2
...
SYMPTOM_NAME_N

Number_of_Events      NUM_EVENTS
EVENT_NAME_1          EVENT_TYPE_1
VALUE_11              VALUE_12    ...    VALUE_1N
EVENT_NAME_2          EVENT_TYPE_2
VALUE_21              VALUE_22    ...    VALUE_2N
...
EVENT_NAME_M          EVENT_TYPE_M
VALUE_M1              VALUE_M2    ...    VALUE_MN

Field Descriptions ​

FieldTypeDescription
NUM_SYMPTOMSInteger (> 0)Number of symptom entries. Must equal the actual number of symptom name lines that follow.
SYMPTOM_NAME_iStringSymptom name. Must match a mental belief name in KB_OAT_HardWired_Diagnosis.txt. One symptom per line. No spaces; use _ instead.
NUM_EVENTSInteger (> 0)Number of event rows. Must equal the actual number of event data rows that follow.
EVENT_NAME_iStringEvent name. No spaces; use _ instead. For imbalance events, a row must be present for each functional item in KB_OAT_System_Decomposition.txt.
EVENT_TYPE_iStringEvent category: Normal, AOO, DBA, or Imbalance.
VALUE_ijDouble (0.0 – 0.99)Relationship value for event i and symptom j. Must supply exactly NUM_SYMPTOMS values per event row.

Sample Input ​

The following sample defines five symptoms and four events.

text
Number_of_Symptoms    5
Power_Decrease
Tave_Decrease
Pressurizer_Level_Decrease
RCS_Pressure_Decrease
SG_A_Steam_Flow_Increase

Number_of_Events      4
PZR_Level_Failure_(Low)        Normal
0.0    0.0    0.9    0.5    0.0
Reactor_Trip                   AOO
0.9    0.6    0.5    0.4    0.0
LOCA_Inside_Containment        DBA
0.0    0.0    0.9    0.6    0.0
Energy_Imbalance_PZR_Low       Imbalance
0.0    0.0    0.0    0.7    0.0

Resulting Relationship Matrix (Table 4) ​

EventPower DecreaseTave DecreasePZR Level DecreaseRCS Pressure DecreaseSG-A Steam Flow Increase
PZR_Level_Failure_(Low) — Normal0.00.00.90.50.0
Reactor_Trip — AOO0.90.60.50.40.0
LOCA_Inside_Containment — DBA0.00.00.90.60.0
Energy_Imbalance_PZR_Low — Imbalance0.00.00.00.70.0

Interpretation ​

  • PZR_Level_Failure_(Low) is strongly associated with a decreasing pressurizer level (0.9, primary) and less strongly with decreasing RCS pressure (0.5, secondary).
  • Reactor_Trip is strongly associated with a power decrease (0.9, primary) and less strongly linked to decreasing average temperature, pressurizer level, and RCS pressure.
  • LOCA_Inside_Containment shares similar associations to the reactor trip but at slightly different values.
  • None of the events in this example are associated with an increase in SG A steam flow (all 0.0 for SG_A_Steam_Flow_Increase).
  • Each symptom listed here (Power_Decrease, Tave_Decrease, etc.) must have a corresponding mental belief entry in KB_OAT_HardWired_Diagnosis.txt with exactly the same name.

Consistency with the System Decomposition ​

The rule holds separately for each operator (KB_OAT_* files for the Action Taker, KB_ODM_* files for the Decision Maker).

  • Required rows. Every function name in KB_<operator>_System_Decomposition.txt that a scannable control panel item refers to as a related subsystem must be an event row in the same operator's KB_<operator>_Event_Matrix.txt. The name Not_Applicable is exempt. Every event used in KB_<operator>_Diagnosis_Actions.txt must be an event row as well.
  • The count line decides what is read. The parser reads exactly Number_of_Events rows of Number_of_Symptoms values each. A row added without raising the count is ignored without a message.
  • What a missing row does. When an item in the scan queue becomes older than the priority decay time, the operator rates its relevance to the current diagnosis by looking its function names up in the event matrix. For a name that has no row the engine prints EventSymptomMatrix::getEventRationalConfidence: <name> could not be found., appends the same line with the simulation time to err messages.txt, and uses a relevance of 0. The sequence continues, but the item then loses priority on every pass and is dropped from that operator's scan queue.

ADS-IDAC Engine Documentation