def execute(self, solution: BinarySolution) -> BinarySolution: offspring = solution.variables popsize = len(solution.variables[0]) values = [ np.random.choice(solution.variables[1][i]) for i in range(popsize) ] probs = np.random.uniform(0, 1, popsize) for i in range(popsize): if probs[i] <= self.probability: offspring[0][i] = values[i] solution.variables = offspring return solution
def create_solution(self) -> BinarySolution: new_solution = BinarySolution(self.number_of_variables, self.number_of_objectives, self.number_of_constraints) new_solution.variables = \ [self.sf.get_random_individual() for i in range(self.number_of_variables)] return new_solution