KB_ODM_Diagnosis_Actions.txt
Purpose
The KB_ODM_Diagnosis_Actions.txt file encodes knowledge-based corrective actions the Decision Maker (ODM) performs when an imbalance is diagnosed during knowledge-based reasoning (KBR) problem solving. This is the most complex input file in the ADS-IDAC manual and is the only fully implemented diagnosis actions file in a standard simulation.
OAT Diagnosis Actions Not Used
In the current version of ADS-IDAC, all knowledge-based actions are initiated exclusively by the Decision Maker. The KB_OAT_Diagnosis_Actions.txt file for the Action Taker does not affect the simulation. Only this ODM file produces active behavior.
Knowledge-based actions model behavior an operator might perform outside the scope of written emergency procedures, based on their situational assessment. Examples include:
- Reducing reactor coolant system injection when pressurizer level is high.
- Decreasing steam dump rate when steam generator pressure is low.
Actions are organized within functional imbalance diagnostic groups aligned with the imbalance events in KB_ODM_Event_Matrix.txt.
Key Properties of Knowledge-Based Actions
- Action rules are organized within functional imbalance diagnostic groups. Each imbalance event can be associated with a list of actions intended to mitigate the associated mass, energy, or momentum imbalance.
- Each diagnostic group is assigned a priority level reflecting the relative importance of its actions (e.g., actions for inadequate core cooling are sequenced before actions for low single-SG inventory).
- Each action can be assigned prerequisite conditions that model the heuristic rules an operator uses to activate a specific action. Prerequisites may reference plant parameters, component states, alarms, active procedures, or mental beliefs.
- Once an action in a diagnostic group is activated, further actions within that group are blocked for a pre-defined dormancy period (the reset delay time), allowing the operator to address other functional areas.
Input File Format
number_of_diagnoses number_of_imbalance_diagnoses
diagnosis_name imbalance_diagnosis_name_1
diagnosis_priority diagnosis_priority
reset_delay_time minimum_time weibull_alpha weibull_beta
number_of_actions number_of_actions
action_name action_name_1
action_priority action_priority_1
action_type action_type_1
control_input [control_input_value_1] or [control_parameter_1]
lower_limit lower_control_limit_1
upper_limit upper_control_limit_1
number_of_prerequisites number_of_prerequisites
item_name_1
[parameter_1 parameter_2]
[verification]
[minimum_time weibull_alpha weibull_beta]
expected_state
[relationship value_1 value_2]
logic_flag
.
.
item_name_n
[parameter_1 parameter_2]
[verification]
[minimum_time weibull_alpha weibull_beta]
expected_state
[relationship value_1 value_2]
logic_flag
.
.
diagnosis_name imbalance_diagnosis_name_n
...Top-Level Parameter
| Parameter | Type | Description | Example Value |
|---|---|---|---|
number_of_diagnoses | Integer | Total number of imbalance diagnostic groups in the file. Must match the actual count of diagnosis entries. Range: > 0. | 2 |
Per-Diagnosis Fields
| Parameter | Type | Description | Example Value |
|---|---|---|---|
imbalance_diagnosis_name | String | Must match a valid event_name of type "Imbalance" in KB_ODM_Event_Matrix.txt. Specifies the diagnosis that activates this group of actions. | Mass_Imbalance_PZR_Low |
diagnosis_priority | Integer | Priority of this diagnostic group. Lower value = higher priority. Range: ≥ 1. | 2 |
minimum_time | Double | Minimum time parameter (u) for the Weibull reset delay distribution. Specifies the dormancy period after an action fires before further actions in this group can be activated. Range: > 0.0. | 100.0 |
weibull_alpha | Double | Alpha (scale) parameter of the three-parameter Weibull distribution for the reset delay time. Range: > 0.0. | 1.0 |
weibull_beta | Double | Beta (shape) parameter of the three-parameter Weibull distribution for the reset delay time. Range: > 0.0. | 1.0 |
number_of_actions | Integer | Number of knowledge-based actions associated with this diagnosis group. Must match the actual count of action entries. | 2 |
Weibull Reset Delay Distribution (Equation 9)
The dormancy period after an action fires is drawn from a three-parameter Weibull distribution:
F(t) = 1 - exp(-((t - u) / alpha)^beta)Where u = minimum_time, alpha = weibull_alpha, beta = weibull_beta.
This same Weibull parameterization is also used to specify the time required to evaluate action prerequisites for each diagnosis group entry.
Per-Action Fields
| Parameter | Type | Description | Example Value |
|---|---|---|---|
action_name | String | Must match a valid controller listed in ControlPanel.txt. Specifies the controller manipulated by this action. | X_PZR_PORV |
action_priority | Integer | Priority of this action within the diagnosis group. Lower value = higher priority. Higher priority actions are performed first. Range: ≥ 1. | 2 |
action_type | Integer | Integer code for the type of control manipulation. See table below. | 3074 |
control_input_value | Double | Required when action_type is 3074 (VACTION) or 3112 (VADDITIVE). Target controller position or incremental change. | 0.0 |
control_parameter | String | Required when action_type is 3139 (VPARAMETER_CONTROL). Must match a parameter in ControlPanel.txt. Controller is set to the operator's perceived value of this parameter. | PZR_Pressure |
lower_control_limit | Double | Lower bound of the controller. Actions that would drive the controller below this value are not performed. | 0.0 |
upper_control_limit | Double | Upper bound of the controller. Actions that would drive the controller above this value are not performed. | 1.0 |
number_of_prerequisites | Integer | Number of prerequisite units (AND-connected conditions) for this action. OR-connected conditions within a unit count as a single unit. Must exactly match the count of prerequisite units in the file. | 3 |
Action Type Codes
| Integer Code | Name | Description |
|---|---|---|
3074 | VACTION | Simple controller manipulation. The action_name controller is positioned to the value specified by control_input_value. |
3112 | VADDITIVE | Incremental control. The action_name controller is incremented by the amount in control_input_value. |
3139 | VPARAMETER_CONTROL | Parameter-tracked control. The action_name controller is set to the operator's currently perceived value of control_parameter. If the parameter has not been perceived, no action is performed. |
Per-Prerequisite Fields
Prerequisites model the heuristic rules an operator uses to verify that an action is appropriate before executing it.
| Parameter | Type | Description | Example Value |
|---|---|---|---|
item_name | String | Must match a parameter_name, component_name, or alarm_name in ControlPanel.txt, or be the reserved word Mental_Belief or Parameter_Difference. | PZR_Level |
parameter_1 | String | Required only when item_name is Mental_Belief (specifies the mental belief name from KB_ODM_HardWired_Diagnosis.txt) or Parameter_Difference (specifies the first parameter for the difference calculation). | Safety_Injection |
parameter_2 | String | Required only when item_name is Parameter_Difference. Specifies the second parameter for the difference calculation. | — |
verification | Integer | Code controlling whether the operator re-verifies the indicator even if previously perceived. 3002 (VYES) = force re-verification; 3003 (VNO) or 3045 (VNONE) = use memorized value if available. | 3045 |
minimum_time | Double | Minimum time (Weibull u parameter) for prerequisite evaluation timing. Not used when item_name is Mental_Belief. | 0.0 |
weibull_alpha | Double | Weibull alpha for prerequisite evaluation timing. | 1.0 |
weibull_beta | Double | Weibull beta for prerequisite evaluation timing. | 2.0 |
expected_state | Integer | Required when item_name is a component, alarm, or Mental_Belief. See expected state codes below. | 3023 |
relationship | Integer | Required when item_name is a parameter or Parameter_Difference. Comparison operator. See relationship codes below. | 3009 |
value_1 | Double | Threshold value for the relationship comparison. | 2290.0 |
value_2 | Double | Second threshold value; required (as a dummy) for all relationships; actively used only for 3032 (VBETWEEN). | 0.0 |
logic_flag | Integer | Boolean connector to the next prerequisite. 3002 (VYES) = OR (merges with next into one unit); 3003 (VNO) or 3045 (VNONE) = AND (counts as a separate unit). | 3003 |
Expected State Codes
| Integer Code | Name | Applies To |
|---|---|---|
3022 | VON | Component or Alarm — item is in the ON or actuated state |
3023 | VOFF | Component or Alarm — item is in the OFF or cleared state |
3098 | VOPEN | Component — item is open |
3099 | VCLOSE | Component — item is closed |
3021 | VSUCCEED | Mental Belief — belief has been successfully established |
3045 | VNONE | Mental Belief — belief is in initial unset state (all beliefs initialize to VNONE) |
Relationship Codes (for Parameter Comparisons)
| Integer Code | Name | Condition Satisfied When |
|---|---|---|
3006 | VGT | item_name parameter > value_1 |
3007 | VGE | item_name parameter >= value_1 |
3008 | VEQ | item_name parameter == value_1 |
3009 | VLE | item_name parameter <= value_1 |
3010 | VLT | item_name parameter < value_1 |
3032 | VBETWEEN | value_1 <= item_name parameter <= value_2 (value_1 must be less than value_2) |
Prerequisite Logic Tree
Prerequisites form an AND/OR logic tree (Figure 17 in the manual):
Prerequisites Met
|
AND
/ \
OR Prerequisite 2 AND Prerequisite 3
/ \
1a 1bIn this example, the action is executed only if: (1) either 1a or 1b is true, AND (2) Prerequisite 2 is true, AND (3) Prerequisite 3 is true.
- Prerequisites connected by
logic_flag = 3002(VYES) are OR-connected and count as one prerequisite unit. - Prerequisites connected by
logic_flag = 3003(VNO) or3045(VNONE) are AND-connected and count as separate prerequisite units. - The
number_of_prerequisitesfield counts only AND-connected units.
Sample Input
The following example defines two imbalance diagnosis groups.
number_of_diagnoses
2
diagnosis_name Mass_Imbalance_PZR_Low
diagnosis_priority 2
reset_delay_time 100.0 1.0 1.0
number_of_actions 2
action_name X_PZR_PORV
action_priority 2
action_type 3074
control_input 0.0
lower_limit 0.0
upper_limit 1.0
number_of_prerequisites 1
PZR_Pressure 3045 0.0 1.0 2.0 3009 2290.0 0.0 3045
action_name X_SIAS
action_priority 3
action_type 3074
control_input 1.0
lower_limit 0.0
upper_limit 1.0
number_of_prerequisites 3
PZR_Level 3045 0.0 1.0 2.0 3009 0.20 0.0 3003
PZR_Pressure 3045 0.0 1.0 2.0 3009 2150.0 0.0 3003
Safety_Injection 3045 0.0 1.0 2.0 3023 3045
diagnosis_name Mass_Imbalance_PZR_High
diagnosis_priority 5
reset_delay_time 200.0 1.0 1.0
number_of_actions 2
action_name X_HPI_Pump_A
action_priority 2
action_type 3074
control_input 0.0
lower_limit 0.0
upper_limit 1.0
number_of_prerequisites 3
A_HPI_Pump_On 3045 1.0 3.0 3.0 3022 3045 3003
Min_Sub_Cooling 3045 1.0 2.0 2.0 3007 10.0 0.0 3003
PZR_Level 3045 0.0 2.0 2.0 3007 0.20 0.0 3045
action_name X_HPI_Pump_B
action_priority 3
action_type 3074
control_input 0.0
lower_limit 0.0
upper_limit 1.0
number_of_prerequisites 3
B_HPI_Pump_On 3045 1.0 3.0 3.0 3022 3045 3003
Min_Sub_Cooling 3045 1.0 3.0 3.0 3007 10.0 0.0 3003
PZR_Level 3045 0.0 1.0 2.0 3007 0.20 0.0 3045Sample Explanation
Mass_Imbalance_PZR_Low (Low Pressurizer Water Inventory)
Priority 2 (higher priority than the high-inventory case). Reset delay: Weibull(100.0, 1.0, 1.0) seconds. Two actions:
Action 1 — Close X_PZR_PORV (priority 2)
- Set
X_PZR_PORVcontroller to 0.0 (closed). - Prerequisite:
PZR_Pressure<= 2290 psia (prevent closing PORV if pressure is at or above setpoint).
Action 2 — Actuate X_SIAS (priority 3)
- Set
X_SIAScontroller to 1.0 (actuate safety injection). - Prerequisites (AND-connected):
PZR_Level<= 0.20 (20%)PZR_Pressure<= 2150 psiaSafety_Injectioncomponent state isVOFF(3023) — safety injection has not already been actuated.
Mass_Imbalance_PZR_High (High Pressurizer Water Inventory)
Priority 5 (lower priority). Reset delay: Weibull(200.0, 1.0, 1.0) seconds. Two actions:
Action 1 — Stop X_HPI_Pump_A (priority 2)
- Set
X_HPI_Pump_Acontroller to 0.0 (stop). - Prerequisites (AND-connected):
A_HPI_Pump_Oncomponent state isVON(3022) — pump A is currently running.Min_Sub_Cooling>= 10.0 °F — adequate subcooling margin exists.PZR_Level>= 0.20 (20%) — pressurizer level is adequately high.
Action 2 — Stop X_HPI_Pump_B (priority 3)
- Set
X_HPI_Pump_Bcontroller to 0.0 (stop). - Same three prerequisites as Action 1, substituting
B_HPI_Pump_OnforA_HPI_Pump_On.