Closed control-toolbox closed 1 year ago
Penser à ajouter du contenu ici : https://control-toolbox.github.io. Quel contenu ?
Les noms possibles :
Est-ce que l'on fait un package pour les exceptions et un package pour les callbacks ?
On pourrait faire un package CTTools
qui contient Descriptions
, Callbacks
et Exceptions
.
L'éco-système control-toolbox
contiendrait donc comme packages :
OptimalControl
: le package principal permettant de faire la résolution de problèmes de contrôle optimal par des méthodes directes et indirectes avec "l'analyse" et l'affichage des solutions.
ToolsCT
ou CTTools
: contient les fonctions liées à la notion de description d'algorithmes, les callbacks et les exceptions utiles pour tout l'éco-système control-toolbox
.
FiniteOptimisationSolvers
ou FiniteOptimisation
ou NLPSolvers
: contient des solveurs de problèmes d'optimisation en dimension finie avec ou sans contraintes, et des interfaces à des solveurs existants comme JuMP
.
PathFollowing
: contient des méthodes de suivi de chemin différentiel.
DifferentialFlows
or ContinuousFlows
: contient des méthodes de calcul de flots en tout genre.
On aura aussi un package pour faire la résolution de NLE, de BVP, etc. Comment l'appeler ? Sachant, que l'on fera peut-être de la résolution de PMP ou de fonction de tir, mais là c'est du NLE.
NonLinearEquationsSolvers
, PMPSolvers
, ShootingSolvers
...
Je continue et j'en suis à :
Voici un exemple de wrapper : https://github.com/SciML/SciMLNLSolve.jl
Pour rééxporter le contenu d'un package, utiliser @reexport
.
Les packages CommonSolveOptimisation
et CommonsSolveEquations
n'ont pas vocation à être visible donc je propose de les renommer CTOptimization
et CTNonLinearSolve
qui seront de simples passerelles vers à terme les packages Optimization
et NonLinearSolve
.
Organisation des packages de l'éco-système control-toolbox
But : des outils et exemples pour la résolution de problèmes de contrôle optimal.
Voici les noms des packages pour le moment avec la description ci-dessous. Naming guidelines
L'organisation pour le moment :
Package
Descriptions
pour les solveursIn the future control toolbox, there will be solvers for optimal control problems but also methods to compute flows of ode (based on DifferentialEquations package), interfaces to NLP solvers (as
JuMP
), interfaces to NLE solvers (asMINPACK
orNLSolve
) but also a personal differential path following method to solve a one-parameter family of NLE equations.The solvers will be called via a
solve
method as in theCommonSolve
package but with an additional "description" of the method that will be called by the solver. For instance, if you want to solve an optimal control problem via a descent method with backtracking, with an optional argumentgrid
set tomy_grid
, you will doPackage
Flows
Package
Optimisation
JuMP
.solve
du genrepar exemple si on veut résoudre le problème $\min f(x)$, $x \in \mathbb{R}^n$.
Important. On passe par une méthode de construction pour cacher le type qui est géré par la méthode
NLP
. Le type va dépendre des arguments en entrée. Ensuite, en fonction du type, on peut ou pas appeler certaines méthodes. De plus, les options valides dépendent de la méthode choisie.Package
ControlToolbox
ControlToolbox
. Par exempleOptimalControl
,OptimalControlSolvers
...OCP
par exemple. Il est important que le type soit caché pour l'utilisateur qui veut juste construire un problème puis jouer avec.Description
.Autres packages et remarques
Paths
ouPath
ou autre. Pour le calcul de chemins via homotopie différentielle.NLESolvers
ouNLEquations
pour la résolution de systèmes d'équations non linéaires.Remarques.