Source code for MEDfl.LearningManager.strategy


from collections import OrderedDict
from typing import Dict, List, Optional, Tuple

import flwr as fl
import numpy as np





[docs] class Strategy: """ A class representing a strategy for Federated Learning. Attributes: name (str): The name of the strategy. Default is "FedAvg". fraction_fit (float): Fraction of clients to use for training during each round. Default is 1.0. fraction_evaluate (float): Fraction of clients to use for evaluation during each round. Default is 1.0. min_fit_clients (int): Minimum number of clients to use for training during each round. Default is 2. min_evaluate_clients (int): Minimum number of clients to use for evaluation during each round. Default is 2. min_available_clients (int): Minimum number of available clients required to start a round. Default is 2. initial_parameters (Optional[]): The initial parameters of the server model Methods: """
[docs] def __init__( self, name: str = "FedAvg", fraction_fit: float = 1.0, fraction_evaluate: float = 1.0, min_fit_clients: int = 2, min_evaluate_clients: int = 2, min_available_clients: int = 2, initial_parameters = [], evaluation_methode = "centralized" ) -> None: """ Initialize a Strategy object with the specified parameters. Args: name (str): The name of the strategy. Default is "FedAvg". fraction_fit (float): Fraction of clients to use for training during each round. Default is 1.0. fraction_evaluate (float): Fraction of clients to use for evaluation during each round. Default is 1.0. min_fit_clients (int): Minimum number of clients to use for training during each round. Default is 2. min_evaluate_clients (int): Minimum number of clients to use for evaluation during each round. Default is 2. min_available_clients (int): Minimum number of available clients required to start a round. Default is 2. initial_parameters (Optional[]): The initial parametres of the server model evaluation_methode ( "centralized" | "distributed") """ self.fraction_fit = fraction_fit self.fraction_evaluate = fraction_evaluate self.min_fit_clients = min_fit_clients self.min_evaluate_clients = min_evaluate_clients self.min_available_clients = min_available_clients self.initial_parameters = initial_parameters self.evaluate_fn = None self.name = name self.strategy_object = eval( f"fl.server.strategy.{self.name}(\ fraction_fit={self.fraction_fit},\ fraction_evaluate= {self.fraction_evaluate},\ min_fit_clients= {self.min_fit_clients},\ min_evaluate_clients= {self.min_evaluate_clients},\ min_available_clients={self.min_available_clients},\ initial_parameters=fl.common.ndarrays_to_parameters(self.initial_parameters),\ evaluate_fn={self.evaluate_fn})" )