Skip to content

Powerflow Solvers

EnerOS Bot edited this page Jul 5, 2026 · 1 revision

中文 | English

潮流求解器

维护版本:v0.51.2 | 最后更新:2026-07-06

潮流计算是电力系统分析的基石。EnerOS 在 crates/eneros-powerflow 中提供 4 种算法,并通过 MATPOWER IEEE 14 基准系统验证。本页概述算法选择与精度验证;完整实现请参阅主仓库 crates/eneros-powerflow/ADR-0019

4 种算法

算法 crate 模块 收敛性 适用场景 复杂度
牛顿-拉夫逊(Newton-Raphson, NR) solvers::newton 二次收敛 输电网 / 大范围负荷变化 O(n³) per iter
Fast-Decoupled(FD / XB-YB) solvers::fast_decoupled 线性收敛 输电网 / 实时快速计算 O(n²) per iter
前推回代(Backward-Forward Sweep, BFSW) solvers::forward_backward 鲁棒收敛 配电网 / 辐射状拓扑 O(n) per iter
直流潮流(DC Powerflow) solvers::dc 直接求解 启发式 / 趋势分析 / 实时调度 O(n³) 一次

MATPOWER IEEE 14 验证

crates/eneros-powerflow/tests/crates/eneros-test-utils/ 提供 IEEE 14 节点基准系统 fixture:

#[test]
fn newton_matches_matpower_ieee14() {
    let fixture = Ieee14Fixture::load();
    let result = PowerflowSolver::newton()
        .tolerance(1e-8)
        .max_iterations(50)
        .solve(&fixture.network)
        .unwrap();
    let matpower_ref = fixture.matpower_solution();
    assert!(result.voltage.all_close(&matpower_ref.voltage, 1e-6));
    assert!(result.power.all_close(&matpower_ref.power, 1e-6));
}

v0.51.0 完成 NR + FD 与 MATPOWER 参考解的对齐验证(电压幅值/相角 / 有功/无功功率均在 1e-6 容差内一致)。

输入校验(v0.51.1+)

FD solver 新增输入校验,拒绝非正 / 非有限初值:

pub fn solve(&self, network: &Network, v_initial: &[f64]) -> Result<PowerflowResult> {
    for (i, &v) in v_initial.iter().enumerate() {
        if !v.is_finite() {
            return Err(PowerflowError::InvalidInitialValue(i, "non-finite"));
        }
        if v <= 0.0 {
            return Err(PowerflowError::InvalidInitialValue(i, "non-positive"));
        }
    }
    // ... 求解 ...
}

配套分析能力

能力 crate 标准
谐波分析 eneros-analysis GB/T 14549
电磁暂态 EMT eneros-emtp (v0.51.0+)
状态估计 eneros-analysis WLS 加权最小二乘
N-1 校验 eneros-constraint 输电网规划标准
短路计算 eneros-analysis IEC 60909
暂态稳定 eneros-analysis 时域仿真

已知限制(v0.51.2)

  • AC-OPF(IEEE 30 / 118)尚未实现,仅 DC-OPF 可用,待 v0.52.0+
  • KKT 求解器升级待 v0.52.0
  • IEEE 39-bus CCT(临界切除时间)API 缺 3 个接口,待 v0.52.0
  • EMT 求解器为初版,未覆盖全部故障类型

相关文档

Clone this wiki locally