Page 1 sur 1

recherche de conseil pour faire des calculs complexe

Posté : 23 nov. 2011, 11:30
par juliette
salut a tous, je cherche des infos pour mettre en place un système de calcule de consanguinité:
http://www.agorat.org/articles/M%C3%A9t ... init%C3%A9

je ne vois absolument pas comment faire, je cherche des explications pour pouvoir commencer a réfléchir...
merci d'avance

Re: recherche de conseil pour faire des calculs complexe

Posté : 23 nov. 2011, 15:18
par sirakawa
J'ai jeté un coup d'oeil aux formules. Ça risque de ne pas être trivial.
Il me semble qu'il faudrait partir autour d'une boucle:
F = somme pour i variant de 1 à n des C(i)
donnerait:

Code : Tout sélectionner

function calcule_C($i) { ici la formule; mais je ne suis pas bien sûr; risque de $P et $M négatifs? } $F=0; $P = un entier; $M = un entier; for ($i = 1; $i <= n; $i++) { $F = calcule_C($i, $P--, $M--); }

Re: recherche de conseil pour faire des calculs complexe

Posté : 23 nov. 2011, 19:18
par juliette
est ce que c'est une question que tu me pose ?
risque de $P et $M négatifs?
si c'est la cas, alors oui, il y a un risque que certain chien soit manquant quand ou est en bout de généalogie, vers les plus anciens...

au cas ou, un autre lien: http://www.poitevin.org/memoire/molassiercoeff.pdf

Re: recherche de conseil pour faire des calculs complexe

Posté : 23 nov. 2011, 19:47
par sirakawa
Je réfléchissais et je me demandais si on risquait d'avoir des valeurs négatives pour $P et $M, parce que, si je suis certain de la boucle principale, je n'ai pas d'idée précise sur la fonction de calcul de C...
Je pense qu'il faudrait stocker quelque part la généalogie des deux individus dont on veut calculer l'indice....
soit en PHP objet, soit en BDD
Ce problème suppose avant de s'aventurer à programmer qu'on définisse clairement et efficacement la façon dont les données sont stockées.
INDIVIDUS:
identificateur_unique: entier automatique
sexe: caractère
generation: entier
CONJOINTS:
identificateur_male: entier //pris dans la table individus
identificateur_femelle: entier //pris dans la table individus
premier_descendant: entier //pris dans la table individus
FRERES_SOEURS
premier_descendant: entier // identique à celui de CONJOINTS
frere_ou_soeur: entier // pris dans individus
et s'assurer qu'on a ainsi assez d'informations pour traiter le problème, savoir que à partir de cette BDD on pourrait tracer l'arbre généalogique...
Je rappelle que je ne connais pas la solution, je réfléchis à temps perdu...

Re: recherche de conseil pour faire des calculs complexe

Posté : 23 nov. 2011, 20:04
par juliette
j’ai déjà un système d'arbre il fonctionne parfaitement: ATTENTION: je n'ai pas dit il est codé au top, mais ça marche, j'affiche le chien principale, les parents, les g-parents et ar-g-parents, 15 individu au total...

un autre système existe, voila 2 capture d’écran des résultats si ça t'aide a réfléchir...
le pourcentage
http://www.servimg.com/image_preview.ph ... u=13059060
les generations
http://www.servimg.com/image_preview.ph ... u=13059060

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 00:24
par juliette
a première vu, tes reflection ne vont pas aller avec le système:

chien_pere est père d'un chien_xxx est peut aussi etre le fils d'un chien_grand_pere, je pense qu'il n'est pas possible d'enregistrer en bdd la généalogie de ce chien, elle doit se construire dynamiquement si non ça sera ingérable (enfin je pense ???)...

comment marche le système:
chaque chien dans la réalité humaine (pas virtuel) a ce qu'on appel un pedigree qui contient sa descendance sur 3 génération...
sur ce pedigree sont noté tout les N° de lof (n° d’immatriculation) de tout les chiens
et lors de l'enregistrement je demande a l'utilisateur d'enregistrer les 2 N° de lof de ces 2 parents comme identifiant (ces N° sont unique et ressemble a ça: 58942/1578 ou 25789)

