Auteur Sujet: Projet partagé d'un gestionnaire de réseau  (Lu 159988 fois)

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #270 le: janvier 15, 2024, 03:04:09 pm »
Merci, je vais "bewarer"  ;D
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #271 le: janvier 15, 2024, 03:13:31 pm »
Bonjour

Voila une nouvelle version du fichier json, j'ai intégré les voisins dans les zones. Les TJS sont vraisemblablement fausses (toujours besoin de précision de nommage A1 c'est laquelle, A3 c'est laquelle, ...)

@ Dominique

Les choses compliquées dans les voisins sont une interprétation json des méthodes selonAiguille(Aiguille* a,Zone* z1,Zone* z2) du gestionnaire.

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #272 le: janvier 15, 2024, 04:20:39 pm »
@ Pierre

Je trouve cette version beaucoup plus claire comme ça.
Pour la TJS z3, dans le sens vois1, je comprendrai qu'elle ait comme voisins z0 et z1 et dans le sens vois2 z5 et z4
Pour la TJS z11, dans le sens vois1, je comprendrais qu'elle ait comme voisins z9 et z12 et dans le sens vois2 z0 et z1

Si je réfléchis à partir de la SNCF (et donc comme Peco), je mettrais bien pour z3:
    {
      "nom" : "Z3",
      "sens" : "pairimpair",
      "aiguilles": [
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A3"
            "pos2" : "droite"
            "vois1" : "Z5"
            "vois2" : "Z0"
          }
          {
            "aig1" : "A1"
            "pos1" : "droite"
            "vois1" : "Z5"
            "vois2" : "Z1"
          }
          {
            "aig2" : "A3"
            "pos2" : "gauche"
            "vois1" : "Z4"
            "vois2" : "Z0"
          }
      ]
    },
Mais je ne sais pas si ça a un sens ?

Denis
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #273 le: janvier 15, 2024, 04:27:37 pm »
@ Denis

Faut que cela soit décodable. Quid des cas compliqués, voir image.

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #274 le: janvier 15, 2024, 04:35:37 pm »
@ Pierre,

Pour une zone donnée, je décris les positions des différentes aiguilles de la zone, ce qui me donne, pour une position de chaque aiguille donnée, le vois1 et le vois2 suivant le sens de circulation sur la zone.
Pour une position d'aiguilles donnée d'une zone donnée, il n'y a qu'un seul chemin de vois1 à vois2.

Après, si j'ai ma gare à décrire, il ne faut pas être pressé... mais c'est facile pour une zone donnée.

Est-ce que ce que j'ai écrit est syntaxiquement correct ?

Denis

"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #275 le: janvier 15, 2024, 04:45:52 pm »
@ Denis

Comment tu écrit un cas compliqué comme celui de l'image que j'ai donné.

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #276 le: janvier 15, 2024, 05:43:03 pm »
Etudions le cas de la zone z0
Si on l'étudie en PRS, c'est facile, on prend les aiguilles une à une.
Sinon, on retrousse ses manches...

{
      "nom" : "Z0",
      "sens" : "pairimpair",
      "aiguilles": [
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "gauche"
            "aig3" : "A3"
            "pos3" : "gauche"
            "vois1" : "Z2"
            "vois2" : "Z3"
          }
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "gauche"
            "aig3" : "A3"
            "pos3" : "droite"
            "vois1" : "Z2"
            "vois2" : "Z4"
          }
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "gauche"
            "aig5" : "A5"
            "pos5" : "gauche"
            "vois1" : "Z2"
            "vois2" : "Z7"
          }
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "gauche"
            "aig5" : "A5"
            "pos5" : "droite"
            "vois1" : "Z2"
            "vois2" : "Z5"
          }
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "droite"
            "vois1" : "Z2"
            "vois2" : "Z6"
          }
          {
            "aig1" : "A1"
            "pos1" : "droite"
            "aig2" : "A2"
            "pos2" : "gauche"
            "aig3" : "A3"
            "pos3" : "gauche"
            "vois1" : "Z1"
            "vois2" : "Z3"
          }
          {
            "aig1" : "A1"
            "pos1" : "droite"
            "aig2" : "A2"
            "pos2" : "gauche"
            "aig3" : "A3"
            "pos3" : "droite"
            "vois1" : "Z2"
            "vois2" : "Z4"
          }
          {
            "aig1" : "A1"
            "pos1" : "gauche"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "gauche"
            "aig5" : "A5"
            "pos5" : "gauche"
            "vois1" : "Z1"
            "vois2" : "Z7"
          }
          {
            "aig1" : "A1"
            "pos1" : "droite"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "gauche"
            "aig5" : "A5"
            "pos5" : "droite"
            "vois1" : "Z1"
            "vois2" : "Z5"
          }
          {
            "aig1" : "A1"
            "pos1" : "droite"
            "aig2" : "A2"
            "pos2" : "droite"
            "aig4" : "A4"
            "pos4" : "droite"
            "vois1" : "Z1"
            "vois2" : "Z6"
          }
      ]
},
« Modifié: janvier 15, 2024, 06:04:23 pm par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #277 le: janvier 15, 2024, 06:07:25 pm »
@ Denis

