A prototypical implementation for the construction of data sets containing False Data Injection Attacks (FDIAs) and evaluating the performance of detecting FDIAs using machine learning-based models.
NOTE: A comprehensive documentation is under development.
This prototypical implementation is divided into two parts: the MATLAB part and the Python part.
The following listing states the functionalities offered by each file in the corresponding part.
NOTE: All absolute and relevant paths in the scripts pointing to saved data sets (e.g., .mat
or .pkl
files) have to be adjusted accordingly.
- Matlab
get_state_vars_with_load.m
: Main function for the generation of measurement data based on load data.gen_load_data.m
: An example, showing the usage of the functionget_state_vars_with_load
. In this specific example, load data that can be freely obtained from the New York Independent System Operator (NYISO) is used. For better usability, an example load data is included undermatlab/data/nyiso_2013/*.csv
. New load data can be obtained any time by visiting the homepage of NYISO.
- Python
convert_measurement_data.ipynb
: The measurement data set generated bygen_load_data.m
in Matlab is saved to a.mat
file. Usually, every year of the NYISO data is saved to its own.mat
file (e.g.,nyiso_load_13.mat
). By use of this notebook, all the single.mat
files can be imported and converted to a single.pkl
file. This main.pkl
file, containing all the measurement data sets, is then used in the Python files described below.tf2.py
: Prototypical implementation of an RNN based on Tensorflow.svm.py
: Prototypical implementation of an SVM based on Scikit.models/data_generator.py
: Module for the generation of data sets containing False Data Injection Attacks, based on the measurement data set generated bygen_load_data.m
in Matlab.models/configs.py
: Module containing all the config definitions, classes and various methods. A detailed documentation is under development.