GeneticAlgorithmOptimizer#

class empulse.optimizers.GeneticAlgorithmOptimizer(max_iter=1000, tolerance=0.0001, patience=250, bounds=(-5, 5), population_size=None, crossover_rate=0.8, mutation_rate=0.1, elitism=0.05, random_state=None, n_jobs=1, verbose=False)[source]#

Real-coded Genetic Algorithm (RGA) optimizer for logit models.

Uses Generation under the hood with patience-based early stopping. This is the default optimizer for ProfLogitClassifier.

The objective function is evaluated as a scalar (via logit_loss) so that the GA can rank individuals without computing their gradients.

Parameters:
max_iterint, default=1000

Maximum number of GA generations.

tolerancefloat, default=1e-4

Relative improvement below which the counter towards patience is incremented.

patienceint, default=250

Number of consecutive generations with improvement < tolerance before stopping.

boundstuple of (float, float), default=(-5, 5)

Symmetric lower and upper bounds applied to every coefficient.

population_sizeint or None, default=None

Number of individuals. None uses Generation’s default of max(10, 10 * n_features).

crossover_ratefloat, default=0.8

Crossover probability.

mutation_ratefloat, default=0.1

Mutation probability.

elitismfloat, default=0.05

Fraction of best individuals carried over unchanged each generation.

random_stateint or None, default=None

Seed for reproducibility.

n_jobsint, default=1

Number of parallel jobs for fitness evaluation.

verbosebool, default=False

Print generation-level progress.

Examples

from empulse.models import ProfLogitClassifier
from empulse.optimizers import GeneticAlgorithmOptimizer

rga = GeneticAlgorithmOptimizer(max_iter=10, bounds=(-10, 10), population_size=30)
model = ProfLogitClassifier(optimizer=rga)
__call__(objective, X, **kwargs)[source]#

Run the genetic algorithm.