banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 18 April 2014 15:05

PhyX
Juste Inscrit !
Date d'inscription: 18 Apr 2014
Messages: 4

Modélisation réseau en Python.

Bonjour,

       Je suis élève en classe préparatoire scientifique, et je fais appel à vos connaissances en Python, pour m'indiquer comment créer un graphe ou plus précisément un réseau grâce à Python, si vous avez quelques idées.
J'aimerais ensuite m'en servir pour faire des calculs de "flots".

Voici la façon dont on peut noter un réseau nommé R: R(V;\overrightarrow{E},s,p,c).
Où, V est l'ensemble des sommets du réseau.
\overrightarrow{E} est l'ensemble des arêtes, orientées (d'où la flèche).
s représente la source du réseau. (Sommet de "départ").
p représente le puit (sommet "d'arrivée").

Je ne sais pas s'il est possible, une fois ces données rentrées, de représenter graphiquement ce réseau. (Sans que ce soit un programme excessivement long ). Je parle de "longueur" car ce serait un programme compris dans mon rapport de TIPE (Travaux d'Intiative Personnelle Encadrée), si j'arrive à aboutir à quelque chose de correct.


Par la suite, je comptais faire un programme de calcul du flot maximal d'un réseau, j'ai trouvé un modèle d'algorithme correspondant. Il est déjà assez long, alors sous Python, je ne sais pas ce que cela donnera ?
Avec le faible bagage que je peux avoir en Python, j'ai pensé à des listes pour regrouper les données du réseau et pour pouvoir y faire appel facilement dans l'algorithme de calcul du flot...
Et c'est à ce sujet que porte mon interrogation, est ce qu'en utilisant un outil comme des listes pour stocker ces données, permettrait également  de représenter graphiquement le réseaux.

Voici ce que j'aimerais obtenir:

[img]https://farm4.staticflickr.com/3728/13922928184_69b002e2be.jpg[/img]


Merci d'avance pour votre aide. smile


P.S.: pour ceux qui se demande pourquoi spécialement en Python ? Simplement, parce que c'est le langage au programme dans la filière MPSI dans laquelle je suis, et que je n'en connais pas d'autres.

Hors ligne

 

#2 Fri 18 April 2014 15:10

Pascal Boulerie
Participant assidu
Lieu: France
Date d'inscription: 12 Sep 2005
Messages: 2947
Site web

Re: Modélisation réseau en Python.

Y a-t-il des logiciels libres existants * comme QGIS qui permettent de traiter des réseaux ou graphes ?

* Afin de ne pas avoir à réinventer la roue, en commençant au moins par un noyau d'application autour duquel programmer en Python.

(je ne suis spécialiste ni de QGIS ni de Python, je n'ai donc pas réponse à ma propre question, mais ça peut déjà être une piste à suivre pour toi.)


« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)

Hors ligne

 

#3 Fri 18 April 2014 15:52

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 947
Site web

Re: Modélisation réseau en Python.

Bonjour,

