Location: PHPKode > scripts > Class: GA > gaExample2.php
<?
require_once('ga.php');
class Human {
	var $strength;
	var $dexterity;
	var $resistance;
	var $intelligence;
	
	function Human($strength=0,$dexterity=0,$resistance=0,$intelligence=0) {
		$this->strength = $strength;
		$this->dexterity = $dexterity;
		$this->resistance = $resistance;
		$this->intelligence = $intelligence;
	}
}

function debug($x) {
	echo "<pre style='border: 1px solid black'>";
	print_r($x);
	echo '</pre>';
}

//This will be the mutation function. Just increments the property.
function inc($x) {
	return $x+1;
}
//This will be the crossover function. Is just the average of all properties.
function avg($a,$b) {
	return round(($a+$b)/2);
}
//This will be the fitness function. Is just the sum of all properties.
function total($obj) {
	return $obj->strength + $obj->dexterity + $obj->resistance + $obj->intelligence;
}

$adam = new Human(4,2,3,1);
$eve = new Human(1,4,2,3);
$ga = new GA();
$ga->population = array($adam,$eve);
debug($ga->population);
$ga->fitness_function = 'total';	//Uses the 'total' function as fitness function
$ga->num_couples = 1;				//4 couples per generation (when possible)
$ga->death_rate = 0;				//No kills per generation
$ga->generations = 100;				//Executes 100 generations
$ga->crossover_functions = 'avg';   //Uses the 'avg' function as crossover function
$ga->mutation_function = 'inc';		//Uses the 'inc' function as mutation function
$ga->mutation_rate = 10;			//10% mutation rate
$ga->evolve();						//Run
debug($ga->population);
debug(GA::select($ga->population,'total',1)); //The best
?>
Return current item: Class: GA