<?php
function calc($o)
{
$wyniki = array();
foreach($o as $x)
{
$wyniki[] = ($x*$x) - (2*$x) + 2;
}
return $wyniki;
}
function proc($wyniki, $suma)
{
$proc = array();
foreach($wyniki as $y)
{
$proc[] = $y / $suma * 100;
}
return $proc;
}
function krzyzowanie($para)
{
$dzieci = array();
$start = rand(1,4);
$ile = 5 - $start;
$dzieci[] = substr_replace($para[0],substr($para[1],-$ile),$start,$ile);
$dzieci[] = substr_replace($para[1],substr($para[0],-$ile),$start,$ile);
return $dzieci;
}
function ruletka($ruletka, $l, $nr)
{
$i=0;
do{
$ruletka[] = $obin[$nr];
$i++;
}while ($i>=$l);
return $ruletka;
}
$o = array(3,8,14,19,24,29);
//shuffle($o);
$ob = array();
$obin = array();
foreach($o as $b)
{
$ob[] = decbin($b);
}
foreach($ob as $c)
{
$obin[] = str_pad($c, 5, "0", STR_PAD_LEFT);
}
$wyniki = calc($o); // wartosci osobnikow po przeliczeniu przez funkcje
$suma = array_sum($wyniki); // suma^
$procent = proc($wyniki, $suma); // zmienna okreslajaca prawdopodobienstwo wylosowania osobnika
$zaokraglone = array();
foreach($procent as $k)
{
$k = $k*100;
$zaokraglone[] = intval($k);
}
$ruletka = array(); //tablica z 10000 elementow, z niej losowane sa pary rodzicow
$ruletka = ruletka($ruletka, $zaokragone[0], 0);
$ruletka = ruletka($ruletka, $zaokragone[1], 1);
$ruletka = ruletka($ruletka, $zaokragone[2], 2);
$ruletka = ruletka($ruletka, $zaokragone[3], 3);
$ruletka = ruletka($ruletka, $zaokragone[4], 4);
$ruletka = ruletka($ruletka, $zaokragone[5], 5);
$para1 = array();
$para3 = array();
$para3 = array();
$para1[] = array_rand($ruletka);
$para1[] = array_rand($ruletka);
while ($para1[0] == $para1[1])
{
$para1[1] = array_rand($ruletka);
}
$para2[] = array_rand($ruletka);
$para2[] = array_rand($ruletka);
while ($para2[0] == $para2[1])
{
$para2[1] = array_rand($ruletka);
}
$para3[] = array_rand($ruletka);
$para3[] = array_rand($ruletka);
while ($para3[0] == $para3[1])
{
$para3[1] = array_rand($ruletka);
}
$dzieci1 = krzyzowanie($para1);
$dzieci2 = krzyzowanie($para2);
$dzieci3 = krzyzowanie($para3);
//echo "Osobniki: ";
//print_r($o);
//echo "\nWyniki funkcji dopasowania: ";
//print_r($wyniki);
//echo $suma;
//echo "\nProcentowo: ";
//print_r($procent);
//print_r($obin);
//echo "\nLosowo dobrane pary osobnikow - rodzice: ";
//print_r($pary);
//echo "\n\n---------------------------------------------------------";
//echo "\nDzieci po operacji krzyzowania: ";
//print_r($dzieci1);
//print_r($dzieci2);
//print_r($dzieci3);
$dzieci_dec[] = bindec($dzieci1[0]);
$dzieci_dec[] = bindec($dzieci1[1]);
$dzieci_dec[] = bindec($dzieci2[0]);
$dzieci_dec[] = bindec($dzieci2[1]);
$dzieci_dec[] = bindec($dzieci3[0]);
$dzieci_dec[] = bindec($dzieci3[1]);
//print_r($dzieci_dec);
$wyniki_d = calc($dzieci_dec);
$suma_d = array_sum($wyniki_d);
$procent_d = proc($wyniki_d, $suma_d);
//print_r($wyniki_d);
//echo $suma_d;
//print_r($procent_d);
?>
preferences:
31.92 ms | 402 KiB | 5 Q