Example #1
0
 public function __construct($chromosome, Element $element = null)
 {
     if (is_array($chromosome)) {
         $this->chromosome = $chromosome;
     } else {
         $this->chromosome = new SplFixedArray($chromosome);
         for ($gene = 0; $gene < $chromosome; $gene++) {
             if (0.5 < Random::generate()) {
                 $this->setGene($gene, 1);
             } else {
                 $this->setGene($gene, 0);
             }
         }
     }
 }
Example #2
0
 public function mutate(Population $population)
 {
     $newPopulation = new Population($population->size());
     for ($populationIndex = 0; $populationIndex < $population->size(); $populationIndex++) {
         $individual = $population->getFittestIndividual($populationIndex);
         for ($geneIndex = 0; $geneIndex < $individual->getChromosomeLength(); $geneIndex++) {
             if ($populationIndex >= $this->elitismCount) {
                 if ($this->mutationRate > Random::generate()) {
                     $newGene = 1;
                     if ($individual->getGene($geneIndex) == 1) {
                         $newGene = 0;
                     }
                     $individual->setGene($geneIndex, $newGene);
                 }
             }
         }
         $newPopulation->setIndividual($populationIndex, $individual);
     }
     return $newPopulation;
 }
Example #3
0
$element->addProperty(new Property(6, "font-weight", ["normal", "lighter", "bold"]));
$element->addProperty(new Property(7, "letter-spacing", ["-3px", "-2px", "-1px", "0px", "1px", "2px", "3px"]));
$element->addProperty(new Property(7, "background-color", ["#1abc9c", "#16a085", "#f1c40f", "#f39c12", "#40d47e", "#27ae60", "#e67e22", "#d35400", "#3498db", "#2980b9", "#e74c3c", "#c0392b", "#9b59b6", "#8e44ad", "#ecf0f1", "#bdc3c7", "#34495e", "#2c3e50", "#95a5a6", "#7f8c8d"]));
$ga = new GeneticAlgorithm(5, 0.9, 0.1, 1);
$population = $ga->initPopulation($element);
$individuals = $population->getIndividuals();
//Printing Style
echo "<style>";
foreach ($individuals as $id => $individual) {
    echo "\n" . $ga->decode($id + 1, $individual, $element);
}
echo "</style>";
//Printing headers
foreach ($individuals as $id => $individual) {
    $id++;
    echo "Encoded: " . $individual . "<br>";
    echo "Decoded: <h1 id='individual{$id}'>This is a Title</h1>";
    echo '<input type="text" class="input_range" id="range_' . $id . '" form="form1" name="individual_' . $id . '" value="" />';
}
//TEMP:: Setting random fitness
foreach ($population->getIndividuals() as &$i) {
    $i->setFitness(Random::generate());
}
$ga->evalPopulation($population);
echo $population->getPopulationFitness() . "<br>";
$_SESSION['population'] = serialize($population);
?>


<?php 
include_once "includes/masterpage/footer.php ";
Example #4
0
<?php

require 'vendor/autoload.php';
require 'Random.php';
// Ukljuci debug
// ini_set('display_errors',1);
// ini_set('display_startup_errors',1);
// error_reporting(-1);
use sweelix\guid\Guid;
use Slim\Slim;
use SlimJson\Middleware;
$app = new Slim();
// Dodaj JSON midleware globalno
$app->add(new Middleware(array('json.status' => true, 'json.override_error' => true, 'json.override_notfound' => true)));
// Povezi se sa bazom
$pdo = new PDO("sqlite:db.sqlite");
$fpdo = new FluentPDO($pdo);
// API za generisanje slucajnog broja
$app->get('/match(/:id)', function ($id = '%NO-DATA%') use($app, $fpdo) {
    if ($id == '%NO-DATA%') {
        $id = Guid::v4();
    }
    $match = $fpdo->from('matches')->where('id', $id)->fetch();
    if (!$match) {
        $data = ['id' => $id, 'player1_id' => NULL, 'player2_id' => NULL, 'data' => implode(';', Random::generate($id, 500, 0, 100))];
        $query = $fpdo->insertInto('matches', $data)->execute();
        $match = $data;
    }
    $app->render(200, $match);
});
$app->run();
 public function mutateUniform(Population $population, Element $element)
 {
     $newPopulation = new Population($population->size());
     for ($populationIndex = 0; $populationIndex < $population->size(); $populationIndex++) {
         $individual = $population->getFittestIndividual($populationIndex);
         $randomIndividual = new Individual($element);
         for ($geneIndex = 0; $geneIndex < $individual->getChromosomeLength(); $geneIndex++) {
             if ($populationIndex >= $this->elitismCount) {
                 if ($this->mutationRate > Random::generate()) {
                     $individual->setGene($geneIndex, $randomIndividual->getGene($geneIndex));
                 }
             }
         }
         $newPopulation->setIndividual($populationIndex, $individual);
     }
     return $newPopulation;
 }