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:
- Symptoms — observable plant conditions that the operator may perceive. Each symptom corresponds to a mental belief defined in
KB_OAT_HardWired_Diagnosis.txtwith an identical name. - 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
| Type | Description |
|---|---|
Normal | Conditions normally experienced during power operation, including planned load changes and instrument failures. |
AOO | Anticipated Operational Occurrence — abnormal events expected to occur during the facility lifetime but not expected to cause fuel damage. |
DBA | Design Basis Accident — more serious events not normally expected to occur; may result in fuel damage. |
Imbalance | Mass, 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 Category | Relationship Value Range | Interpretation |
|---|---|---|
| Primary | 0.7 – 0.99 | Symptom directly relates to the initiating event; expected with high confidence. |
| Secondary | 0.4 – 0.7 | Symptom results from primary symptoms; normally expected but with lower confidence. |
| Tertiary | 0.1 – 0.4 | Symptom 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
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_MNField Descriptions
| Field | Type | Description |
|---|---|---|
NUM_SYMPTOMS | Integer (> 0) | Number of symptom entries. Must equal the actual number of symptom name lines that follow. |
SYMPTOM_NAME_i | String | Symptom name. Must match a mental belief name in KB_OAT_HardWired_Diagnosis.txt. One symptom per line. No spaces; use _ instead. |
NUM_EVENTS | Integer (> 0) | Number of event rows. Must equal the actual number of event data rows that follow. |
EVENT_NAME_i | String | Event 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_i | String | Event category: Normal, AOO, DBA, or Imbalance. |
VALUE_ij | Double (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.
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.0Resulting Relationship Matrix (Table 4)
| Event | Power Decrease | Tave Decrease | PZR Level Decrease | RCS Pressure Decrease | SG-A Steam Flow Increase |
|---|---|---|---|---|---|
| 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 |
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_Tripis strongly associated with a power decrease (0.9, primary) and less strongly linked to decreasing average temperature, pressurizer level, and RCS pressure.LOCA_Inside_Containmentshares 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 inKB_OAT_HardWired_Diagnosis.txtwith 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.txtthat a scannable control panel item refers to as a related subsystem must be an event row in the same operator'sKB_<operator>_Event_Matrix.txt. The nameNot_Applicableis exempt. Every event used inKB_<operator>_Diagnosis_Actions.txtmust be an event row as well. - The count line decides what is read. The parser reads exactly
Number_of_Eventsrows ofNumber_of_Symptomsvalues 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 toerr 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.