Source code for discrete_optimization.generic_tools.ea.deap_wrappers

#  Copyright (c) 2022 AIRBUS and its affiliates.
#  This source code is licensed under the MIT license found in the
#  LICENSE file in the root directory of this source tree.

from collections.abc import Sequence

from discrete_optimization.generic_tools.do_mutation import Mutation
from discrete_optimization.generic_tools.do_problem import Problem


[docs] def generic_mutate_wrapper( individual: list[int], problem: Problem, attribute_name: str, custom_mutation: Mutation, ) -> tuple[list[int]]: custom_sol = problem.build_solution_from_encoding( int_vector=individual, encoding_name=attribute_name ) new_custom_sol = custom_mutation.mutate(custom_sol)[0] new_individual = individual tmp_vector: Sequence = getattr(new_custom_sol, attribute_name) for i in range(len(tmp_vector)): new_individual[i] = tmp_vector[i] return (new_individual,)