CyberAttack-PLL / openenv.yaml
krishuggingface's picture
Restore 500 steps, LLM every step with circuit breaker, use requests.Session for speed
4c2a495
name: pll-cyberattack-detection
version: 1.0.0
description: >
Real-world OpenEnv for cyberattack detection on SRF-based
Phase-Locked Loops in grid-connected inverters. An agent monitors
sensor streams and detects False Data Injection attacks before
they cause loss of grid synchronization.
tags: [power-systems, cybersecurity, control-systems, openenv, pll, fdi]
reward_range: [-2.2, 1.15]
observation_space:
type: continuous
shape: [83]
fields:
- name: vq_window
shape: [20]
description: q-axis voltage error signal (pu)
- name: vd_window
shape: [20]
description: d-axis voltage (pu)
- name: omega_window
shape: [20]
description: normalized frequency deviation from nominal
- name: omega_deviation_window
shape: [20]
description: frequency deviation from nominal (rad/s)
- name: raw_voltages
shape: [3]
description: raw three-phase voltages [va, vb, vc] (pu)
action_space:
type: mixed
fields:
- name: attack_detected
type: bool
- name: attack_type
type: int
range: [0, 4]
- name: confidence
type: float
range: [0.0, 1.0]
- name: protective_action
type: int
range: [0, 3]
tasks:
- id: sinusoidal_fdi
difficulty: easy
numeric_id: 0
grader: time_to_detection
max_score: 1.0
episode_length: 500
description: Detect sinusoidal FDI attack within 100 steps of attack start
- id: multi_attack_classification
difficulty: medium
numeric_id: 1
grader: classification_accuracy
max_score: 1.0
episode_length: 500
description: Classify attack type from observation window
- id: stealthy_attack_detection
difficulty: hard
numeric_id: 2
grader: pre_lock_loss_detection
max_score: 1.0
episode_length: 500
description: Detect stealthy low-amplitude attack before PLL loss-of-lock
episode_length: 500