<?php 
 
/* 
    Genetic Algorithm without evolution goal? 
*/ 
 
require __DIR__ . '/../vendor/autoload.php'; // composer autoload 
 
class CustomGeneticAlgorithm extends \SimpleGeneticAlgorithm\SimpleGeneticAlgorithm{ 
     
    // make it blank 
    public function fitness_function(){ } 
     
    // just random selection 
    public function selection(){ 
        foreach($this->population as $k => $v){ 
            if(rand(0, 1) == 0){ 
                unset($this->population[$k]); 
            } 
        } 
    } 
     
    // just leave crossover to parents 
     
    // make randrom mutation on 1 chromosome 
    public function mutation(){ 
        $chars = str_split($this->options['seed']); 
        foreach($this->population as $k => $v){ 
            $tmp = str_split($v['chromosome']); 
            $key = array_rand($tmp); 
             
            $tmp[$key] = $chars[rand(0, count($chars) - 1)]; 
            $this->population[$k]['chromosome'] = implode($tmp); 
        } 
    } 
} 
 
$ga = new CustomGeneticAlgorithm(array( 
    'seed' => 'abcdefghijklmnopqrstuvwxyz', 
    'goal' => 'aa', 
     
    'delay' => 10, // ms, if debug is false, then delay forced to 0 
    'debug' => true, 
)); 
 
$ga->run(); // hmm hardly find a goal 
 
 |