def test_sbx(self): with open(os.path.join("resources", "crossover.json"), encoding='utf-8') as f: data = json.loads(f.read()) for i, e in enumerate(data): Configuration.rand.random = MagicMock() Configuration.rand.random.side_effect = e['rnd'] sbx = SimulatedBinaryCrossover(0.9, 15) parents = np.array(e['parents'])[None, :, :] children = sbx.do(ZDT4(), parents) _children = np.array(e['children']) is_equal = np.all(np.abs(children - _children) < 0.001) if not is_equal: print(i) print(np.abs(children - _children)) self.assertTrue(is_equal)
import numpy as np from pymoo.operators.crossover.simulated_binary_crossover import SimulatedBinaryCrossover from pymoo.operators.sampling.random_sampling import FloatRandomSampling from pymoo.problems.single import Rastrigin problem = Rastrigin(n_var=30) crossover = SimulatedBinaryCrossover(eta=20) pop = FloatRandomSampling().do(problem, 2) parents = np.array([[0, 1]]) off = crossover.do(problem, pop, parents) print(off) ind_a = pop[0] ind_b = pop[1] off = crossover.do(problem, ind_a, ind_b) print(off)