Skip to content

comparaison test between JuMP and OptimalControl Models #79

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 76 commits into from
Aug 11, 2025

Conversation

Nico77310
Copy link
Collaborator

No description provided.

@Nico77310 Nico77310 linked an issue Jun 17, 2025 that may be closed by this pull request
@Nico77310 Nico77310 marked this pull request as draft June 17, 2025 14:24
@github-actions github-actions bot requested a review from ocots June 17, 2025 14:25
@ocots
Copy link
Member

ocots commented Jun 27, 2025

@Nico77310 Il faut avoir comme tests:

  • le solveur avec le modèle JuMP converge
  • le solveur avec le modèle OptimalControl converge
  • les deux solutions donnent le même objectif
  • les deux solutions donnent la même init (tester avec max_iter=0)
  • les deux solutions sont identiques en norme $L^2$ sur chaque composante

Important

De plus, il faudra modifier les modèles OptimalControl pour pouvoir utiliser ExaModels >pour modéliser le NLP obtenu après discrétisation. Dans ce cas, la dynamique doit être donnée par composante. Voir ce problème par exemple. Ajouter un argument nommé (exa::Bool=false) pour choisir si la dynamique est donnée de manière vectorielle ou par composante:

function OptimalControlProblems.beam(::OptimalControlBackend; nh::Int=100)
# Model
ocp = @def begin
t [0, 1], time
x R², state
u R, control
x(0) == [0, 1]
x(1) == [0, -1]
(t) == [x₂(t), u(t)]
0 x₁(t) 0.1
-10 u(t) 10
(u(t)^2) min
end

@ocots ocots mentioned this pull request Jun 27, 2025
@ocots
Copy link
Member

ocots commented Jun 27, 2025

@Nico77310 Il faut aussi :

  • ajouter une fonction available_problems() qui renvoie la liste des problèmes disponibles
  • utiliser cette fonction dans la documentation au lieu du tableau pour indiquer la liste des problèmes dispos
  • ajouter un test à la fin du runtests :
@test list_of_problems_final == available_problems()

pour vérifier que la fonction available_problems est toujours à jour.

@antoinepichon03
Copy link
Collaborator

@Nico77310 Il faut aussi :

  • ajouter une fonction available_problems() qui renvoie la liste des problèmes disponibles
  • utiliser cette fonction dans la documentation au lieu du tableau pour indiquer la liste des problèmes dispos
  • ajouter un test à la fin du runtests :
@test list_of_problems_final == available_problems()

pour vérifier que la fonction available_problems est toujours à jour.

Hello @ocots ! For the available_problems function, I implemented a solution using a text file cache that gets written every time you run the tests. This way, you can access the list of available/working problems without having to recompile or re-run the entire test suite. The function reads from this cached file to return the last known working problems list. What do you think about this approach? Do you see any potential improvements or issues with this caching strategy?

@antoinepichon03
Copy link
Collaborator

I can't push in the branch, can you send me the permission please ? @ocots

@Nico77310
Copy link
Collaborator Author

Hello @ocots, could you review comparison tests between JuMP and OC ? Thank you by advance.

@ocots
Copy link
Member

ocots commented Jul 2, 2025

@Nico77310 Je fais une relecture. Je vais faire quelques modifications. Il faut que tu merges la PR #80

@ocots
Copy link
Member

ocots commented Jul 2, 2025

@Nico77310 @antoinepichon03 Voici mes remarques, je fais en fonction du code sur la PR #80.

  • La comparaison sur l'objectif peut se faire en même temps que celle sur la solution.
  • La comparaison sur l'init doit pouvoir partager le même code que celle sur la solution. Juste le max_iter qui change. Factoriser le code.
  • La fonction available_problems doit se trouver dans le module OptimalControlProblems et être exportée.

Note

Il faudrait faire ces petits changements pour passer ensuite à l'ajout des modèles avec la dynamique donnée par composante (ce qui est un gros boulot).

@ocots
Copy link
Member

ocots commented Jul 4, 2025

@Nico77310 @antoinepichon03 Avez-vous vu mes messages plus haut ?

@antoinepichon03
Copy link
Collaborator

