Module ml4opf.layers.voltagedifference_repair

Classes

class VoltageDifferenceRepair (branch_incidence_matrix: torch.Tensor, slackbus_idx: int | None = None)

Repair voltage angle differences to voltage angles using least-squares.

Initialize VoltageDifferenceRepair module.

Args

branch_incidence_matrix : Tensor
Branch incidence matrix. (nbranch, nbus)
slackbus_idx : Optional[int]
Index of slack bus.

Ancestors

  • torch.nn.modules.module.Module

Static methods

def repair(dva: torch.Tensor, branch_incidence_matrix: torch.Tensor, driver: str = 'gelsy') ‑> torch.Tensor

Convert angle differences per-branch to per-bus voltage angles using least-squares.

Solves the problem \min \| A \theta - \Delta \|_2^2 for \theta , where A is the branch incidence matrix.

Args

dva : Tensor
Angle differences per branch (( \Delta )). (batch_size, nbranch)

Returns

Tensor
Voltage angles per bus (( \theta )). (batch_size, nbus)

Methods

def forward(self, dva: torch.Tensor, driver: str = 'gelsy') ‑> torch.Tensor

Repair voltage angle differences to voltage angles using least-squares.

Args

dva : Tensor
Voltage angle differences. (batch_size, nbranch)
driver : str
Least-squares driver. Default: "gelsy".

Returns

Tensor
Voltage angles. (batch_size, nbus)