Module ml4opf.functional.dc
DCOPF Functional interface
Functions
def balance_residual(pf_bus: torch.Tensor,
pt_bus: torch.Tensor,
pg_bus: torch.Tensor,
pd_bus: torch.Tensor,
gs_bus: torch.Tensor) ‑> torch.Tensor-
Compute power balance residual.
\text{g_balance} = \text{pg_bus} - \text{pd_bus} - \text{gs_bus} - \text{pf_bus} + \text{pt_bus}
Args
pf_bus
:Tensor
- Power flow from bus. (batch_size, nbus)
pt_bus
:Tensor
- Power flow to bus. (batch_size, nbus)
pg_bus
:Tensor
- Power generation at bus. (batch_size, nbus)
pd_bus
:Tensor
- Power demand at bus. (batch_size, nbus)
gs_bus
:Tensor
- Shunt conductance at bus. (batch_size, nbus)
Returns
Tensor
- Power balance residual. (batch_size, nbus)
def objective(pg: torch.Tensor, c0: torch.Tensor, c1: torch.Tensor) ‑> torch.Tensor
-
Compute DCOPF objective function.
\text{objective} = \sum_{i=1}^{n} \text{cost}_{2,i} + \text{cost}_{1,i} \cdot \text{pg}_i
Args
pg
:Tensor
- Power generation. (batch_size, ngen)
cost
:Tensor
- Cost coefficients. (ngen, 3)
Returns
Tensor
- Objective function. (batch_size,)
def ohm_violation(pf: torch.Tensor, dva: torch.Tensor, b: torch.Tensor) ‑> torch.Tensor
-
Compute Ohm's law violation.
\text{g_ohm} = - b \cdot \text{dva} - \text{pf}
Args
pf
:Tensor
- Power flow. (batch_size, nbranch)
dva
:Tensor
- Voltage angle differences. (batch_size, nbranch)
b
:Tensor
- Branch susceptance. (nbranch,)
Returns
Tensor
- Ohm's law violation. (batch_size, nbranch)
def pf_from_dva(dva: torch.Tensor, b: torch.Tensor) ‑> torch.Tensor
-
Compute power flow given voltage angle differences.
\text{pf} = -b \cdot \text{dva}
Args
dva
:Tensor
- Voltage angle differences. (batch_size, nbranch)
b
:Tensor
- Branch susceptance. (nbranch,)
Returns
Tensor
- Power flow. (batch_size, nbranch)