Implementation of Functional Dependency Network Analysis (FDNA) for quantifying systemic risk in power grid infrastructure.
This repository contains the complete Python implementation for applying FDNA methodology to power systems analysis. The code implements:
- Multi-layer dependency modeling (Physical, Cyber, Mission layers)
- Cascading failure propagation simulation
- Risk quantification metrics (TSI, CAF, CCI)
- IEEE standard test system integration (14-bus, 30-bus)
- Comparative validation with traditional methods
fdna_research/
├── code/ # Python implementation
│ ├── fdna_core.py # Core FDNA algorithm
│ ├── ieee_bus_fdna.py # IEEE bus system adapter
│ ├── run_core_experiments.py # Main experiment runner
│ ├── run_experiments.py # Extended experiments
│ ├── generate_validation_data.py # Validation data generator
│ ├── run_comparative_validation.py # Method comparison
│ ├── create_visualizations.py # Figure generation
│ ├── create_publication_quality_figures.py # Publication figures
│ ├── create_high_quality_diagrams.py # Architecture diagrams
│ └── regenerate_figures_readable.py # Figure regeneration
├── data/ # System data and parameters
│ └── ieee14_model_info.json
├── results/ # Experimental results (generated)
└── figures/ # Generated figures (generated)
- Python 3.8 or higher
- pip package manager
pip install -r requirements.txtOr install individually:
pip install numpy pandas networkx matplotlib seaborn pandapowerExecute the main experiments on IEEE test systems:
cd code
python3 run_core_experiments.pyThis will:
- Load IEEE 14-bus and 30-bus systems
- Simulate various failure scenarios
- Calculate TSI and CAF metrics
- Save results to
../results/directory
Create comparative validation data:
python3 generate_validation_data.pyCompare FDNA with traditional methods:
python3 run_comparative_validation.pyCreate publication-quality figures:
python3 create_visualizations.pyOr create specific figure types:
python3 create_publication_quality_figures.py
python3 create_high_quality_diagrams.py
python3 regenerate_figures_readable.pyRun comprehensive experiments:
python3 run_experiments.pyImplements the fundamental FDNA algorithm:
- FDNANode: Component representation with operability
- FDNAEdge: Dependency relationships (α, β parameters)
- FDNAModel: Main model class with cascade propagation
calculate_sod(): Supply of Dependencycalculate_cod(): Capacity of Dependencypropagate_cascade(): Failure propagation simulationcalculate_tsi(): Total System Impactcalculate_caf(): Cascade Amplification Factorcalculate_cci(): Critical Component Index
Converts IEEE standard test systems to FDNA models:
- Loads IEEE 14-bus and 30-bus systems from PandaPower
- Creates multi-layer dependency models
- Defines realistic dependency parameters (α, β)
TSI = Σ_i w_i · (1 - P_i,final)
CAF = TSI / Initial_Impact
SOD_i(t) = min_{j ∈ D_i} { P_j(t) / β_ij }
COD_i(t) = ∏_{j ∈ D_i} (1 - α_ij(1 - P_j(t)))
core_experiments.csv: Main experimental resultscore_experiments.json: Detailed results in JSON formatsummary_statistics.json: Aggregate statisticsvalidation_data.json: Comparative validation datacomparative_validation.json: Method comparison results
caf_comparison.png: Cascade amplification comparisonfailure_propagation.png: Temporal failure propagationsystem_comparison.png: IEEE 14-bus vs 30-bus comparisonmethodology_flowchart.png: FDNA workflow diagramsystem_architecture.png: Multi-layer architecture diagramcascade_flow.png: Cascade propagation flow diagram
FDNA (Functional Dependency Network Analysis) is an established methodology for analyzing system dependencies and cascading failures. This implementation applies FDNA to power grid infrastructure, modeling:
- Physical Layer: Generators, transformers, transmission lines, buses, loads
- Cyber Layer: SCADA systems, RTUs, communication networks
- Mission Layer: Critical services, power delivery, grid stability
The model simulates cascading failures by iteratively updating component operability based on dependency relationships until convergence.
- Garvey, P. R., & Pinto, C. A. (2009). Introduction to functional dependency network analysis. The MITRE Corporation, Tech. Rep. 09-4602.
- Servi, L. D., & Garvey, P. R. (2018). Deriving global criticality conditions from local dependencies using Functional Dependency Network Analysis (FDNA). Systems Engineering, 21(4), 349-360.
- Thurner, L., et al. (2018). pandapower - an Open-Source Python Tool for Advanced Power System Modeling and Analysis. IEEE Transactions on Power Systems, 33(6), 6837-6845.
This research implementation is provided for academic purposes.
For questions about this implementation, please refer to the code comments and documentation within each module.