pro3600-MarsLander / backend

Environment and resolution algorithm
0 stars 0 forks source link

Mars Lander

Utilisation

Le fichier launcher lance la simulation. Dedans vous pouvez modifier les maps employés.

python3 src/launcher.py

Des commandes permettent ensuite de :

Si une trajectoire qui fonctionne a été trouvé, elle s'affichera toute seule et en vert.

Environement

Surface

La surface est initialiser à l'aide d'une liste de point. Elle transformera cette liste en une liste de segment.

Méthodes

Entity

Objet représentant une entité, il est caractériser par :

Méthodes

Lander

Objet représentant le lander, il est caractériser par :

Environment

La classe environment permet de générer la surface et le lander à l'aide de points et de conditions initiales.

Méthodes

Fonction de score

Pour employer des méthodes analytiques tel que l'algorithme génétique, il faudra déterminer une fonction de score. Cette fonction permettra de donner une note pour une trajectoire donnée et ses paramètres.

Critères

Il existe plusieurs critères plus ou moins important allant de la distance entre la zone de crash et la zone d'atterissage, à la vitesse à l'atterissage ,...

Distance

Le plus important des critères est la distance qui sépare le point d'atterissage à la zone d'atterissage prescrite par l'énoncé. Mais comment définire un bonne distance dans notre cas. Selon l'article proposé comme source d'inspiration pour ce projet, la meilleur distance semble être la distance à la marche donc pas la distance absolue mais plutot la distance nécessaire pour aller de la zone de crash à la zone d'atterissage en suivant la surface de l'environnement.

Vitesse

Il existe des contraintes de vitesses à l'atterissage qu'il faut respecter et donc des nouveaux paramètres pour une fonction de score, cependant il est important de préciser que ce sont les vitesses à l'atterissage, ce paramètre pourra donc être par exemple pris en compte si et seulement si le vaisseau a atterit au bonne endroit.

Angle

Pareil que la vitesse

Autres

Lorsque j'écris ceci, je me demande si il ne serait pas interressant de créer un score en fonction de l'amélioration d'une trajectoire qui a pour source deux autres trajectoires. Cela me fait penser notamenent au régulateur PID, ce sera peut être le sujet d'une amélioration.

Solution

La classe solution permet la création de solution informatique. Cette solution peut employer l'environement pour pouvoir s'entrainer.

Créer sa solution

Afin d'ajouter sa solution il faut créer un dossier solution contenant au moins une classe qui hérite de AbstractSolution et d'un fichier config contenant les paramètres par défaut de la solution qui seront changeable dans l'interface graphique.

Methodes

Interface graphique : TODO

Grace à get_parameters on a une idée des paramètres de la solution mais les changer à la main requiert du temps. C'est pourquoi je vais stocker dans un fichier config pour chaque solution ces hyperparamètres qui pourraient alors être changé durant une simulation.

Config

Le fichier config contient la valeur par défaut des paramètres et peut être modifier dans le GUI.

Interface graphique (GUI)

L'interface graphique permet d'observer les différentes solutions proposées.

Fonctionnement

Son fonctionnement est étroitement lié à la solution créer car différents type d'observation peuvent être proposés.

Statique multiple voit son utilité dans l'étude de solution heuristique dans lesquelles il y a une évolution de la stratégie au fur et à mesure des simulations.

Architecture

On veut retrouver dans cette interface graphique différentes fonctionnalités :

Paramètres attendus en fonctions des modes

Statique

La solution produit une liste de trajectoire à chaque tour, ainsi on laisse à la solution le choix d'afficher le nombre de trajectoire. De plus par défaut pour passer au tracer de la/les prochaines trajectoires, par défaut, ce sera manuel mais on peut imaginer ajouter un fréquence d'affichage.