-
Notifications
You must be signed in to change notification settings - Fork 0
Error when using euler_implicit with ExaModels #172
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Hi, I'm encountering an error when trying to use euler_implicit as the discretization scheme when using ExaModels.
Here's a MRE:
using OptimalControl, ExaModels, MadNLPGPU
t0 = 0
tf = 1
x0 = [-1, 0]
ocp = @def begin
t ∈ [ t0, tf ], time
x = (q, v) ∈ R², state
u ∈ R, control
x(t0) == x0
x(tf) == [0, 0]
∂(q)(t) == v(t)
∂(v)(t) == u(t)
0.5∫( u(t)^2 ) → min
end
which gets me the following error:
▫ This is OptimalControl version v1.1.6 running with: direct, exa, madnlp.
▫ The optimal control problem is solved with CTDirect version v0.17.4.
┌─ The NLP is modelled with ExaModels and solved with MadNLP suite.
│
├─ Number of time steps⋅: 250
└─ Discretisation scheme: euler_implicit
▫ Line 6: (∂(q))(t) == v(t)
ERROR: "unknown numerical scheme: euler_implicit (possible choices are :euler, :euler_b, :midpoint, :trapeze)"
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/CTParser/tqsnb/src/onepass.jl:110 [inlined]
[2] macro expansion
@ ~/nmpc-case-studies/testProblem.jl:13 [inlined]
[3] (::var"#3353#3381")(; scheme::Symbol, grid_size::Int64, backend::Nothing, init::Tuple{…}, base_type::Type)
@ Main ~/.julia/packages/CTParser/tqsnb/src/onepass.jl:1280
[4] build_nlp!(docp::CTDirect.DOCP{…}, x0::Vector{…}; grid_size::Int64, disc_method::Symbol, exa_backend::Nothing, kwargs::@Kwargs{…})
@ CTDirectExtExa ~/.julia/packages/CTDirect/DgVuH/ext/CTDirectExtExa.jl:55
[5] direct_transcription(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, kwargs::@Kwargs{…})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:394
[6] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, adnlp_backend::Symbol, exa_backend::Nothing, kwargs::@Kwargs{})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:225
[7] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, kwargs::@Kwargs{…})
@ OptimalControl ~/.julia/packages/OptimalControl/QCamZ/src/solve.jl:135
[8] top-level scope
@ ~/nmpc-case-studies/testProblem.jl:18
caused by: "unknown numerical scheme: euler_implicit (possible choices are :euler, :euler_b, :midpoint, :trapeze)"
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/CTParser/tqsnb/src/onepass.jl:850 [inlined]
[2] macro expansion
@ ~/nmpc-case-studies/testProblem.jl:13 [inlined]
[3] (::var"#3353#3381")(; scheme::Symbol, grid_size::Int64, backend::Nothing, init::Tuple{…}, base_type::Type)
@ Main ~/.julia/packages/CTParser/tqsnb/src/onepass.jl:1280
[4] build_nlp!(docp::CTDirect.DOCP{…}, x0::Vector{…}; grid_size::Int64, disc_method::Symbol, exa_backend::Nothing, kwargs::@Kwargs{…})
@ CTDirectExtExa ~/.julia/packages/CTDirect/DgVuH/ext/CTDirectExtExa.jl:55
[5] direct_transcription(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, kwargs::@Kwargs{…})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:394
[6] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, adnlp_backend::Symbol, exa_backend::Nothing, kwargs::@Kwargs{})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:225
[7] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, kwargs::@Kwargs{…})
@ OptimalControl ~/.julia/packages/OptimalControl/QCamZ/src/solve.jl:135
[8] top-level scope
@ ~/nmpc-case-studies/testProblem.jl:18
Some type information was truncated. Use `show(err)` to see complete types.
If I specify euler_b instead, this is what I get:
▫ This is OptimalControl version v1.1.6 running with: direct, exa, madnlp.
▫ The optimal control problem is solved with CTDirect version v0.17.4.
┌─ The NLP is modelled with ExaModels and solved with MadNLP suite.
│
├─ Number of time steps⋅: 250
└─ Discretisation scheme: euler_b
▫ ERROR: Unknown discretization method: euler_b
Valid options are disc_method={:trapeze, :midpoint, :euler | :euler_explicit | :euler_forward, :euler_implicit | :euler_backward, :gauss_legendre_2, :gauss_legendre_3}
Symbol
Stacktrace:
[1] error(::String, ::Symbol, ::String, ::Type)
@ Base ./error.jl:44
[2] CTDirect.DOCP(ocp::CTModels.Model{…}, nlp_model_backend::CTDirect.ExaBackend; grid_size::Int64, time_grid::Nothing, disc_method::Symbol, lagrange_to_mayer::Bool)
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/docp.jl:404
[3] DOCP
@ ~/.julia/packages/CTDirect/DgVuH/src/docp.jl:327 [inlined]
[4] direct_transcription(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, kwargs::@Kwargs{…})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:361
[5] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, grid_size::Int64, disc_method::Symbol, time_grid::Nothing, init::Nothing, lagrange_to_mayer::Bool, adnlp_backend::Symbol, exa_backend::Nothing, kwargs::@Kwargs{})
@ CTDirect ~/.julia/packages/CTDirect/DgVuH/src/solve.jl:225
[6] solve(::CTModels.Model{…}, ::Symbol, ::Vararg{…}; display::Bool, kwargs::@Kwargs{…})
@ OptimalControl ~/.julia/packages/OptimalControl/QCamZ/src/solve.jl:135
[7] top-level scope
@ ~/nmpc-case-studies/testProblem.jl:19
Some type information was truncated. Use `show(err)` to see complete types.
cc: @pulsipher
Reactions are currently unavailable
Metadata
Metadata
Labels
bugSomething isn't workingSomething isn't working