def __init__(self, mutation_operator_list:[Mutation]): super(CompositeMutation,self).__init__(probability=1.0) Check.is_not_none(mutation_operator_list) Check.collection_is_not_empty(mutation_operator_list) self.mutation_operators_list = [] for operator in mutation_operator_list: Check.that(issubclass(operator.__class__, Mutation), "Object is not a subclass of Mutation") self.mutation_operators_list.append(operator)
def __init__(self, crossover_operator_list:[Crossover]): super(CompositeCrossover, self).__init__(probability=1.0) Check.is_not_none(crossover_operator_list) Check.collection_is_not_empty(crossover_operator_list) self.crossover_operators_list = [] for operator in crossover_operator_list: Check.that(issubclass(operator.__class__, Crossover), "Object is not a subclass of Crossover") self.crossover_operators_list.append(operator)
def __init__(self, solutions: List[Solution]): super(CompositeSolution, self).__init__(len(solutions), solutions[0].number_of_objectives, solutions[0].number_of_constraints) Check.is_not_none(solutions) Check.collection_is_not_empty(solutions) for solution in solutions: Check.that( solution.number_of_objectives == solutions[0].number_of_objectives, "The solutions in the list must have the same number of objectives: " + str(solutions[0].number_of_objectives)) Check.that( solution.number_of_constraints == solutions[0].number_of_constraints, "The solutions in the list must have the same number of constraints: " + str(solutions[0].number_of_constraints)) self.variables = solutions