Source code for glompo.opt_selectors.random

import random
from typing import Any, Dict, Tuple, Type, Union

from .baseselector import BaseSelector
from ..core.optimizerlogger import BaseLogger
from ..optimizers.baseoptimizer import BaseOptimizer


[docs]class RandomSelector(BaseSelector): """ Randomly selects an optimizer from the available options. """ def select_optimizer(self, manager: 'GloMPOManager', log: BaseLogger, slots_available: int) -> Union[Tuple[Type[BaseOptimizer], Dict[str, Any], Dict[str, Any]], None, bool]: if not self.allow_spawn(manager): return False viable = [] for opt in self.avail_opts: if opt[1]['workers'] <= slots_available: viable.append(opt) if len(viable) == 0: return None return random.choice(viable)