Fault Identification using Fault Injection with Domain Knowledge-Guided Reinforcement Learning

Citation Author(s):
Mehrdad
Moradi
University of Antwerp and Flanders Make
Bert
Van Acker
University of Antwerp and Flanders Make
Joachim
Denil
University of Antwerp and Flanders Make
Submitted by:
Mehrdad Moradi
Last updated:
Mon, 07/08/2024 - 15:59
DOI:
10.21227/c6kb-r494
Data Format:
License:
0
0 ratings - Please login to submit your rating.

Abstract 

Safety assessment of Cyber-Physical Systems (CPS) requires a tremendous amount of effort as the complexity of cyber-physical systems is increasing. A well-known approach for the safety assessment of CPS is Fault Injection (FI). The goal of fault injection is to find a catastrophic fault that can fail the system by injecting faults into it. These catastrophic faults are less likely to happen, and finding it requires tremendous labor and cost. In this paper, we propose a Reinforcement Learning (RL)-based method to configure faults in the system under test automatically and find unknown faults. Reinforcement learning is a machine learning algorithm that learns by integrating dynamically with the environment. The proposed method provides a guideline to utilize high-level domain knowledge about the system under test for constructing the reinforcement learning agent and fault injection campaign. We mainly use the system (safety) specification to shape the reward function in the reinforcement learning agent. The reinforcement learning agent interacts with the system under test to find unknown faults. We test the proposed method on two use cases: adaptive cruise control and autonomous emergency braking in MATLAB/Simulink. We compare the proposed method with random-based fault injection. Our proposed method outperforms random-based FI in terms of severeness and number of found faults.

Instructions: 

In this repository we have experimental results and code for our paper entitled:
"Fault Identification using Fault Injection with Domain Knowledge-Guided Reinforcement Learning"

How to setup?
You need to install some packages as bellow on python 3.8 or 3.7.9(for AEB) respectively:
FMPy version=0.3.5 or 0.3.2
numpy version=1.19.5 or 1.21.2
stable-baseline3 version=1.3.0 or 1.2.0
optuna version=2.10.0
GYM version=0.19.0 or 0.21.0
Matplotlib version=3.4.2 or 3.4.3
torch version=1.10.1 or 1.9.1
plotly version=5.5.0

We have 2 case studies of Adaptive Criuese Controller (ACC) and Autonomous Emergency Braking (AEB).
For each case study there a folder and we put code and resutls in corresponding folder.
Structure of folders are as follow:

Root
|__ACC
| |__acc_experiment.py : code for runing experiment-> you need to uncomment functions writen in the main section in order to run the experiment step by step
| |__ACC_RBFI.csv : result of Random-Based Fault Injection
| |__mpcACCsystem_fi_reward2.fmu : The generated FMU from the case study
| |__ACC_with_hpt : results of runing acc_experiment.py with tuned hyperparameters
| |__ACC_without_hpt : results of runing acc_experiment.py with default hyperparameters
| |__AdaptiveCruiseControlExample : the case study of Mathworks
|__AEB
| |__aeb_experiment.py : code for runing experiment-> you need to uncomment functions writen in the main section in order to run the experiment step by step
| |__AEB_RBFI.csv : result of Random-Based Fault Injection
| |__AEBTestBenchExample.fmu : The generated FMU from the case study
| |__AEB_with_hpt : results of runing acc_experiment.py with tuned hyperparameters
| |__AEB_without_hpt : results of runing acc_experiment.py with default hyperparameters
| |__AEBWithSensorFusionExample : the case study of Mathworks

Funding Agency: 
University of Antwerp

Comments

Version 0

Submitted by Mehrdad Moradi on Tue, 03/22/2022 - 06:30