214214
215215# # Various matrices
216216
217- function banded_matrix (m, n, b)
218- pairs = [k => rand (min (m, n) - k) for k in 0 : b]
219- return spdiagm (m, n, pairs... )
217+ function banded_matrix (:: Type{T} , n, b) where {T}
218+ @assert b <= n
219+ pairs = [k => rand (T, n - k) for k in 0 : b]
220+ return spdiagm (n, n, pairs... )
220221end
221222
222223# ## Linear map
245246function squarelinearmap_scenarios (x:: AbstractVector , band_sizes)
246247 n = length (x)
247248 scens = Scenario[]
248- for A in vcat ( banded_matrix .(2 n, n, band_sizes ), banded_matrix .(n ÷ 2 , n, band_sizes) )
249+ for A in banded_matrix .(eltype (x ), n, band_sizes)
249250 f = SquareLinearMap (A)
250251 f! = f
251252 y = f (x)
305306function squarequadraticform_scenarios (x:: AbstractVector , band_sizes)
306307 n = length (x)
307308 scens = Scenario[]
308- for A in banded_matrix .(n , n, band_sizes)
309+ for A in banded_matrix .(eltype (x) , n, band_sizes)
309310 f = SquareQuadraticForm (A)
310311 grad = squarequadraticform_gradient (x, A)
311312 hess = sparse (squarequadraticform_hessian (x, A))
324325Create a vector of [`Scenario`](@ref)s with sparse array types, focused on sparse Jacobians and Hessians.
325326"""
326327function sparse_scenarios (
327- rng:: AbstractRNG = default_rng (); band_sizes= 0 : 4 : 36 , include_constantified= false
328+ rng:: AbstractRNG = default_rng (); band_sizes= [ 5 , 10 , 20 ] , include_constantified= false
328329)
329330 scens = vcat (
330331 sparse_vec_to_vec_scenarios (rand (rng, 6 )),
@@ -335,8 +336,8 @@ function sparse_scenarios(
335336 sparse_mat_to_num_scenarios (rand (rng, 2 , 3 )),
336337 )
337338 if ! isempty (band_sizes)
338- append! (scens, squarelinearmap_scenarios (rand (rng, 100 ), band_sizes))
339- append! (scens, squarequadraticform_scenarios (rand (rng, 100 ), band_sizes))
339+ append! (scens, squarelinearmap_scenarios (rand (rng, 50 ), band_sizes))
340+ append! (scens, squarequadraticform_scenarios (rand (rng, 50 ), band_sizes))
340341 end
341342 include_constantified && append! (scens, constantify (scens))
342343 return scens
0 commit comments