Pour générer un graphe, vous pouvez regarder du côté de https://github.com/Tristramg/osm4routing qui transforme des données OpenStreetMap en graphe sous forme origine, destination + autres paramètres. Il est en Python
Sinon, je vous recommande de passer par NetworkX, une bibiothèque en Python pour manipuler des réseaux. Vous pouvez par exemple, gérer des graphes orientés (voir http://networkx.lanl.gov/reference/clas … raph.html)

Pour la représentation graphique, le site de NetworkX vous donne des exemples avec Matplotlib, une autre bibliothèque Python ainsi qu'avec GraphViz (une autre bibliothèque accessible via Python). Pour des exemples, voir https://networkx.github.io/documentatio … awing.html

Cordialement

Thomas Gratier

Hors ligne

 

#4 Fri 18 April 2014 16:31

PhyX
Juste Inscrit !
Date d'inscription: 18 Apr 2014
Messages: 4

Re: Modélisation réseau en Python.

ThomasG a écrit:

Bonjour,

Pour générer un graphe, vous pouvez regarder du côté de https://github.com/Tristramg/osm4routing qui transforme des données OpenStreetMap en graphe sous forme origine, destination + autres paramètres. Il est en Python
Sinon, je vous recommande de passer par NetworkX, une bibiothèque en Python pour manipuler des réseaux. Vous pouvez par exemple, gérer des graphes orientés (voir http://networkx.lanl.gov/reference/clas … raph.html)

Pour la représentation graphique, le site de NetworkX vous donne des exemples avec Matplotlib, une autre bibliothèque Python ainsi qu'avec GraphViz (une autre bibliothèque accessible via Python). Pour des exemples, voir https://networkx.github.io/documentatio … awing.html

Cordialement

Thomas Gratier


Merci beaucoup, je vais essayer de comprendre comment fonctionne NetworkX. Ce n'est pas la première fois, mais je comprends à nouveau pourquoi l'on nous dit que l'Anglais est important...

Edit: Il n'est pas préciser comment "impoter" la bibliothèqe NetworkX sur Python,

j'ai essayé bêtement:

Code:

import NetworkX as nx

ça ne marche pas. Python renvoie que le module NetworkX n'existe pas, faut-il télécharger un fichier supplémentaire ?

Dernière modification par PhyX (Fri 18 April 2014 16:41)

Hors ligne

 

#5 Mon 21 April 2014 15:07

PhyX
Juste Inscrit !
Date d'inscription: 18 Apr 2014
Messages: 4

Re: Modélisation réseau en Python.

En effet, il faut télécharger des fichiers supplémentaires pour l'installer sur Python.

Cependant, je n'arrive pas à l'installer, même si j'essaye de suivre les instructions indiquées ici:
http://networkx.github.io/documentation … stall.html

Hors ligne

 

#6 Mon 21 April 2014 19:35

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 947
Site web

Re: Modélisation réseau en Python.

Bonjour,

Je ne sais pas si vous êtes toujours bloqué sur l'installation de NetworkX mais sous Windows, il faut généralement récupéré des binaires et les installer http://www.lfd.uci.edu/~gohlke/pythonlibs/#networkx Vous choisissez en fonction de votre Windows (32 ou 64 bits) et de votre version de Python installée.

Cordialement

Thomas

Hors ligne

 

#7 Mon 21 April 2014 20:55

PhyX
Juste Inscrit !
Date d'inscription: 18 Apr 2014
Messages: 4

Re: Modélisation réseau en Python.

Oui, je ne l'ai toujours pas installé depuis toute à l'heure, on m'a conseillé de télécharger pip pour ensuite installer les bibliothèques que je souhaite.
Le lien pour installer pip est en "binaire" et je ne comprends pas ce qu'il faut faire avec Python pour l'installer:
http://www.pip-installer.org/en/latest/installing.html

Il faut installer le fichier "get-pip.py" sur Python mais je n'y arrive pas.

Hors ligne

 

#8 Mon 21 April 2014 21:35

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 947
Site web

Re: Modélisation réseau en Python.

Salut,

Tu as deux choix: tu n'utilises pas Pip et tu télécharges puis lance un fichier exe pour installer NetworkX depuis le lien que je t'ai déjà fourni.
Sinon, tu installes Pip puis tu suis la doc de NetworkX.
Pour l'installation de Pip, ceette doc peut t'aider http://fr.openclassrooms.com/informatiq … #r-1654937

Cordialement

Thomas

Hors ligne

 

#9 Tue 22 April 2014 10:49

nicolas david
Participant occasionnel
Date d'inscription: 24 Feb 2014
Messages: 28

Re: Modélisation réseau en Python.

Bonjour

je rajoute une autre option peut être plus simple pour l'installation. Utiliser une distribution python déjà "packagée" avec networkx et d'autre librairies scientifiques.

Par exemple tu peux installer pythonxy
http://code.google.com/p/pythonxy/wiki/StandardPlugins

sinon +1 pour les deux solutions proposées par Thomas

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB