def test_calc_fitness(mocked_init, mocked_raise_on): planner = GAPlanner(None, None, None) planner._logger = ru.Logger('dummy') planner._campaign = [] planner._population = [[1, 3, 5, 6, -1, 2, 7, -1, 4, 8, 9], [1, 5, 6, -1, 3, 2, 7, -1, 4, 8, 9]] planner._est_txs = [[10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10], [10, 10, 10]] planner._abs_fitness_term = 30 planner._population_size = 2 planner._fitness = [] for i in range(9): workflow = { 'description': 'W%s' % str(i + 1), 'id': i + 1, 'num_oper': 10, 'requirements': None } planner._campaign.append(workflow) planner._resources = [{ 'id': 1, 'performance': 1 }, { 'id': 2, 'performance': 1 }, { 'id': 3, 'performance': 1 }] planner._calc_fitness() assert planner._fitness[1] == 1 assert planner._fitness[0] == (1 / math.sqrt(200))
def test_selection(mocked_init, mocked_raise_on): planner = GAPlanner(None, None, None) planner._logger = ru.Logger('dummy') planner._campaign = {'campaign': []} planner._population = [[1, 3, 5, 6, -1, 2, 7, -1, 4, 8, 9], [1, 5, 6, -1, 3, 2, 7, -1, 4, 8, 9]] planner._population_size = 2 planner._fitness = [1, 0.5] parents = planner._selection() assert (parents[0] == [1, 3, 5, 6, -1, 2, 7, -1, 4, 8, 9] or parents[0] == [1, 5, 6, -1, 3, 2, 7, -1, 4, 8, 9])