INNER CODE UNIT · Python
_adaptive_select
Tisha-runwal/Personalized-Federated-Learning-for-Privacy--Preserving-and-Scalable-IoT-Driven-Smart-Healthcare · pfl_hcare/fl/server.py:351
def _adaptive_select(
num_clients: int,
n_select: int,
gradient_norms: dict[int, float],
last_participation: dict[int, int],
current_round: int,
min_interval: int,
seed: int,
) -> list[int]:
"""Adaptive client selection based on gradient norms (Eq.9).
p_i = ||grad_i|| / sum(||grad_j||)
Clients with larger gradient change participate more often.
Clients that haven't participated recently are force-included.
"""
rng = np.random.RandomState(seed)
# Force-include clients that haven't participated recently