Le but de ce projet est de minimiser le coût de transport d'une entreprise disposant de plusieurs entrepôts cherchant à deservir plusieurs clients.
Cette minimisation de coût sera effectué à l'aide de la fonction linprog
du package scipy.
En effet, pour ce problème on minimise le coût total de distribution de tous les clients en fonction des différentes contrainte de stock d'entrepots et des demandes des clients.
Les contraintes sont les suivantes:
-
$\sum q_{ij} \le Q_i$ avec$Q_i$ la quantité total disponible dans l'entrepôt$i$ . -
$\sum q_{ij} = D_j$ avec$D_j$ la quantité total demandé par le client$j$ .
Tous les fichiers présent dans le repos GitHub.
La résolution du problème ne fonctionne qu'avec un type spécifique de base de données.
- Un base de données enregistré dans un fichier CSV.
- Les quantités disponibles et demandées doivent être renseignée en tonne: "
xT
". - Les coûts doivent être de la forme : "
x$/T
".
📷 Exemple de base de données
,19T,20T,19T,16T,19T,
27T,5$/T,3$/T,4$/T,5$/T,3$/T
18T,1$/T,4$/T,2$/T,1$/T,1$/T
22T,4$/T,3$/T,4$/T,3$/T,5$/T
25T,2$/T,3$/T,4$/T,3$/T,3$/T
22T,4$/T,1$/T,3$/T,4$/T,2$/T
A l'aide du package Typer.
- Pour voir l'aide.
python app.py --help
📷 Les différentes sorties
Différents tableaux en sortie Rich
python app.py resultat-client --chemin /chemin/vers/base_de_donnees.csv
python app.py resultat-entrepot --chemin /chemin/vers/base_de_donnees.csv
Différente visualisation graphique à l'aide de graph NetworkX
python app.py representation-client --chemin ./transport.csv --client 30
python app.py representation-entrepot --chemin ./transport.csv --entrepot 30
A l'aide du package Textual.
textual run app_textual.py
Tout se passe à la souris (ou presque !).
🎬 Démonstration
app_textual_demo.mp4
Compatible avec Windows.
Compatibilité avec Linux et MacOS à tester.
Pour les packages voir fichier pyproject.toml
.