Skip to content

Commit baca399

Browse files
committed
changed: store defect matrices as sparse ones
1 parent e6a2fc0 commit baca399

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/controller/construct.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ struct ControllerConstraint{NT<:Real, GCfunc<:Union{Nothing, Function}}
105105
vx̂ ::Matrix{NT}
106106
bx̂ ::Vector{NT}
107107
# matrices for the zero defect constraints (N/A for single shooting transcriptions):
108-
Ẽŝ ::Matrix{NT}
108+
Ẽŝ ::SparseMatrixCSC{NT}
109109
Fŝ ::Vector{NT}
110-
Gŝ ::Matrix{NT}
111-
Jŝ ::Matrix{NT}
112-
Kŝ ::Matrix{NT}
110+
Gŝ ::SparseMatrixCSC{NT}
111+
Jŝ ::SparseMatrixCSC{NT}
112+
Kŝ ::SparseMatrixCSC{NT}
113113
Vŝ ::Matrix{NT}
114114
Bŝ ::Vector{NT}
115115
# bounds over the prediction horizon (deviation vectors from operating points):

src/controller/transcription.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ function init_defectmat(
492492
nu, nx̂, nd = model.nu, estim.nx̂, model.nd
493493
Â, B̂u, B̂d = estim.Â, estim.B̂u, estim.B̂d
494494
# --- current state estimates x̂0 ---
495-
Kŝ = [Â; zeros(NT, nx̂*(Hp-1), nx̂)]
495+
Kŝ = [Â; spzeros(NT, nx̂*(Hp-1), nx̂)]
496496
# --- previous manipulated inputs lastu0 ---
497497
Vŝ = repeat(B̂u, Hp)
498498
# --- decision variables Z ---
@@ -508,9 +508,10 @@ function init_defectmat(
508508
iCol = (1:nx̂) .+ nx̂*(j-1) .+ nu*Hc
509509
Eŝ[iRow, iCol] =
510510
end
511+
Eŝ = sparse(Eŝ)
511512
# --- current measured disturbances d0 and predictions D̂0 ---
512-
Gŝ = [B̂d; zeros(NT, (Hp-1)*nx̂, nd)]
513-
Jŝ = [zeros(nx̂, nd*Hp); repeatdiag(B̂d, Hp-1) zeros(NT, nx̂*(Hp-1), nd)]
513+
Gŝ = [B̂d; spzeros(NT, (Hp-1)*nx̂, nd)]
514+
Jŝ = [spzeros(nx̂, nd*Hp); repeatdiag(B̂d, Hp-1) spzeros(NT, nx̂*(Hp-1), nd)]
514515
# --- state x̂op and state update f̂op operating points ---
515516
Bŝ = repeat(estim.f̂op - estim.x̂op, Hp)
516517
return Eŝ, Gŝ, Jŝ, Kŝ, Vŝ, Bŝ
@@ -526,10 +527,10 @@ function init_defectmat(
526527
) where {NT<:Real}
527528
nx̂, nu, nd = estim.nx̂, model.nu, model.nd
528529
nZ = get_nZ(estim, transcription, Hp, Hc)
529-
Eŝ = zeros(NT, 0, nZ)
530-
Gŝ = zeros(NT, 0, nd)
531-
Jŝ = zeros(NT, 0, nd*Hp)
532-
Kŝ = zeros(NT, 0, nx̂)
530+
Eŝ = spzeros(NT, 0, nZ)
531+
Gŝ = spzeros(NT, 0, nd)
532+
Jŝ = spzeros(NT, 0, nd*Hp)
533+
Kŝ = spzeros(NT, 0, nx̂)
533534
Vŝ = zeros(NT, 0, nu)
534535
Bŝ = zeros(NT, 0)
535536
return Eŝ, Gŝ, Jŝ, Kŝ, Vŝ, Bŝ

0 commit comments

Comments
 (0)