Example #1
0
 function buildChilds()
 {
     $indiv = new individual();
     for ($i = 1; $i <= $this->population; $i++) {
         $g_value = $this->mutate($this->arr_individual[$i]->gene_value);
         $f_value = $this->fitness($g_value);
         $indiv->set($g_value, $f_value, $this->date);
         $this->arr_offspring[$i] = $indiv;
         $this->date++;
     }
     $this->currentGeneration++;
 }
Example #2
0
 private static function crossover($indiv1, $indiv2)
 {
     $newSol = new individual();
     //create a offspring
     // Loop through genes
     for ($i = 0; $i < $indiv1->size(); $i++) {
         // Crossover at which point 0..1 , .50 50% of time
         if (algorithm::random() <= algorithm::$uniformRate) {
             $newSol->setGene($i, $indiv1->getGene($i));
         } else {
             $newSol->setGene($i, $indiv2->getGene($i));
         }
     }
     return $newSol;
 }
Example #3
0
 function __construct($populationSize, $initialise = false)
 {
     if (!isset($populationSize) || $populationSize == 0) {
         die("Must specify a populationsize > 0");
     }
     for ($i = 0; $i < $populationSize; $i++) {
         $this->people[$i] = new individual();
     }
     //instantiate a new object
     // Initialise population
     if ($initialise) {
         // Loop and create individuals
         for ($i = 0; $i < count($this->people); $i++) {
             $new_person = new individual();
             $new_person->generateIndividual(count(fitnesscalc::$solution));
             $this->saveIndividual($i, $new_person);
         }
     }
 }