Oui cela a l'air équivalent, mais plus difficile à exploiter à cause des numéros, bien penser que c'est un système clé-valeur, dans ton cas il faut fabriquer les clés, on sait pas trop combien il y en a.

Une autre remarque, dans certains cas (aiguille simple par exemple) vois1 peut être simple et vois2 compliqué ou vice versa. Pour une aiguille prise en talon il n'y a qu'un voisin possible.

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #278 le: janvier 15, 2024, 06:20:09 pm »
@ Pierre

Ce qui m'embête, surtout, c'est qu'il faut décrire TOUS les cas possibles. Avec ma gare et ses 180 itinéraires, 16 TJD, 14 aiguilles, c'est pas possible : on devient fou.
En PRS, ça simplifie puisque chaque appareil de voie est une zone, mais, c'est pas facile quand même.

Denis
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Re : Projet partagé d'un gestionnaire de réseau
« Réponse #279 le: janvier 15, 2024, 06:24:24 pm »
En PRS, ça simplifie puisque chaque appareil de voie est une zone, mais, c'est pas facile quand même.

En PRS, comme tu dis, on peut avoir plusieurs aiguilles dans une zone !!!

Pierre

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #280 le: janvier 15, 2024, 06:39:07 pm »
Oui, bien sûr, mais plus on met d'appareils de voie dans la zone, plus on attend longtemps sa libération. On gagne des zones, mais on perd en fluidité.
Il faut équilibrer
« Modifié: janvier 16, 2024, 10:56:58 am par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #281 le: janvier 16, 2024, 09:40:04 am »
@ Denis

En sur-découpant les zones on ne gagne rien en temps de libération (assez souvent on retarde volontairement la libération pour palier les micro-coupures de prise de courant des engins de traction), et on ne gagne rien en fluidité (le découpage des zones est fait de telle sorte qu'il ne puisse avoir qu'un train sur une zone, si on sur-découpe, cela reste vrai sur l'ensemble des zones issues de la découpe).

Pierre

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #282 le: janvier 16, 2024, 10:18:36 am »
@ Dominique Denis

Voila une exemple restreint  de traitement d'un fichier json, pour générer automatiquement un gestionnaire.

Le programme est écrit en Java (Processing), mais serait très semblable en C++. Le programme traite le fichier json (sans test d'erreur !) et génère des objets "zone" et des objets "aiguilles". Les objets zone contiennent un codage (Java) des liens entre les zones (voisins).

Le programme (voir fichier accompagnant) comporte quatre onglets :
- un onglet qui appelle le traitement et qui affiche la liste des zones (avec le code des liens) et des aiguilles, puis qui affiche pour chaque zone les suivants réels en fonction de la position effectives des aiguilles.
- un onglet comportant deux classes : Zone et Aiguille. Ce sont des "modèles" qui seront instanciées par le traitement.
- un onglet traitement du fichier json. Il y a trois phases : le traitement des zones sans celui des voisins (infaisable pendant la première phase), une instance de "Zone" est crée pour chaque zone. La deuxième phase traite les aiguilles. La troisième phase traite des liens entre les zones. il y a deux cas, un cas simple et un cas compliqué. Le cas simple est quand le voisin ne dépend pas de la position d'aiguilles (zone sans aiguille, aiguille en talon, ...), une fonctionnelle simple est élaborée, un fonctionnelle c'est une méthode que l'on appellera dans le gestionnaire lors de son fonctionnement effectif sur le réseau pour connaitre un voisin d'une zone. Le cas compliqué est quand un voisin dépend de la position d'une ou plusieurs aiguilles, il faut transformer en objets Java la description json de la chose et élaborer une fonctionnelle(comme pour le cas simple), cette fonctionnelle ayant une forme beaucoup plus compliquée.
- le dernier onglet contient les classes Java nécessaires pour coder en Java les descriptions json des voisins dépendants d'aiguilles.

Pierre



DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #283 le: janvier 16, 2024, 11:12:21 am »
@ Pierre

Ça avance drôlement  ;D

Je viens de tester. Ça fonctionne, mais je ne retrouve pas tous les voisins (ou je n'ai pas compris)
z3 et z11 ont plus de 2 voisins et je ne les retrouve pas dans le test, vraisemblablement des choses à rajouter dans le JSON ?

Denis

"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Projet partagé d'un gestionnaire de réseau
« Réponse #284 le: janvier 16, 2024, 11:16:40 am »
Avec quoi tester ? Processing ?

Cordialement,
Dominique