Projet d'Ingénierie / QL
Omar HASAN, Pierre-Edouard PORTIER
Séance finaleH4211
Guillaume ABADIE
Thierry CANTENOT
Juliette COURLET
Rémi DOMINGUES
Adrien DUFFY-CROISSARD
Ahmed KACHKACH

Réfrigérateur intelligent
Contexte
- Approvisionnement semi-automatique d'un réfrigérateur (ou autre)
- Balances détectant les commandes à effectuer
- Possibilité pour l'utilisateur de paramétrer le système (ajout d'une balance, définition d'un seuil de livraison...)
- Livraisons effectuées par des drones via un réseau spécifique, jusqu'à des réceptacles chez les clients
Contexte
- Objectifs principaux
- Gérer le détection des commandes
- Optimiser les trajets des drones (autonomie, capacité de stockage, livraisons multiples...)
- Composants de l'application
- des balances
- un contrôleur pour chaque client
- un réceptacle par client
- des drones
- un entrepôt
Architecture du système

CdU : Détection d'un besoin client

Acteurs et opérations
-
Balance
Balance::nouvelleMesureDetectee(mesure : MesurePoids) -
Contrôleur Client
Controleur_Client::nouvelleMesureDetectee(balance : Balance, mesure : MesurePoids)
Controleur_Client::veriferBalances()
Controleur_Client::commanderProduit(produit : Produit)
-
Entrepôt (Serveur Web)
Entrepot::commanderProduit(client : Client, produit : Produit)
CdU : Acheminer une commande de l'entrepôt au réceptacle 1/2
CdU : Acheminer une commande de l'entrepôt au réceptacle 2/2


Organisation des livraisons
Paramètres d'entrée/sortie
- Paramètres d'entrée
- liste des drones
- liste des livraisons
- position GPS
- volume
- poids
- graphe du réseau
- distances entre chaque nœud pré-calculées
- Paramètres de sortie
- tournées assignées à chaque drones
Conditions d'entrées
- Chaque livraison est réalisable
- même s'il faut dédier un drone à son unique réalisation
- poids inférieur à 50kg
- volume inférieur à 50L
- distance aller-retour < 25km
- Graphe convexe
- pas d’îlot
- autonomie suffisante pour atteindre tous les nœuds
Organisation des livraisons
- Un scheduling est réalisé à intervalle fixe suivant un algo de ce type :
function scheduling(drones, livraisons) {while (drones.disponibles.length > 0 && livraisons.length > SEUIL) { drones.disponibles[0].do(tournee(livraisons));drones.disponibles.pop(0);}}
- (Presque) FIFO: Les livraisons étant en attente depuis plus de trois heures sont immédiatement incluses dont la première tournée à venir.
Algorithme d'optimisation de chemin
function generate_round(drone, deliveries){
round = [find_farest_delivered_node(deliveries)]
do {
deviations = find_deviations(deliveries, round)deviations = sort_asc_by_added_length(deviations)
for deviation in deviations {
if possible(deviation) {
apply_deviation(round, deviation)
break}
}
} while finding deviations
assign_drone_round(drone, round)
}
Simulation !
Des questions?
La Qualité, c'est bien quand c'est fini
By hexamome
La Qualité, c'est bien quand c'est fini
- 819
