HTilki / transporter

Résolution d'un problème d'optimisation avec GUI.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Transporter

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.

Méthode utilisé

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$.

Installation / fichier requis

Tous les fichiers présent dans le repos GitHub.

La base de données

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

Application avec Interface Utilisateur Textuel / dans le Terminal

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

Application avec Interface Utilisateur Graphique.

A l'aide du package Textual.

textual run app_textual.py

Tout se passe à la souris (ou presque !).

🎬 Démonstration
app_textual_demo.mp4

Compatibilité

Compatible avec Windows.

Compatibilité avec Linux et MacOS à tester.

Pour les packages voir fichier pyproject.toml.

About

Résolution d'un problème d'optimisation avec GUI.


Languages

Language:Python 98.6%Language:CSS 1.4%