Projet d'Ingénierie / QL

Omar HASAN, Pierre-Edouard PORTIER

Séance finale
H4211
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