control-toolbox / CTBenchmarks.jl

Control-toolbox benchmarks
9 stars 3 forks source link

backend de ExaModel : comment le tester avec JuMP #4

Closed 0Yassine0 closed 4 months ago

0Yassine0 commented 5 months ago

J'ai une question par rapport à la partie du backend. Task 2 : (JuMP, Ipopt, _backend, best_linear_solver), _backend in {JuMPDefault, SymbolicAD, ExaModel} de la discussion de https://github.com/orgs/control-toolbox/discussions/47#discussioncomment-8554416 De ce que j'ai compris, ExaModel est un modèle différent de ce qu'on propose en JuMP ( avec la possibilité de passer de l'un à l'autre) et contrairement à SymbolicAD les instructions n'étaient pas trop claires pour l'utilisation. ExaModel ne propose pas explicitement un sous type de Nonlinear.AbstractAutomaticDifferentiation ( normalement c'est le type demandé pour le backend en JuMP) . Ma question c'est : est-ce que ça revient à une comparaison Modèle-Modèle ou je devrais trouver une manipulation pour l'utiliser avec un modèle JuMP.

frapac commented 5 months ago

Bonne question. ExaModels n'est pas un backend de JuMP `a proprement parler (contrairement à SymbolicAD). Nous pouvons juste convertir un modèle JuMP vers ExaModels. L'interface n'est pas beaucoup documenté, comme le package est récent.

Pour tester ExaModels depuis un modèle JuMP, il faut faire :

model = Model()
# define your JuMP model

exa_model = ExaModels.ExaModel(model)

Cette conversion devrait marcher sur des modèles de controle optimal du moment que nous n'utilisons pas l'ancienne syntaxe JuMP (@NLconstraint, @NLobjective).