#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é :
.
Où, est l'ensemble des sommets du réseau.
est l'ensemble des arêtes, orientées (d'où la flèche).
représente la source du réseau. (Sommet de "départ").
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.
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: 2922
- 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
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.
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
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
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