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)