"""Classical policies classes implementations
"""
# main imports
import random
# module imports
from .base import Policy
[docs]class RandomPolicy(Policy):
"""Policy class implementation which is used for select operator randomly from the `operators` list
Attributes:
operators: {[Operator]} -- list of selected operators for the algorithm
Example:
>>> import random
>>> random.seed(42)
>>> from macop.operators.discrete.crossovers import SimpleCrossover
>>> from macop.operators.discrete.mutators import SimpleMutation
>>> from macop.policies.classicals import RandomPolicy
>>> policy = RandomPolicy([SimpleCrossover(), SimpleMutation()])
>>> operator = policy.select()
>>> type(operator).__name__
'SimpleCrossover'
"""
[docs] def select(self):
"""Select randomly the next operator to use
Returns:
{Operator}: the selected operator
"""
# choose operator randomly
index = random.randint(0, len(self._operators) - 1)
return self._operators[index]