Skip to content

Commit 9ccf898

Browse files
committed
refactor: aduse optimal control itnerface
1 parent 3bdfc46 commit 9ccf898

File tree

4 files changed

+224
-310
lines changed

4 files changed

+224
-310
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} <:
@@ -87,10 +88,10 @@ function MTK.CasADiDynamicOptProblem(sys::ODESystem, u0map, tspan, pmap;
8788
CasADiDynamicOptProblem(f, u0, tspan, p, model, kwargs...)
8889
end
8990

90-
MTK.generate_U(model, dims) = 1
91-
MTK.generate_V(model, dims) = 1
92-
MTK.generate_timescale(model, dims) = 1
9391
MTK.generate_internal_model(::Type{CasADiModel}) = CasADi.opti()
92+
MTK.generate_state_variable(model, u0, ns, nt)
93+
MTK.generate_input_variable(model, c0, nc, nt) = 1
94+
MTK.generate_timescale(model, dims) = 1
9495

9596
function init_model(sys, tspan, steps, u0map, pmap, u0; is_free_t = false)
9697
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)