@Nico77310 @antoinepichon03 Avez-vous vu mes messages plus haut ?

Pardon je n'avais pas vu, je regarde ça de suite.

@ocots
Copy link
Member

ocots commented Jul 4, 2025

@Nico77310 Attention, il y a pleins de problèmes sans init ou avec une init partielle (c'est-à-dire parfois seul le contrôle est initialisé, parfois la variable n'est pas initialisé). Il faut que tous les problèmes aient une init. Mettre 0.1 par défaut.

@ocots
Copy link
Member

ocots commented Jul 11, 2025

Todo :

  • Tests en relatif (voir optinum) : 1%
  • Ne pas afficher dans les tests ceux qui passent
  • Comparaison init sur grille et solution en norme L2 : "init (L2 norm), sol (L2 norm)"

Attention, pour les problèmes sous forme de Lagrange, il faut le pas dans le critère discrétisé :

@objective(model, Min, sum(u[t]^2 for t in 0:nh))

step * sum(u[t]^2 for t in 0:nh)

@ocots
Copy link
Member

ocots commented Aug 9, 2025

Testing: quick
beam Objective rel error 7.9e-08 Test Passed
jmp: 8.889282228832407
oc: 8.889281528262345
bioreactor Objective rel error 4.3e-05 Test Passed
jmp: -19.068998629811944
oc: -19.069827979272738
cart_pendulum Objective rel error 1.1e-08 Test Passed
jmp: 1.7439655936602585
oc: 1.7439655750132184
chain Objective rel error 7e-16 Test Passed
jmp: 5.068577790026833
oc: 5.068577790026836
dielectrophoretic_particle Objective rel error 1.1e-16 Test Passed
jmp: 7.811323681078308
oc: 7.811323681078307
double_oscillator Objective rel error 1.7e-06 Test Passed
jmp: 0.0009109230332518871
oc: 0.0009109214918436894
ducted_fan Objective rel error 7.1e-08 Test Passed
jmp: 1831.8277178167598
oc: 1831.8278486712527
electric_vehicle Objective rel error 4.3e-15 Test Passed
jmp: 1228.599284481314
oc: 1228.5992844813088
glider Objective rel error 2.6e-12 Test Passed
jmp: -1247.9784300209553
oc: -1247.9784300241452
insurance Objective rel error 1.3e-11 Test Passed
jmp: -2.0592075947397492
oc: -2.0592075947669466
jackson Objective rel error 5.3e-14 Test Passed
jmp: -0.19182194736953154
oc: -0.19182194736952143
moonlander Objective rel error 1.1e-11 Test Passed
jmp: 0.9618100531135035
oc: 0.9618100531029019
quadrotor Objective rel error 2.8e-10 Test Passed
jmp: 1.492412315251608
oc: 1.4924123148275
robbins Objective rel error 6.1e-09 Test Passed
jmp: 19.46663316312531
oc: 19.466633043742597
robot Objective rel error 6.8e-08 Test Passed
jmp: 9.141125333735843
oc: 9.141125958355296
rocket Objective rel error 1.5e-15 Test Passed
jmp: -1.0128367166830152
oc: -1.0128367166830137
space_shuttle Objective rel error 6.9e-09 Test Passed
jmp: -0.5958750092583617
oc: -0.5958750133600261
steering Objective rel error 1.4e-11 Test Passed
jmp: 0.5545718610369097
oc: 0.5545718610291392
truck_trailer Objective rel error 1.1e-12 Test Passed
jmp: 59.23028695775679
oc: 59.23028695782442
vanderpol Objective rel error 4.3e-08 Test Passed
jmp: 1.0478115516287518
oc: 1.0478115063199704

@ocots
Copy link
Member

ocots commented Aug 10, 2025

@jbcaillau @PierreMartinon All the init are ok! But for some reason, some objective value are different between JuMP and OptimalControl. I have added the plots of the init in test/figures/init. The costate is not plotted for JuMP for the moment.

