Автор |
Сообщение |
Slav |
Добавлено: Пт Дек 11, 2020 1:58 pm Заголовок сообщения: |
|
стаж) |
|
|
Rasty |
Добавлено: Пт Дек 11, 2020 1:47 pm Заголовок сообщения: |
|
Хз, где ты там свастику увидел.
Это нульмерные клеточные автоматы. |
|
|
Slav |
Добавлено: Пт Дек 11, 2020 12:49 pm Заголовок сообщения: |
|
Cвастика? Ща у кого то подгорит))) |
|
|
Rasty |
Добавлено: Пт Дек 11, 2020 12:17 pm Заголовок сообщения: |
|
Это охуенно!
|
|
|
Pictor |
Добавлено: Вт Апр 19, 2016 2:07 pm Заголовок сообщения: |
|
фрактальный треугольник? |
|
|
Rasty |
Добавлено: Вт Апр 19, 2016 1:16 pm Заголовок сообщения: |
|
|
|
|
Rasty |
Добавлено: Пн Апр 18, 2016 9:24 pm Заголовок сообщения: |
|
|
|
|
Rasty |
Добавлено: Чт Апр 14, 2016 7:12 pm Заголовок сообщения: |
|
|
|
|
Rasty |
Добавлено: Чт Апр 14, 2016 6:38 pm Заголовок сообщения: |
|
3D:
|
|
|
Rasty |
|
|
Rasty |
Добавлено: Пт Фев 26, 2016 8:17 pm Заголовок сообщения: |
|
Серверная часть готова. Теперь осталось их вместе соединить и можно тестировать. |
|
|
Rasty |
Добавлено: Пт Фев 26, 2016 7:55 pm Заголовок сообщения: |
|
Чего-то де-то наперепутал. Количество генов только увеличивается. |
|
|
Rasty |
Добавлено: Пт Фев 26, 2016 6:50 pm Заголовок сообщения: |
|
Последний for переписал.
Код: | for($i=0;$i<$populationSize;$i++){
unset($population[$i]['fitness']);
$mutate=rand(0, 19);
if($mutate==0){
$key=rand(0, count($population[$i])-1);
$population[$i][$key][0]=rand(-32766, 1)*M_PI/32767;
$population[$i][$key][1]=rand(-32767, 32767)/32767;
}
if($mutate==1){
$add=rand(0,1);
if($add==0){
$ploidy[0]=rand(-32766, 1)*M_PI/32767;
$ploidy[1]=rand(-32767, 32767)/32767;
array_push($population[$i], $ploidy);
}else{
if(count($population[$i])>2) array_pop($population[$i]);
}
}
$population[$i]['fitness']=0;
} |
Вот тут самая вкусняфка :3
В свежесозданной популяции каждая особь может мутировать с 5% вероятностью
Код: | $mutate=rand(0, 19); |
Причем мутации могут быть двух видов:
1) половина возможных мутаций - изменение случайно выбранной пары генов (угол-коэффициент) на случайное значение.
2) другая половина мутаций - добавление новой пары генов (или же наоборот - стирание пары генов) |
|
|
Rasty |
Добавлено: Пт Фев 26, 2016 6:08 pm Заголовок сообщения: |
|
Как-то так
Код: | $population=population($populationSize);
$by = 'fitness';
usort($population, function($first, $second) use($by){
if ($first[$by]>$second[$by]) {return 1;}
elseif ($first[$by]<$second[$by]) {return -1;}
return 0;
});
$hsize=(int)$populationSize/2;
$hhsize=(int)$populationSize/4;
$bestpopulation=array_slice($population, $hsize);
shuffle($bestpopulation);
for($i=0; $i<$hhsize; $i++){
$i1=$i;
$i2=$i+$hhsize;
$j=0;
foreach($bestpopulation[$i1] as $key=>$value){
if($key!="fitness"){
if(rand(0,1)==1){
$population[$i1][$j]=$value;
if(isset($bestpopulation[$i2][$j])) $population[$i2][$j]=$bestpopulation[$i2][$j];
}else{
$population[$i2][$j]=$value;
if(isset($bestpopulation[$i2][$j])) $population[$i1][$j]=$bestpopulation[$i2][$j];
}
}
$j++;
}
}
for($i=0;$i<$populationSize;$i++){
unset($population[$i]['fitness']);
$population[$i]['fitness']=0;
$mutate=rand(0, 9);
if($mutate==0){
$key=rand(0, count($population[$i])-1);
$population[$i][$key][0]=rand(-32766, 1)*M_PI/32767;
$population[$i][$key][1]=rand(-32767, 32767)/32767;
}
} |
|
|
|
Rasty |
Добавлено: Пт Фев 26, 2016 4:49 pm Заголовок сообщения: |
|
Хуле
Код: | $hsize=(int)$populationSize/2;
$hhsize=(int)$populationSize/4;
$bestpopulation=array_slice($population, $hsize);
shuffle($bestpopulation);
for($i=0; $i<$hhsize; $i++){
$i1=$i;
$i2=$i+$hhsize;
$predok1=$hsize-1-$i;
$predok2=$hsize-1-$i*2;
foreach($$bestpopulation[$predok1] as $key=>$value){
if($key!="fitness"){
$population[$i1][$key]=$value;
$population[$i2][$key]=$bestpopulation[$predok2][$key];
}
}
} |
Временное решение. Количество генов буду делать динамическим. |
|
|