leb5teR
Newbie | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору #---------- ЖИВУЧЕСТЬ ----------# function FCalcFitness($Gene) { global $Result,$MaxPop; for($i=0;$i<$MaxPop;$i++) { $Fitness[$i]=abs(($Gene[$i]["coeff_a"]+2*$Gene[$i]["coeff_b"]+3*$Gene[$i]["coeff_c"]+4*$Gene[$i]["coeff_a"])-$Result); print $Fitness[$i]."<BR>"; $MiddleFitness=$MiddleFitness+$Fitness[$i]; } $MiddleFitness=$MiddleFitness/$MaxPop; print "<BR>Средняя приспособленность: ".$MiddleFitness; return $Fitness; } #---------- Стать мамо или папо ----------# # # не используется # function FCalcLikelihood($Fitness) { global $Result,$MaxPop; for($i=0;$i<$MaxPop;$i++) { $InvSum[$i]=(1/$Fitness[$i]); $FullSum=$FullSum+$InvSum[$i]; } $LikelihoodSum=0; for($i=0;$i<$MaxPop;$i++) { $Population[$i]=array("Likelihood"=>($InvSum[$i]/$FullSum)*100); $LikelihoodSum=$LikelihoodSum+$Population[$i]["Likelihood"]; print $Population[$i]["Likelihood"]."%<BR>"; } print "<BR>Сумма=".$LikelihoodSum; } #---------- Пары хромосом ----------# function FSelectGenePairs($Gene) { global $Result,$MaxPop; print "Сочетания пар хромосом (папо и мамо):<BR>"; echo "<TABLE border=0 cellspacing=0 cellpadding=0>"; for($i=0;$i<$MaxPop;$i++) { echo "<TR>"; for($j=0;$j<2;$j++) { $GenePair[$i][$j]=rand(0,$MaxPop-1); echo "<TD align=\"center\">".$GenePair[$i][$j]; } } echo "</TABLE>"; print "<BR>Пары хромосом (папо и мамо):<BR>"; echo "<TABLE border=0 cellspacing=0 cellpadding=0>"; echo "<TR><TD align=\"center\" colspan=4>МАМО<TD width=30px><TD align=\"center\" colspan=4>ПАПО"; for($i=0;$i<$MaxPop;$i++) { echo "<TR>"; for($j=0;$j<2;$j++) { echo "<TD align=\"center\">".$Gene[$GenePair[$i][$j]]["coeff_a"]; echo "<TD align=\"center\">".$Gene[$GenePair[$i][$j]]["coeff_b"]; echo "<TD align=\"center\">".$Gene[$GenePair[$i][$j]]["coeff_c"]; echo "<TD align=\"center\">".$Gene[$GenePair[$i][$j]]["coeff_d"]; echo "<TD>"; } } echo "</TABLE>"; return $GenePair; } #---------- SEX ----------# function FChildBirthday($GenePair,$Gene) { global $Result,$MaxPop; print "Даунито-хромосом:<BR>"; echo "<TABLE border=0 cellspacing=0 cellpadding=0>"; for($i=0;$i<$MaxPop;$i++) { $ChildGene[$i][0]=$Gene[$GenePair[$i][0]]["coeff_a"]; $ChildGene[$i][1]=$Gene[$GenePair[$i][0]]["coeff_b"]; $ChildGene[$i][2]=$Gene[$GenePair[$i][1]]["coeff_c"]; $ChildGene[$i][3]=$Gene[$GenePair[$i][1]]["coeff_d"]; echo "<TR>"; echo "<TD align=\"center\">".$ChildGene[$i][0]; echo "<TD align=\"center\">".$ChildGene[$i][1]; echo "<TD align=\"center\">".$ChildGene[$i][2]; echo "<TD align=\"center\">".$ChildGene[$i][3]; } echo "</TABLE>"; return $ChildGene; } #---------- ЖИВУЧЕСТЬ ДЕТИШКОВ ----------# function FChildFitness($ChildGene) { global $Result,$MaxPop; print "Выживаемость потомства:<BR>"; $MiddleFitness=0; for($i=0;$i<$MaxPop;$i++) { $DaunitoHromosome[$i]=abs(($ChildGene[$i][0]+2*$ChildGene[$i][1]+3*$ChildGene[$i][2]+4*$ChildGene[$i][3])-$Result); $MiddleFitness=$MiddleFitness+$DaunitoHromosome[$i]; print $DaunitoHromosome[$i]."<BR>"; } $MiddleFitness=$MiddleFitness/$MaxPop; $MinFitness=min($DaunitoHromosome); print "<BR>Наименьшее значение: ".$MinFitness."<BR>"; print "<BR>Средняя выживаемость популяции: ".$MiddleFitness."<BR>"; for($i=0;$i<$MaxPop;$i++) { if($DaunitoHromosome[$i]==0) { print "Решение найдено: <TABLE border=0 cellspacing=0 cellpadding=0><TR>"; print "<TD align=\"center\">".$ChildGene[$i][0]; print "<TD align=\"center\">".$ChildGene[$i][1]; print "<TD align=\"center\">".$ChildGene[$i][2]; print "<TD align=\"center\">".$ChildGene[$i][3]."</TABLE><BR>"; } } } |