Test Summary:                         | Pass  Broken  Total     Time
OptimalControlProblems tests          | 8964       9   8973  3m15.4s
  init                                | 8964       8   8972  3m14.5s
    beam (init)                       |  505       1    506    15.4s
      grid                            |  502            502     0.0s
      state                           |    2              2     0.1s
        x1                            |    1              1     0.1s
        x2                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    bioreactor (init)                 |  506       1    507     9.9s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        y                             |    1              1     0.0s
        s                             |    1              1     0.0s
        b                             |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    cart_pendulum (init)              |  508            508    10.3s
      grid                            |  502            502     0.0s
      state                           |    4              4     0.0s
        x                             |    1              1     0.0s
        v                             |    1              1     0.0s
        θ                             |    1              1     0.0s
        ω                             |    1              1     0.0s
      control                         |    1              1     0.0s
        Fex                           |    1              1     0.0s
      objective                       |    1              1     0.0s
    chain (init)                      |  507            507     6.7s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        x1                            |    1              1     0.0s
        x2                            |    1              1     0.0s
        x3                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    dielectrophoretic_particle (init) |  506            506     7.3s
      grid                            |  502            502     0.0s
      state                           |    2              2     0.0s
        x                             |    1              1     0.0s
        y                             |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    double_oscillator (init)          |  507       1    508     7.8s
      grid                            |  502            502     0.0s
      state                           |    4              4     0.0s
        x1                            |    1              1     0.0s
        x2                            |    1              1     0.0s
        x3                            |    1              1     0.0s
        x4                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    ducted_fan (init)                 |  261            261    10.6s
      grid                            |  252            252     0.0s
      state                           |    6              6     0.0s
        x₁                            |    1              1     0.0s
        v₁                            |    1              1     0.0s
        x₂                            |    1              1     0.0s
        v₂                            |    1              1     0.0s
        α                             |    1              1     0.0s
        vα                            |    1              1     0.0s
      control                         |    2              2     0.0s
        u₁                            |    1              1     0.0s
        u₂                            |    1              1     0.0s
      objective                       |    1              1     0.0s
    electric_vehicle (init)           |  505       1    506     8.2s
      grid                            |  502            502     0.0s
      state                           |    2              2     0.0s
        x                             |    1              1     0.0s
        v                             |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    glider (init)                     |  508            508     9.0s
      grid                            |  502            502     0.0s
      state                           |    4              4     0.0s
        x                             |    1              1     0.0s
        y                             |    1              1     0.0s
        vx                            |    1              1     0.0s
        vy                            |    1              1     0.0s
      control                         |    1              1     0.0s
        cL                            |    1              1     0.0s
      objective                       |    1              1     0.0s
    insurance (init)                  |  510       1    511    11.1s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        I                             |    1              1     0.0s
        m                             |    1              1     0.0s
        x3                            |    1              1     0.0s
      control                         |    5              5     0.0s
        h                             |    1              1     0.0s
        R                             |    1              1     0.0s
        H                             |    1              1     0.0s
        U                             |    1              1     0.0s
        dUdR                          |    1              1     0.0s
      objective                       |            1      1     0.0s
    jackson (init)                    |  507            507     7.3s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        a                             |    1              1     0.0s
        b                             |    1              1     0.0s
        x3                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    moonlander (init)                 |  511            511    10.5s
      grid                            |  502            502     0.0s
      state                           |    6              6     0.0s
        p1                            |    1              1     0.0s
        p2                            |    1              1     0.0s
        dp1                           |    1              1     0.0s
        dp2                           |    1              1     0.0s
        θ                             |    1              1     0.0s
        dθ                            |    1              1     0.0s
      control                         |    2              2     0.0s
        F1                            |    1              1     0.0s
        F2                            |    1              1     0.0s
      objective                       |    1              1     0.0s
    quadrotor (init)                  |  114       1    115    13.0s
      grid                            |  102            102     0.0s
      state                           |    8              8     0.0s
        p1                            |    1              1     0.0s
        p2                            |    1              1     0.0s
        p3                            |    1              1     0.0s
        v1                            |    1              1     0.0s
        v2                            |    1              1     0.0s
        v3                            |    1              1     0.0s
        ϕ                             |    1              1     0.0s
        θ                             |    1              1     0.0s
      control                         |    4              4     0.0s
        at                            |    1              1     0.0s
        dϕ                            |    1              1     0.0s
        dθ                            |    1              1     0.0s
        ψ                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    robbins (init)                    |  506       1    507     7.8s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        x1                            |    1              1     0.0s
        x2                            |    1              1     0.0s
        x3                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s
    robot (init)                      |  262            262     9.9s
      grid                            |  252            252     0.0s
      state                           |    6              6     0.0s
        ρ                             |    1              1     0.0s
        dρ                            |    1              1     0.0s
        θ                             |    1              1     0.0s
        dθ                            |    1              1     0.0s
        ϕ                             |    1              1     0.0s
        dϕ                            |    1              1     0.0s
      control                         |    3              3     0.0s
        uρ                            |    1              1     0.0s
        uθ                            |    1              1     0.0s
        uϕ                            |    1              1     0.0s
      objective                       |    1              1     0.0s
    rocket (init)                     |  507            507     8.6s
      grid                            |  502            502     0.0s
      state                           |    3              3     0.0s
        h                             |    1              1     0.0s
        v                             |    1              1     0.0s
        m                             |    1              1     0.0s
      control                         |    1              1     0.0s
        T                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    space_shuttle (init)              |  511            511    11.3s
      grid                            |  502            502     0.0s
      state                           |    6              6     0.0s
        scaled_h                      |    1              1     0.0s
        ϕ                             |    1              1     0.0s
        θ                             |    1              1     0.0s
        scaled_v                      |    1              1     0.0s
        γ                             |    1              1     0.0s
        ψ                             |    1              1     0.0s
      control                         |    2              2     0.0s
        α                             |    1              1     0.0s
        β                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    steering (init)                   |  508            508     8.2s
      grid                            |  502            502     0.0s
      state                           |    4              4     0.0s
        x1                            |    1              1     0.0s
        x2                            |    1              1     0.0s
        x3                            |    1              1     0.0s
        x4                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |    1              1     0.0s
    truck_trailer (init)              |  210            210    12.0s
      grid                            |  202            202     0.0s
      state                           |    5              5     0.0s
        x2                            |    1              1     0.0s
        y2                            |    1              1     0.0s
        θ2                            |    1              1     0.0s
        θ1                            |    1              1     0.0s
        θ0                            |    1              1     0.0s
      control                         |    2              2     0.0s
        v0                            |    1              1     0.0s
        δ0                            |    1              1     0.0s
      objective                       |    1              1     0.0s
    vanderpol (init)                  |  505       1    506     8.6s
      grid                            |  502            502     0.0s
      state                           |    2              2     0.0s
        x1                            |    1              1     0.0s
        x2                            |    1              1     0.0s
      control                         |    1              1     0.0s
        u                             |    1              1     0.0s
      objective                       |            1      1     0.0s

