Bonjour,
je dois piloter un automate qui transporte des charges dans un rayon.Je recherche à implémenter l'algorithme qui permettrait de calculer le prochain mouvement à réaliser de manière à minimiser le cout de l'ensemble des mouvements.
Mes prédécesseurs ont développé un algorithme basé sur scénario, qui a fait preuve de ses limites (l'automate ne bouge pas alors que des mouvements sont en attente).
Je recherche à réprésenter le pb par un graphe et utiliser une méthode générique pour la recherche de solution (recherche de minimas).
Voici un schéma du problème :
Les rayons sont des cases sur plusieurs niveaux et plusieurs colonnes (fixés),|col1-nivNa|col2-nivNa|col3-nivNa|..|coln-nivNa|
-------------------------------------------------
......
-------------------------------------------------
|col1-niv2|col2-niv2|col3-niv2|..|coln-niv2|
-------------------------------------------------
|col1-niv1|col2-niv1|col3-niv1|..|coln-niv1|
|-------|
-[Automate]---------------------------------------------
|-------|
|S1|E1|
|S2|E2|
..
|SNb|ENb|
Les entrées/sorties vers les rayons sont des piles (de tailles fixes également).
A un instant T donné je peux avoir :
- Des charges à sortir depuis les rayons,
- Des charges à entrer depuis l'entrée vers les rayons,
- Des charges en entrée à ressortir
- à vérifier que des cases rayons sont bien vides.
Pour construire le graphe j'ai déjà en tête les éléments suivants :
un noeud d'un graphe est la localisation de l'automate après avoir exécuté un mouvement,
une arrête entre deux noeud est le cout en distance (unité : colonne) pour l'exécution du mouvement. J'ajoute un delta pour le changement de niveau qui est exécuté en // du changement de colonne.
la construction du graphe est itérative car certains mouvements d'entrée/sortie ne peuvent plus/pas encore être réalisés (après avoir exécuté Nb sortie la sortie est saturée il n'est plus possible d'en faire d'autres, les entrées sont obligatoirement dépilées).
La recherche va passer une et une seule fois par tous les sommets du graphe (sous-graphes), mémoriser le cheminement et le cout global exécuté, et bien sur conserver le cheminement de cout inférieur.
J'ai des pistes pour répondre à la construction du graphe et la recherche de solution. J'ai aussi recherché à identifier le problème comme un pattern mathématique mais sans succès (on n'est pas dans le cas de la recherche de chemin le plus court avec l'algo de Dijkstra).
Voilà si des personnes plus avisées que moi pourrait me donner des pistes
Partager