laowantong / mocodo

Modélisation Conceptuelle de Données. Nickel. Ni souris.
https://www.mocodo.net
MIT License
181 stars 51 forks source link

Associations mal nommées lors de la croissance stochastique #105

Closed fduchatea closed 9 months ago

fduchatea commented 9 months ago

En générant un MCD (avec l'option grow_from_scratch), Mocodo génère une asso nommée Réflexive, qui pourtant n'en est pas une (Réflexive_18 dans le code).

Réflexive 15_, 1N Entité 8_, 1N Entité 8_
Réflexive 14_, 1N Entité 8_, 01 Entité 8_
Entité 12_: id 12 1 [INTEGER], at 12 2 [INTEGER]
Réflexive 18_, 0N Entité 16_, 01 Entité 6_
Entité 16_: id 16 1 [INTEGER], at 16 2 [INTEGER]

Binaire 11_, 0N Entité 10_, 1N Entité 8_
Entité 8_: id 8 1 [INTEGER], at 8 2 [INTEGER]
Ternaire 13_, 0N Entité 12_, 1N Entité 6_, 1N Entité 8_
Entité 6_: id 6 1 [INTEGER], at 6 2 [INTEGER], at 6 3 [INTEGER]
Binaire 17_, 1N Entité 16_, 0N Entité 6_: at 17 1 [INTEGER]

Entité 10_: id 10 1 [INTEGER], at 10 2 [INTEGER], at 10 3 [INTEGER]
Binaire 9_, 1N Entité 8_, 01 Entité 4_: at 9 1 [INTEGER]
Entité 4_: id 4 1 [INTEGER], at 4 2 [INTEGER], at 4 3 [INTEGER]
Binaire 7_, 0N Entité 6_, 0N Entité 4_
Entité 1_: id 1 1 [INTEGER], at 1 2 [INTEGER], at 1 3 [INTEGER]

:
:
Binaire 5_, 11 Entité 4_, 01 Entité 2_
Entité 2_: id 2 1 [INTEGER], at 2 2 [INTEGER]
Binaire 3_, 1N Entité 2_, 1N Entité 1_%  

Le pdf est le suivant (l'asso non réflexive est en haut à droite) :

Capture d’écran 2023-12-04 à 09 42 36

Il y a aussi le cas inverse qui se produit : une Réflexive qui est nommée Binaire K. Ce n'est pas un réel problème (peu d'impact, sauf si on utilise les libellés pour apprendre à repérer les différents types d'assos par ex).

laowantong commented 9 months ago

En effet, étrange, je regarderai ça. Merci.

fduchatea commented 9 months ago

Il le fait aussi avec Ternaire :

Ternaire 35_, 0N Entité 10_, 0N Entité 10_
laowantong commented 9 months ago

Je verrai si je peux reproduire. Tu n'as pas fait ça avec un --seed fixé ?

fduchatea commented 9 months ago

Non, pas de seed dans le script de génération. Mes options (autre que couleur et svg-to-pdf) sont :

grow:from_scratch,ent_attrs=5,'01-11'=0,'_11-*N'=1 create:types=INTEGER arrange:balanced

Aussi tombé sur un cas où il met Binaire au lieu de Ternaire :

Binaire 19_, 0N Entité 17_, 1N Entité 9_, 1N Entité 15_

Ca semble arriver assez fréquemment.

laowantong commented 9 months ago

Je pense que c'est pas mal de fixer un seed de façon générale. Heureusement l'erreur se produisait effectivement souvent, à peu près une fois sur deux. Et toujours dans la ou les dernières associations.

Je n'ai pas vraiment compris ce qui se passait, mais en relisant mon code j'ai trouvé deux lignes suspectes, ou en tout cas hors de mon style (nommer une expression courte dont je me servais seulement la ligne suivante, également courte). Unifier la variable « inutile » avec une autre de la même boucle semble régler le problème, du moins je n'ai pas réussi à le reproduire en une quinzaine d'essais. Je suis prêt à rouvrir l'issue si quelqu'un retombe dessus, si possible avec un seed connu !