07-02-2009, 01:30 AM
Code PHP :
<?php
//Définition des ADN
$ADN_PERE = array
(
'Agressivite' => 0.87654,
'Couardise' => 0.12345,
'Curiosite' => 0.54321,
'Cupidite' => 0.97531
);
$ADN_MERE = array
(
'Agressivite' => 0.54321,
'Couardise' => 0.97531,
'Curiosite' => 0.87654,
'Cupidite' => 0.12345
);
//Définition des Statistiques
$STAT_PERE = array
(
'Tue' => 52,
'Fuite' => 5,
'Xp' => 763,
'Or' => 89
);
$STAT_PERE1 = array
(
'Tue' => 55,
'Fuite' => 0,
'Xp' => 7630,
'Or' => 0
);
$STAT_MERE = array
(
'Tue' => 23,
'Fuite' => 23,
'Xp' => 346,
'Or' => 47
);
$FREQUENTATION_MILIEU = array
(
1 => 73,
2 => 68,
);
Function Score ($STAT, $MILIEU)
{
global $FREQUENTATION_MILIEU;
$Score = ($STAT['Tue'] * 2 / $FREQUENTATION_MILIEU[$MILIEU] + $STAT['Xp'] / 2 + $STAT['Or']) / ($STAT['Fuite'] + 1);
return $Score;
}
//Sans Crossing-Over
Function Accouplement_Simple ($ADN_MERE, $STAT_MERE, $ADN_PERE, $STAT_PERE, $MILIEU)
{
$SCORE_MERE = Score($STAT_MERE, $MILIEU);
$SCORE_PERE = Score($STAT_PERE, $MILIEU);
$PARENT_DOMINATEUR = ($SCORE_MERE >= $SCORE_PERE) ? $SCORE_MERE : $SCORE_PERE;
$PARENT_DOMINER = ($SCORE_PERE <= $SCORE_MERE) ? $SCORE_PERE : $SCORE_MERE;
$POURCENTAGE = 1 - $PARENT_DOMINER / $PARENT_DOMINATEUR;
$PARENT_DOMINATEUR = ($SCORE_MERE >= $SCORE_PERE) ? $ADN_MERE : $ADN_PERE;
$PARENT_DOMINER = ($SCORE_PERE <= $SCORE_MERE) ? $ADN_PERE : $ADN_MERE;
$ADN_BEBE['Agressivite'] = ($PARENT_DOMINATEUR['Agressivite'] - $PARENT_DOMINER['Agressivite']) * $POURCENTAGE + $PARENT_DOMINER['Agressivite'];
$ADN_BEBE['Couardise'] = ($PARENT_DOMINATEUR['Couardise'] - $PARENT_DOMINER['Couardise']) * $POURCENTAGE + $PARENT_DOMINER['Couardise'];
$ADN_BEBE['Curiosite'] = ($PARENT_DOMINATEUR['Curiosite'] - $PARENT_DOMINER['Curiosite']) * $POURCENTAGE + $PARENT_DOMINER['Curiosite'];
$ADN_BEBE['Cupidite'] = ($PARENT_DOMINATEUR['Cupidite'] - $PARENT_DOMINER['Cupidite']) * $POURCENTAGE + $PARENT_DOMINER['Cupidite'];
return $ADN_BEBE;
}
print '<pre>';
print_r (Accouplement_Simple ($ADN_MERE, $STAT_MERE, $ADN_PERE, $STAT_PERE, 1));
print_r (Accouplement_Simple ($ADN_MERE, $STAT_MERE, $ADN_PERE, $STAT_PERE1, 2));
print '</pre>';
?>
J'ai codé une sorte d'algorithme génétique, sauf que je n'ai pas pris en compte les crossing-over et ce genre de fantaisie.
Dans cet exemple je ne l'applique qu'a trois individus (j'ai changé que les stat) pour un milieu donné. Mais il faut l'appliquer à toutes une population.
Pour 100 Monstre faut l'appliquer au minimum 100 fois pour retrouver 100 nouveaux monstres différents. Donc ca demande de gros calcul c'est le genre de truc qu'on ne fait que pdt les heures creuse genre la nuit.
J'ai mis ici une formule du succès quelque peu hasardeuse.
Si vous ne comprenez pas quelque chose n'hésitez pas à demander.
Et si cela vous intéresse je peux faire un algo décisionnel.
Cordialement Melimelo