GENetic ImplemenTOR (GENITOR)

class, options)

GENetic ImplemenTOR (GENITOR).


“Selective pressure and population diversity should be controlled as directly as possible.”—[Whitley, 1989]

This is a slightly modified version of GENITOR for continuous optimization. Originally GENITOR was proposed to solve challenging neuroevolution problems by Whitley, the recipient of IEEE Evolutionary Computation Pioneer Award 2022.

  • problem (dict) –

    problem arguments with the following common settings (keys):
    • ’fitness_function’ - objective function to be minimized (func),

    • ’ndim_problem’ - number of dimensionality (int),

    • ’upper_boundary’ - upper boundary of search range (array_like),

    • ’lower_boundary’ - lower boundary of search range (array_like).

  • options (dict) –

    optimizer options with the following common settings (keys):
    • ’max_function_evaluations’ - maximum of function evaluations (int, default: np.Inf),

    • ’max_runtime’ - maximal runtime to be allowed (float, default: np.Inf),

    • ’seed_rng’ - seed for random number generation needed to be explicitly set (int);

    and with the following particular setting (key):
    • ’n_individuals’ - population size (int, default: 100),

    • ’cv_prob’ - crossover probability (float, default: 0.5).


Use the optimizer to minimize the well-known test function Rosenbrock:

 1>>> import numpy
 2>>> from pypop7.benchmarks.base_functions import rosenbrock  # function to be minimized
 3>>> from import GENITOR
 4>>> problem = {'fitness_function': rosenbrock,  # define problem arguments
 5...            'ndim_problem': 2,
 6...            'lower_boundary': -5*numpy.ones((2,)),
 7...            'upper_boundary': 5*numpy.ones((2,))}
 8>>> options = {'max_function_evaluations': 5000,  # set optimizer options
 9...            'seed_rng': 2022}
10>>> genitor = GENITOR(problem, options)  # initialize the optimizer class
11>>> results = genitor.optimize()  # run the optimization process
12>>> # return the number of function evaluations and best-so-far fitness
13>>> print(f"GENITOR: {results['n_function_evaluations']}, {results['best_so_far_y']}")
14GENITOR: 5000, 0.004382445279905116

For its correctness checking of coding, the code-based repeatability report cannot be provided owing to the lack of its simulation environment.


crossover probability.




population size.




Whitley, D., Dominic, S., Das, R. and Anderson, C.W., 1993. Genetic reinforcement learning for neurocontrol problems. Machine Learning, 13, pp.259-284.

Whitley, D., 1989, December. The GENITOR algorithm and selection pressure: Why rank-based allocation of reproductive trials is best. In Proceedings of International Conference on Genetic Algorithms (pp. 116-121).