-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
The storage order for the A_2 and C_2 3-tensors should be reversed. This shoudl be done in conjunction with SciML/DifferenceEquations.jl#54
Instead of a 3-tensor, the natural datastructure is a vector of matrices, which will make the calculation of likelihoods/etc. and simulatino much more convenient. Basically we want to have the transformation of the current structure from C_2 to C_2_new and then get rid of the old C_2.
C_2_new = [C_2[i, :, :] for i in 1:size(C_2, 1)] To do this,
- Change the cache
C_2in https://github.com/HighDimensionalEconLab/DifferentiableStateSpaceModels.jl/blob/v0.4.19/src/types.jl#L223 to beC_2::Union{Nothing,Vector{Array{Float64,2}}}or something like that. - Same with the
C_2_p, A_2, andA_2_pwhere the_pbecome vectors of vectors of matrices. - Find all usage for
C_2and change to use the new datstrcuture. For example, inhttps://github.com/HighDimensionalEconLab/DifferentiableStateSpaceModels.jl/blob/v0.4.19/src/generate_perturbation.jl#L365-L370
fill!(c.C_2, zero(eltype(c.C_2))) # reset as we need to use `+=`
for i in 1:n_z
for j in 1:n_y
c.C_2[i, :, :] += 0.5 * c.Q[i, j] * c.g_xx[j, :, :]
end
endbecomes something like
fill!.(c.C_2, Ref(zero(eltype(c.C_2[1]))) # reset as we need to use `+=`
for i in 1:n_z
for j in 1:n_y
c.C_2[i]+= 0.5 * c.Q[i, j] * c.g_xx[j, :, :]
end
end- Same sort of thing for all uses of
C_2, C_2_p, A_2, A_2_petc.- Don't forget the custom rrule which will use https://github.com/HighDimensionalEconLab/DifferentiableStateSpaceModels.jl/blob/main/src/generate_perturbation_derivatives.jl#L502-L505
- The
A_2andC_2in https://github.com/HighDimensionalEconLab/DifferentiableStateSpaceModels.jl/blob/main/src/types.jl#L454-L496 need to change to theVector{<:AbstractMatrix}or something like that. instead, which should then work with the constructor - Make sure that the unit tests pass as well. Some (e.g. https://github.com/HighDimensionalEconLab/DifferentiableStateSpaceModels.jl/blob/main/test/second_order_perturbation.jl#L367 will need to be adjusted as well).
After this is done, SciML/DifferenceEquations.jl#54 can then be sync'd up - which might be required for the full unit tests to pass.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels