Skip to content

Commit df1a0e4

Browse files
committed
refactor: aduse optimal control itnerface
1 parent 2ccdbba commit df1a0e4

File tree

4 files changed

+223
-315
lines changed

4 files changed

+223
-315
lines changed

ext/MTKCasADiDynamicOptExt.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct CasADiModel
2525
U::MXLinearInterpolation
2626
V::MXLinearInterpolation
2727
tₛ::MX
28+
is_free_final::Bool
2829
end
2930

3031
struct CasADiDynamicOptProblem{uType, tType, isinplace, P, F, K} <:
@@ -90,10 +91,10 @@ function MTK.CasADiDynamicOptProblem(sys::System, u0map, tspan, pmap;
9091
CasADiDynamicOptProblem(f, u0, tspan, p, model, kwargs...)
9192
end
9293

93-
MTK.generate_U(model, dims) = 1
94-
MTK.generate_V(model, dims) = 1
95-
MTK.generate_timescale(model, dims) = 1
9694
MTK.generate_internal_model(::Type{CasADiModel}) = CasADi.opti()
95+
MTK.generate_state_variable(model, u0, ns, nt)
96+
MTK.generate_input_variable(model, c0, nc, nt) = 1
97+
MTK.generate_timescale(model, dims) = 1
9798

9899
function init_model(sys, tspan, steps, u0map, pmap, u0; is_free_t = false)
99100
ctrls = MTK.unbound_inputs(sys)
@@ -317,7 +318,7 @@ function add_solve_constraints(prob, tableau)
317318
for k in 1:(length(tsteps) - 1)
318319
τ = tsteps[k]
319320
Kᵢ = variable!(solver_opti, nᵤ, length(α))
320-
ΔUs = A * Kᵢ' # the stepsize at each stage of the implicit method
321+
ΔUs = A * Kᵢ'
321322
for (i, h) in enumerate(c)
322323
ΔU = ΔUs[i, :]'
323324
Uₙ = U.u[:, k] + ΔU * dt

0 commit comments

Comments
 (0)