# macop.policies.classicals — macop v1.0.5 documentation

# Source code for macop.policies.classicals

    """Classical policies classes implementations
    """
    # main imports
    import random

    # module imports
    from .base import Policy

    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'
        """
        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]