@ocots
Copy link
Member

ocots commented Aug 11, 2025

Test sur solution:

Test Summary:                             | Pass  Broken  Total     Time
OptimalControlProblems tests              | 8958      15   8973  5m33.7s
  solution                                | 8958      14   8972  5m32.8s
    beam (solution)                       |  506            506    16.1s
      grid                                |  502            502     0.0s
      state                               |    2              2     0.1s
        x1                                |    1              1     0.1s
        x2                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    bioreactor (solution)                 |  504       3    507    13.8s
      grid                                |  502            502     0.0s
      state                               |    1       2      3     0.0s
        y                                 |    1              1     0.0s
        s                                 |            1      1     0.0s
        b                                 |            1      1     0.0s
      control                             |            1      1     0.0s
        u                                 |            1      1     0.0s
      objective                           |    1              1     0.0s
    cart_pendulum (solution)              |  507       1    508    16.7s
      grid                                |  502            502     0.0s
      state                               |    4              4     0.0s
        x                                 |    1              1     0.0s
        v                                 |    1              1     0.0s
        θ                                 |    1              1     0.0s
        ω                                 |    1              1     0.0s
      control                             |            1      1     0.0s
        Fex                               |            1      1     0.0s
      objective                           |    1              1     0.0s
    chain (solution)                      |  507            507     7.3s
      grid                                |  502            502     0.0s
      state                               |    3              3     0.0s
        x1                                |    1              1     0.0s
        x2                                |    1              1     0.0s
        x3                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    dielectrophoretic_particle (solution) |  506            506     8.1s
      grid                                |  502            502     0.0s
      state                               |    2              2     0.0s
        x                                 |    1              1     0.0s
        y                                 |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    double_oscillator (solution)          |  508            508     8.2s
      grid                                |  502            502     0.0s
      state                               |    4              4     0.0s
        x1                                |    1              1     0.0s
        x2                                |    1              1     0.0s
        x3                                |    1              1     0.0s
        x4                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    ducted_fan (solution)                 |  259       2    261    27.7s
      grid                                |  252            252     0.0s
      state                               |    5       1      6     0.0s
        x₁                                |    1              1     0.0s
        v₁                                |    1              1     0.0s
        x₂                                |    1              1     0.0s
        v₂                                |    1              1     0.0s
        α                                 |    1              1     0.0s
        vα                                |            1      1     0.0s
      control                             |    1       1      2     0.0s
        u₁                                |            1      1     0.0s
        u₂                                |    1              1     0.0s
      objective                           |    1              1     0.0s
    electric_vehicle (solution)           |  506            506     8.6s
      grid                                |  502            502     0.0s
      state                               |    2              2     0.0s
        x                                 |    1              1     0.0s
        v                                 |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    glider (solution)                     |  508            508    35.5s
      grid                                |  502            502     0.0s
      state                               |    4              4     0.0s
        x                                 |    1              1     0.0s
        y                                 |    1              1     0.0s
        vx                                |    1              1     0.0s
        vy                                |    1              1     0.0s
      control                             |    1              1     0.0s
        cL                                |    1              1     0.0s
      objective                           |    1              1     0.0s
    insurance (solution)                  |  511            511    13.8s
      grid                                |  502            502     0.0s
      state                               |    3              3     0.0s
        I                                 |    1              1     0.0s
        m                                 |    1              1     0.0s
        x3                                |    1              1     0.0s
      control                             |    5              5     0.0s
        h                                 |    1              1     0.0s
        R                                 |    1              1     0.0s
        H                                 |    1              1     0.0s
        U                                 |    1              1     0.0s
        dUdR                              |    1              1     0.0s
      objective                           |    1              1     0.0s
    jackson (solution)                    |  507            507     8.3s
      grid                                |  502            502     0.0s
      state                               |    3              3     0.0s
        a                                 |    1              1     0.0s
        b                                 |    1              1     0.0s
        x3                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    moonlander (solution)                 |  511            511    13.6s
      grid                                |  502            502     0.0s
      state                               |    6              6     0.0s
        p1                                |    1              1     0.0s
        p2                                |    1              1     0.0s
        dp1                               |    1              1     0.0s
        dp2                               |    1              1     0.0s
        θ                                 |    1              1     0.0s
        dθ                                |    1              1     0.0s
      control                             |    2              2     0.0s
        F1                                |    1              1     0.0s
        F2                                |    1              1     0.0s
      objective                           |    1              1     0.0s
    quadrotor (solution)                  |  111       4    115    14.7s
      grid                                |  102            102     0.0s
      state                               |    6       2      8     0.0s
        p1                                |    1              1     0.0s
        p2                                |    1              1     0.0s
        p3                                |    1              1     0.0s
        v1                                |    1              1     0.0s
        v2                                |    1              1     0.0s
        v3                                |    1              1     0.0s
        ϕ                                 |            1      1     0.0s
        θ                                 |            1      1     0.0s
      control                             |    2       2      4     0.0s
        at                                |    1              1     0.0s
        dϕ                                |            1      1     0.0s
        dθ                                |            1      1     0.0s
        ψ                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    robbins (solution)                    |  507            507     8.5s
      grid                                |  502            502     0.0s
      state                               |    3              3     0.0s
        x1                                |    1              1     0.0s
        x2                                |    1              1     0.0s
        x3                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    robot (solution)                      |  262            262    11.1s
      grid                                |  252            252     0.0s
      state                               |    6              6     0.0s
        ρ                                 |    1              1     0.0s
        dρ                                |    1              1     0.0s
        θ                                 |    1              1     0.0s
        dθ                                |    1              1     0.0s
        ϕ                                 |    1              1     0.0s
        dϕ                                |    1              1     0.0s
      control                             |    3              3     0.0s
        uρ                                |    1              1     0.0s
        uθ                                |    1              1     0.0s
        uϕ                                |    1              1     0.0s
      objective                           |    1              1     0.0s
    rocket (solution)                     |  507            507     9.6s
      grid                                |  502            502     0.0s
      state                               |    3              3     0.0s
        h                                 |    1              1     0.0s
        v                                 |    1              1     0.0s
        m                                 |    1              1     0.0s
      control                             |    1              1     0.0s
        T                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    space_shuttle (solution)              |  511            511    20.7s
      grid                                |  502            502     0.0s
      state                               |    6              6     0.0s
        scaled_h                          |    1              1     0.0s
        ϕ                                 |    1              1     0.0s
        θ                                 |    1              1     0.0s
        scaled_v                          |    1              1     0.0s
        γ                                 |    1              1     0.0s
        ψ                                 |    1              1     0.0s
      control                             |    2              2     0.0s
        α                                 |    1              1     0.0s
        β                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    steering (solution)                   |  508            508     8.9s
      grid                                |  502            502     0.0s
      state                               |    4              4     0.0s
        x1                                |    1              1     0.0s
        x2                                |    1              1     0.0s
        x3                                |    1              1     0.0s
        x4                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s
    truck_trailer (solution)              |  206       4    210  1m11.1s
      grid                                |  202            202     0.0s
      state                               |    3       2      5     0.0s
        x2                                |    1              1     0.0s
        y2                                |    1              1     0.0s
        θ2                                |            1      1     0.0s
        θ1                                |    1              1     0.0s
        θ0                                |            1      1     0.0s
      control                             |            2      2     0.0s
        v0                                |            1      1     0.0s
        δ0                                |            1      1     0.0s
      objective                           |    1              1     0.0s
    vanderpol (solution)                  |  506            506     9.4s
      grid                                |  502            502     0.0s
      state                               |    2              2     0.0s
        x1                                |    1              1     0.0s
        x2                                |    1              1     0.0s
      control                             |    1              1     0.0s
        u                                 |    1              1     0.0s
      objective                           |    1              1     0.0s