quand un visiteur recherche un chien, une boucle fait une recherche sur les lof de ces 2 parents pour voir si il existe...
si ils existe une autre boucle fait le même travail sur les 2 parents pour trouver les 4 N° de lof des grands parents et encore une boucles sur les 4 grands parents pour trouver les 8 arrière grands père...

ça c'est pour t'expliquer mais en réalité, c'est une requête, avec une jointure pour chaque individu...

de cette façon, des qu'un chien est ajouté, il est automatiquement rattacher a ses descendent...
je connais 2 base, une contient 150 000 chiens et l'autre beaucoup plus, je pense donc qu'il faut une solution automatique...

un autre truc:
je ne veux pas forcement calculer le taux sur un chien affiché, mais plutôt faire une page de simulation...
un visiteur compte faire un mariage, il entre le nom du male et de la femelle et le système affiche le pedigree simulé et lui donne le taux...
dans ce cas je pense que le calcul n'est a applique que sur 2 demi pedigree [(Male + Femlle):2] ???

si le taux marche partout, c'est bien aussi (très bien même)

si tu as des questions, vas-y et je t'explique

merci pour ton aide, je ne me représente pas du tout la façon de faire.

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 00:31
par juliette
autre chose, que je précise, le N° du lof n'est en aucun cas l'id du chien, la table est en auto incrément...

il y a la requête des jointures qui affiche le lof mais j'ai aussi sur une autre table qui contient des infos: ces infos sont pour tout les chien de l'arbre sauf le principale et ces infos sont affiché au moyen de 14 autres requête, une pour chacun des individu (sans le chien initial)

il est peut être possible de créer un identifiants a chacune des ces requête pour connaitre l'emplacement de chaque individu ???

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 11:56
par sirakawa
Donc :
si je te dis que le mâle est Médor du Caniveau du Coin de la Rue, tu es capable d'identifier tous ses ancêtres sur le nombre de générations dont tu as besoin?
et idem pour la femelle Orphée du Sanitas de la Tour d'Aschère?

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 12:13
par juliette
oui si ces chien sont enregistrer :D

sous cette forme: http://www.servimg.com/image_preview.ph ... u=13059060

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 12:46
par Mazarini
Bonjour,

Il me semble qu'il faut que tu charges dans un tableau les ascendants du père et de même pour celui de la mère (tu dois déjà faire un truc analogue pour afficher les arbres.

Pour Chaque élément de l'arbre tu fixe le P (1 pour parent, 2 pour grand-parents... ?)

Pour chaque élément du tableau du père, tu regardes s'il existe pour la mère et tu calcule le "C" correspondant

Le bug c'est dans le cas ou il y a 2 fois le même individu dans un arbre puisque je le stocke 1 seul fois, mais la synchro est simple.

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 12:57
par juliette
tu dois déjà faire un truc analogue pour afficher les arbres
cela veux t'il dire que ma bdd n'est pas bonne ?

Re: recherche de conseil pour faire des calculs complexe

Posté : 24 nov. 2011, 15:50
par Mazarini
j’ai déjà un système d'arbre il fonctionne parfaitement: ATTENTION: je n'ai pas dit il est codé au top, mais ça marche, j'affiche le chien principale, les parents, les g-parents et ar-g-parents, 15 individu au total...
Rien ne t'empêche avec un programme analogue de remplir un tableau pour le père et un autre pour la mère.
un truc genre $pere[idchien] = P (p=1 pour les parents, 2 pour les grand-parents...)
et idem avec $mere[idchien].

Ensuite :
$result = 0;
foreach ($pere as $idchien=>$poids)
{
   if (isset($mere[$idchien])
   {
       $p = $pere[$idchien];
       $m = $mere[$idchien];
       $c = ($p + $m + 1);
       $c = 0.5^$c; /* si mes souvenir de la formule sont bons et si je sais calculer une puissance avec php
       $result = $result + $c;
   }
 }

Re: recherche de conseil pour faire des calculs complexe

Posté : 29 nov. 2011, 13:14
par sirakawa
Tu pourrais aller voir du côté de Geneweb (logiciel libre)
http://opensource.geneanet.org/projects ... ki/Fr_home
non pas pour t'en servir, mais pour essayer de voir comment ils procèdent, voire de discuter avec eux.
Je n'ai pas regardé plus loin, c'est en mettant sa notice à jour que j'ai pensé à cette question.