Dakitess a écrit :Du coup, est-ce que ton logiciel utilise la linéarisation comme base de calcul ? Je veux dire, les données de vol sont elles établies sur une courbe vraie ou sur une approximation à 4 points ? Ou est-ce que c'est 4 point ne sont qu'ensuite secondaire, pour donner des instants clés à suivre par l'utilisateur ? Tu pourrais extrapoler en degré 2 ou ajouter un point tu penses ou ça alourdirait la simulation ?
Alors que tout le monde note que ça n'est pas moi qui part sur les maths!
A. Chaque trajectoire est calculée par intégration du système d'équations différentielles du mouvement en prenant en compte gravité, poussée, trainée et les variations de masse du vaisseau (carburant consommé et séquence de staging). La méthode d'intégration est un
Runge-Kutta d'ordre 4 avec un pas de 0.5s + des points forcés par les réservoirs quand il sont vides.
Au long de cette trajectoire l'axe de poussée est déterminé par les angles de heading et pitch (reconstruction du référentiel du vaisseau à chaque point de calcul), avec effectivement une interpolation linéaire entre les différents points de référence du plan de vol. Si je devais interpoler avec un ordre supérieur cela serait vraisemblablement en spline cubique, mais:
1 - les pertes sont négligeables: 5° d'erreur = 0.4%
2 - c'est un humain qui est aux manettes, et donc va lui dire qu'entre les points il doit appliquer "une interpolation d'ordre 2" et tu vas voir ce qu'il te répond!

Faudrait-il un pilote auto? Je préfère le "hands-on", c'est plus marrant

... et en pratique avec un peu d'attention ça fonctionne très bien.
B. L'optimiseur lui même se situe une couche au-dessus et vient manipuler les variables du plan de vol (temps et angles) puis recalcule de nouvelles trajectoires pour vérifier le résultat de ses modifs, le "résultat" étant le périapse de l'orbite finale atteinte. Pourquoi le périapse? Parce qu'il est toujours défini quelle que soit l'excentricité et que le maximiser dans le cas des ellipses conduit naturellement à une orbite circulaire, donc on fait d'une pierre deux coups: maximiser le périapse = chercher l'orbite circulaire de plus haute altitude.
Sachant qu'il y a 8 variables pour définir le plan de vol et qu'on veut donc maximiser le périapse, il s'agit donc là d'un problème de, je cite "
optimisation non-linéaire en dimension 8 sans contraintes", qui est résolu à l'aide d'un algorithme de "
Fletcher et Reeves (gradient conjugué)" qui en gros consiste à parcourir "
l'hyper-surface" définie par la fonction PeD = f(plan de vol) en se guidant à l'aide du gradient (le vecteur de dimension 8 des dérivées partielles du periapse en fonction des variables du plan de vol) et qui donne la ligne de plus grande pente.
Le problème est que l'hyper-surface est très "cabossée" avec de nombreux maximums locaux (= trajectoires sous-optimales) et j'ai donc ajouté une pondération du periapse par le DeltaV de circularisation pour trouver des trajectoires plus efficaces (= Pe le plus élevé avec le DV de circularisation le plus faible). La pondération est elle-même modifiée au cours du déroulement de l'algo d'optimisation pour d'abord sortir des régions de basse efficacité puis dans un second temps circulariser la trajectoire une fois dans une zone correcte. Il y a aussi un curseur qui permet de changer la "force" de la pondération certains designs étant plus "rétifs" que d'autres.
Maintenant cet algo donne t-il LA trajectoire idéale? Je ne sais pas. Je suis électronicien, pas astrodynamicien et je n'ai pas les connaissances mathématiques nécessaires pour répondre: je me suis déjà bien "amusé" à implémenter la mécanique elle-même à vrai dire!
Sinon je n'ai jamais eu de retour à ce sujet et pour ma part il m'a toujours donné des profils performants, et toujours bien meilleurs que ce que j'aurais fait à l'estime dans le jeu.
Je peux donner plus de détails évidemment, de toute façon il n'y a plus personnes qui lit ce topic
