control-toolbox / control-toolbox.github.io

ct: control toolbox
0 stars 0 forks source link

Organisation des packages de l'éco-système control-toolbox #3

Closed control-toolbox closed 1 year ago

control-toolbox commented 1 year ago

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 solveurs

In 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 (as MINPACK or NLSolve) 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 the CommonSolve 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 argument grid set to my_grid, you will do

sol = solve(ocp, :descent, :backtracking, grid=my_grid)
# or
sol = solve(ocp, (:descent, :backtracking), grid=my_grid)
# or
sol = solve(ocp, :backtracking, grid=my_grid) # backtracking is only valid for descent method

Package Flows

Package Optimisation

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

Autres packages et remarques

Remarques.

control-toolbox commented 1 year ago

Penser à ajouter du contenu ici : https://control-toolbox.github.io. Quel contenu ?

control-toolbox commented 1 year ago

Les noms possibles :

control-toolbox commented 1 year ago

Est-ce que l'on fait un package pour les exceptions et un package pour les callbacks ?

control-toolbox commented 1 year ago

On pourrait faire un package CTTools qui contient Descriptions, Callbacks et Exceptions.

control-toolbox commented 1 year ago

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...

control-toolbox commented 1 year ago

Je continue et j'en suis à :

control-toolbox commented 1 year ago

Voici un exemple de wrapper : https://github.com/SciML/SciMLNLSolve.jl

control-toolbox commented 1 year ago

Pour rééxporter le contenu d'un package, utiliser @reexport.

control-toolbox commented 1 year ago

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.