Source code for core.abc.scout_bee
"""Scout Bees' class responsible for the initialization phase of the
Artificial Bee Colony optimization.
"""
import sys
sys.path.append('...')
from .food_source import FoodSource
from config import Params
[docs]class ScoutBee:
'''Scout Bees' static methods.
ABC Scout Bees are generally classified as a *reset* operator
for Employee/Onlooker Bees.
Responsible for sampling the initial random FoodSources Xm→
and reseting employee bees when the abandonment limit is reached
'''
[docs] @staticmethod
def sample(obj_interface):
'''Sample a random point from the objective function
Args:
obj_interface (:class:`~core.objective_interface.ObjectiveInterface`): the objective interface that defines the boundaries of the problem
Returns:
:class:`~core.abc.food_source.FoodSource`: the randomly sampled initial position
'''
return FoodSource(obj_interface.sample())
[docs] @staticmethod
def check_abandonment(employees, obj_interface):
'''Check if EmployeeBees reached abandonment limit
Args:
employees (list): a list of :class:`~core.abc.employee_bee.EmployeeBee` to check their trial count / abandonment limit
obj_interface (:class:`~core.objective_interface.ObjectiveInterface`): the objective interface, needed to :func:`core.abc.scout_bee.ScoutBee.sample` a new position if the abandonment limit is reached
'''
for employee in employees:
if employee.trials >= Params['ABANDONMENT_LIMIT']:
# Reset EmployeeBees to a new ScoutBee position
employee.reset(ScoutBee.sample(obj_interface))