<?php 
 
/* 
    this example show how we can override one or more method to make more suitable genetic algorithm 
*/ 
 
require __DIR__ . '/../vendor/autoload.php'; // composer autoload 
 
class CustomGeneticAlgorithm extends \SimpleGeneticAlgorithm\SimpleGeneticAlgorithm{ 
     
    public function crossover(){ 
        $new_population = array(); 
        for($i = 0; $i < $this->options['population']; $i++){ 
            // get random parents 
            $a = $this->population[array_rand($this->population, 1)]['chromosome']; 
            $b = $this->population[array_rand($this->population, 1)]['chromosome']; 
             
             
            // make separator from a & b 
            $sp = rand(0, strlen($a) - 1); 
             
            // get some part from a, and some part from b 
            $child = substr($a, 0, $sp) . substr($b, $sp, strlen($b)); 
             
            $new_population[] = array( 
                'chromosome' => $child, 
                'fitness' => 0, 
            ); 
        } 
         
        $this->population = $new_population; 
    } 
     
} 
 
$ga = new CustomGeneticAlgorithm(array( 
    'mutation' => 25, // 25% 
    'goal' => 'Astari Ghaniarti', 
     
    'delay' => 50, // ms, if debug is false, then delay forced to 0 
    'debug' => true, 
)); 
 
$ga->run(); 
 
 |