Parlons Arduino > Modélisation, Architectures logicielles et matérielles

Modélisation logicielle d'un réseau - le système de Jean-Luc

<< < (17/18) > >>

Jean-Luc:

--- Citation de: Dominique le février 26, 2019, 07:25:13 pm ---Au lancement du programme, le moniteur affiche 2 anomalies :

--- Code: ---Direction deja fixee : AIGUILLE_2
Direction deja fixee : AIGUILLE_8
Nombre de voies : 52

--- Fin du code ---

--- Fin de citation ---

Les connexions doivent être faites selon une seule direction une fois celle-ci choisie. Tu pars d'un élément et tu tournes dans une seule direction. Il ne faut pas en changer entre le circuit extérieur et intérieur.

Quand tu écris :


--- Code: ---    aiguille4.connecteEntrantAVoie(aiguille2, ENTRANT);

--- Fin du code ---

La direction de aiguille2 est fixée à DIRECTION_AVANT et celle de aiguille4 à DIRECTION_ARRIERE

Ensuite quand tu écris


--- Code: ---aiguille0.connecteSortantDevieAVoie(aiguille2, SORTANT_DEVIE);

--- Fin du code ---

Tu tentes de fixer la direction d'aiguille2 à DIRECTION_ARRIERE

D'où le message d'erreur

Dominique:
Merci Jean-Luc,

Cela a pour conséquence que je ne peux pas décrire les 2 boucles en sens inverse l’une de l’autre, à partir du moment où il y a une liaison entre les deux.

Donc sur une boucle un train circulera en marche avant et sur l’autre boucle un autre train circulera en marche arrière.

Jean-Luc:
L'orientation du graphe de ton réseau n'a rien à voir avec le sens de circulation normal des trains.

Dominique:
Voilà, j'ai repris la description, toujours dans le sens horaire et l'erreur n'apparait plus.

Je joins le programme complet avec une trace qui montre comment le programme explore le réseau, c'est très intéressant  ;D

Pour tester il faut entrer au moniteur d'abord le numéro de la voie de départ (ou voie de garage), puis ENTER, puis le numéro de la voie d'arrivée, puis ENTER.

Exemple : On voit bien les retours à l'aiguille précédente pour tester l'autre coté !


--- Code: ---Depart VOIE_GARAGE_11 Arrivee VOIE_GARAGE_15
VOIE_GARAGE_11
    AIGUILLE_12
        AIGUILLE_10
            AIGUILLE_20
                AIGUILLE_6
                    VOIE_1
                        AIGUILLE_5
                            AIGUILLE_19
                                VOIE_GARAGE_10
                            AIGUILLE_4
                                AIGUILLE_2
                                    VOIE_2
                                        AIGUILLE_17
                                            VOIE_3
                                                AIGUILLE_13
                                                    VOIE_5
                                                        VOIE_6
                                                            VOIE_7
                                                                VOIE_8
                                                                    VOIE_9
                                                                        AIGUILLE_8
                                                                            AIGUILLE_7
                                                                                VOIE_0
                                                                                    AIGUILLE_4
                                                                                AIGUILLE_6
                                            VOIE_4
                                                AIGUILLE_16
                                                    AIGUILLE_13
                                                    AIGUILLE_15
                                                        VOIE_27
                                                            VOIE_GARAGE_26
                                    AIGUILLE_0
                                        VOIE_25
                                            AIGUILLE_18
                                                VOIE_23
                                                    AIGUILLE_14
                                                        VOIE_22
                                                            VOIE_21
                                                                VOIE_20
                                                                    VOIE_19
                                                                        VOIE_18
                                                                            AIGUILLE_11
                                                                                AIGUILLE_9
                                                                                    VOIE_16
                                                                                        AIGUILLE_1
                                                                                            AIGUILLE_0
                                                                                    VOIE_17
                                                                                        AIGUILLE_3
                                                                                            VOIE_GARAGE_15

--- Fin du code ---

Bon, j'ai 2 ans de retard sur Denis mais je me prépare pour la suite ...

Amicalement
Dominique

DDEFF:
Bravo Dominique !
Je suis content que tu te sois frotté au problème des itinéraires, liés au fait qu'il faut bien décrire le réseau d'une manière ou d'une autre.

La méthode de Jean-Luc est basée sur une remarque "simple" : ce que les modélistes appellent un réseau est pour les mathématiciens un graphe.
Depuis Léonard Euler (1707-1783) et les ponts de Königsberg, on connait la puissance des graphes, avec leurs nœuds et leurs arcs qu'on peut parcourir de différentes façons
De nombreuses recherches (depuis 300 ans !), des bibliothèques pour différents langages : il y a de la matière.
L'autre intérêt de son programme, c'est la gestion très subtile de la place mémoire.
Ce que j'en ai retenu de fondamental, c'est la notion de connecteur, extrêmement puissante.

J'ai (aussi) utilisé cette méthode, avec quelque subtilités supplémentaires :
1°) Je n'ai pas de liste des départs ou des arrivées. On part de n'importe quel signal vers n'importe quel signal.
2°) On peut effacer l'itinéraire en plein milieu (si on s'arrête) et en changer. Et même changer de sens à ce moment.
3°) On peut chaîner les itinéraires automatiquement

Donc, Dominique, tu es sur la bonne voie  ;D ;D

PS : j'ai fini ma nouvelle mouture de mon éditeur (1300 lignes en moins) et il reste quelques bugs sur la nouvelle mouture du gestionnaire, avec une loco. Bientôt sur le forum.
PPS : si on m'avait dit un jour que je caserai les ponts de Königsberg sur Locoduino, je ne l'aurais jamais cru. 8)

Navigation

[0] Index des messages

[#] Page suivante

[*] Page précédente

Utiliser la version classique