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)