https://github.com/istellartech/OpenGoddard https://istellartech.github.io/OpenGoddard/
Comment utiliser OpenGoddard 1 Comment utiliser OpenGoddard 2 Comment utiliser OpenGoddard 3 OpenGoddard Comment utiliser 4 ← Maintenant ici
Cette fois, je parlerai de la formulation et des résultats en utilisant l'une des techniques standards d'optimisation.
En raison du développement de la propulsion électrique comme le moteur ionique, devenu célèbre parce que l'explorateur d'astéroïdes a également été installé à Yabusa, il est de plus en plus courant de passer de la terre à d'autres planètes par propulsion électrique au lieu de propulsion chimique comme un moteur de fusée. J'ai fait. Il est bien connu que la transition orbitale en propulsion chimique nécessite l'énergie minimale requise pour prendre une orbite appelée orbite de Hohmann. Cependant, ce n'est qu'un moteur avec une poussée suffisante, et à faible poussée, ce sera une trajectoire appelée trajectoire en spirale. La plupart des problèmes de transition orbitale entre deux points sont résolus comme des problèmes de valeurs aux limites (problème de Lambert, également appelé problème de Lambert), mais ici nous les traiterons comme des problèmes de contrôle optimal et les résoudrons.
Les papiers originaux sont les suivants.
Ross, I. Michael, Qi Gong, and Pooya Sekhavat. "Low-thrust, high-accuracy trajectory optimization." Journal of Guidance, Control, and Dynamics 30.4 (2007): 921-933. https://doi.org/10.2514/1.23181
\begin{align}
\dot{r} &= v_r \\
\dot{v_r} &= v_t^2 / r - 1 / r^2 + u_r \\
\dot{v_t} &= - v_r v_t / r + u_t
\end{align}
Entrez la valeur initiale et la valeur finale pour limiter l'amplitude de la poussée.
|u_r| \leq 0.01 \\
|u_t| \leq 0.01 \\
0 < t_f < 55
Le but est de minimiser le temps total nécessaire à la poussée.
J = \int_{t_0}^{t_f} |u_r| + |u_t| dt
Étant donné que la fonction d'évaluation contenant des valeurs absolues n'est pas lisse, le remplacement à l'aide de variables libres (également des variables auxiliaires) est effectué en tant que norme pour l'analyse numérique. http://www.msi.co.jp/nuopt/download/introduction/module/technic.pdf
u = u_1 - u_2 \\
|u| = u_1 + u_2
En tenant compte de cela, décrivez comme 3 variables d'état ($ r, v_r, v_t
Si la fonction d'évaluation a un terme d'intégration, spécifiez le contenu du terme d'intégration dans running_cost.
def running_cost(prob, obj):
ur1 = prob.controls_all_section(0)
ur2 = prob.controls_all_section(1)
ut1 = prob.controls_all_section(2)
ut2 = prob.controls_all_section(3)
return (ur1 + ur2) + (ut1 + ut2)
prob.running_cost = running_cost
En regardant le graphique de u, qui est la variable de contrôle, nous pouvons voir que l'histoire de la poussée est difficile à comprendre pour les humains. Même un problème aussi difficile peut être facilement résolu (bien qu'il nécessite quelques essais et erreurs et savoir-faire).
Comme mentionné ci-dessus, nous avons expliqué les points qui peuvent être notés à partir d'un exemple simple lors de l'utilisation d'OpenGoddard. Ce qui suit est un bref résumé.
Bien que la zone reste comme une partie non intuitive avec savoir-faire, il est encore possible de trouver facilement la solution (trajectoire) d'un contrôle optimal non linéaire. Il est important de noter qu'il n'y a aucune garantie que ce soit la valeur optimale car c'est une solution numérique, et que c'est une solution localement optimale, mais je pense qu'il n'y a pas de problème dans de nombreuses pratiques. Veuillez essayer d'utiliser Open Goddard!
Le SLSQP de Scipy est actuellement utilisé dans la v1.0.0 comme solveur pour la méthode de planification secondaire séquentielle, mais les performances de ce solveur ne sont pas adaptées aux problèmes à grande échelle. Les problèmes avec un grand nombre de variables et de nœuds prennent un temps de calcul considérable. Il semble que Coco Rahen devrait utiliser un solveur haut de gamme qui utilise les caractéristiques d'une matrice clairsemée, mais cela n'a pas été vérifié. SNOPT et IPOPT sont souvent mentionnés dans les articles.
En plus de l'Open Goddard expliqué cette fois, nous avons publié un programme appelé Open Tsiolkovsky.
Ces deux sont une paire de logiciels, le problème inverse et le problème avant.
La raison originale de sa création est la génération d'orbite de fusée, mais par conséquent, Open Goddard est un outil assez polyvalent. Il peut être préférable d'utiliser un autre outil pour les problèmes de contrôle optimal à grande échelle, mais je pense que c'est un bon outil car les calculs simples ont peu de dépendances et sont faciles à installer (éloges à chaud)
Recommended Posts