@ocots
Copy link
Member

ocots commented Aug 11, 2025

Exemple d'affichage :

┌─ beam (solution)
│
├─  grid
│
│     length(t_oc) = 501
│     length(t_jp) = 501
│     Test Passed
│
├─  state x1
│
│     L2 oc = 0.08863929409941254
│     L2 jp = 0.08863823274376763
│     error = 1.7471610663249085e-6
│     bound = 0.0008863876342159008
│     Test Passed
│
├─  state x2
│
│     L2 oc = 0.34642474519864147
│     L2 jp = 0.3464247217144913
│     error = 1.474951561916172e-5
│     bound = 0.003464247334565664
│     Test Passed
│
├─  control u
│
│     L2 oc = 2.9814898342960507
│     L2 jp = 2.981489855769793
│     error = 0.0002473221366953663
│     bound = 0.029814898450329218
│     Test Passed
│
├─  objective
│
│     o_oc = 8.889281583716409
│     o_jp = 8.889281760058182
│     error = 1.7634177318370803e-7
│     bound = 0.08889281671887296
│     Test Passed
│
└─

@ocots
Copy link
Member

ocots commented Aug 11, 2025

@jbcaillau @PierreMartinon @Nico77310 All problems are ok now. All tests pass. I merge!

@ocots ocots marked this pull request as ready for review August 11, 2025 19:38
@ocots ocots merged commit 0b18581 into main Aug 11, 2025
3 checks passed
@ocots ocots deleted the 78-dev-comparison-tests branch August 11, 2025 19:39
@ocots
Copy link
Member

ocots commented Aug 11, 2025

@PierreMartinon @jbcaillau It is interesting to look at the costate at the first iterate: https://github.com/control-toolbox/OptimalControlProblems.jl/tree/main/test/figures/init.

Some are the same and some are not. I mean between OptimalControl and JuMP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Dev] Comparison tests
4 participants