コード例 #1
0
    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)
コード例 #2
0
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)