Skip to content

inverse

inverse #

A regularized 1/(d+ε) inverse distance energy function.

inverse(max_energy=10 ** 6) #

Create a regularized inverse energy function.

Uses energy(d) = 1/(d + ε) where ε = 1/max_energy to avoid division by zero. It is applied to whole numpy distance matrices, mapping an array of distances to an array of energies elementwise.

Parameters:

Name Type Description Default
max_energy float

Maximum energy value (returned when distance ≈ 0). Default is 10^6.

10 ** 6

Returns:

Type Description
Callable[[_Distance], _Distance]

A function distances -> energies for use with select_sessions.

Source code in capturegraph-lib/capturegraph/scheduling/energy/inverse.py
def inverse(max_energy: float = 10**6) -> Callable[[_Distance], _Distance]:
    """Create a regularized inverse energy function.

    Uses `energy(d) = 1/(d + ε)` where ε = 1/max_energy to avoid division by zero.
    It is applied to whole numpy distance matrices, mapping an array of distances
    to an array of energies elementwise.

    Args:
        max_energy: Maximum energy value (returned when distance ≈ 0).
            Default is 10^6.

    Returns:
        A function `distances -> energies` for use with `select_sessions`.
    """
    epsilon = 1.0 / max_energy

    def _inverse(distance: _Distance) -> _Distance:
        return cast(_Distance, 1.0 / (distance + epsilon))

    return _inverse