Genetic Algorithm

A population-based evolutionary algorithm with configurable mutation, selection, and recombination operators.

GeneticAlgorithm configuration plus its mutation, selection, and recombination operator types.

class RecombinatorType(*values)[source]

Crossover strategies for combining parent solutions.

UNIFORM_CROSSOVER = 'Uniform crossover'
N_POINT_CROSSOVER = 'N-point crossover'
class ComparatorType(*values)[source]

Solution-comparison strategy for multi-objective optimisation.

LEXICOGRAPHIC_COMPARATOR = 'Lexicographic comparator'
WEIGHTED_OBJECTIVE_COMPARATOR = 'Weighted objective lexicographic comparator'
SAMPLE_WEIGHTED_OBJECTIVE_COMPARATOR = 'Weighted objective online lexicographic comparator'
USER_WEIGHTED_OBJECTIVE_COMPARATOR = 'User weighted objective comparator'
LEXICOGRAPHIC_ONLINE_WEIGHTED_OBJECTIVE_COMPARATOR = 'Lexicographic online weighted objective comparator'
class MutationType(*values)[source]

Mutation strategy used to perturb individual solutions.

GAUSSIAN_MUTATION = 'Gaussian mutation'
UNIFORM_MUTATION = 'Uniform mutation'
class SelectionType(*values)[source]

Strategy for selecting individuals from the population.

TOURNAMENT_SELECTION = 'Tournament selection'
FAST_TOURNAMENT_SELECTION = 'Fast tournament selection'
RANDOM_SELECTION = 'Random selection'
class DistanceMetricType(*values)[source]

Distance metric used for diversity-aware operators.

EUCLIDEAN_DISTANCE = 'Euclidean distance'
HAMMING_DISTANCE = 'Manhattan distance'
class SamplingMethodType(*values)[source]

Method used to generate the initial population.

UNIFORM_RANDOM = 'Uniform random'
LATIN_HYPERCUBE = 'Latin Hypercube'
class Mutation(name, parameters)[source]

A mutation operator: a MutationType plus its operator-specific parameters.

name: MutationType
parameters: dict[str, Any]
classmethod mutation(name=None, variation_range=None)[source]

Construct a Mutation with default operator parameters.

Parameters:
Return type:

Mutation

class Selection(name, parameters)[source]

A selection operator: a SelectionType plus its operator-specific parameters.

name: SelectionType
parameters: dict[str, Any]
classmethod selection(name=None, pool_size=None)[source]

Construct a Selection with default operator parameters.

Parameters:
Return type:

Selection

class GeneticAlgorithm(log_info=False, evaluations=100000, max_evaluations_without_improvement=10000, max_time_without_improvement=300, min_improvement=1e-06, max_restart_count=0, prng_seed=None, time_limit=60, mutation_rate=(1 / NUM_VARIABLES), recombinator_rate=0.8, population_size=NUM_VARIABLES, elitism=1, mutation=<factory>, recombinator=RecombinatorType.UNIFORM_CROSSOVER, n_point_cuts=None, selection=<factory>, comparator=None, tiebreaker=False, distance_metric=DistanceMetricType.EUCLIDEAN_DISTANCE, sample_count=0, sampling_method=SamplingMethodType.UNIFORM_RANDOM)[source]

Population-based evolutionary algorithm.

mutation_rate: float | NumericExpression | Parameter | Calculation = (1 / NUM_VARIABLES)

Probability of mutating an offspring (0–1).

recombinator_rate: float | NumericExpression | Parameter | Calculation = 0.8

Probability of applying crossover (0–1).

population_size: int | NumericExpression | Parameter | Calculation = NUM_VARIABLES

Number of individuals in the population.

elitism: int | NumericExpression | Parameter | Calculation = 1

Number of top individuals copied unchanged into the next generation.

mutation: Mutation

Mutation operator.

recombinator: RecombinatorType = 'Uniform crossover'

Crossover strategy.

n_point_cuts: int | NumericExpression | Parameter | Calculation | None = None

Number of crossover points; auto-set for N-point crossover.

selection: Selection

Selection operator.

comparator: ComparatorType | None = None

Optional solution comparator for multi-objective runs.

tiebreaker: bool = False

Apply a diversity-aware tiebreaker on equal objective values.

distance_metric: DistanceMetricType = 'Euclidean distance'

Distance metric for diversity-aware operators.

sample_count: int | NumericExpression | Parameter | Calculation = 0

Initial-sample count for sampling-based seeding.

sampling_method: SamplingMethodType = 'Uniform random'

Initial-population sampling method.

property key: str

The algorithm key emitted as algorithmKey in the serialised output.