14
14
15
15
isdense (data:: QPData{T, S, M1, M2} ) where {T, S, M1, M2} = M1 <: DenseMatrix || M2 <: DenseMatrix
16
16
17
- function Base. convert (:: Type{QPData{T, S, MCOO, MCOO}} , data:: QPData{T, S, M1, M2} ) where {T, S, M1 <: AbstractMatrix , M2 <: AbstractMatrix , MCOO <: SparseMatrixCOO{T} }
17
+ function Base. convert (
18
+ :: Type{QPData{T, S, MCOO, MCOO}} ,
19
+ data:: QPData{T, S, M1, M2} ,
20
+ ) where {T, S, M1 <: AbstractMatrix , M2 <: AbstractMatrix , MCOO <: SparseMatrixCOO{T} }
18
21
HCOO = (M1 <: SparseMatrixCOO ) ? data. H : SparseMatrixCOO (data. H)
19
22
ACOO = (M2 <: SparseMatrixCOO ) ? data. A : SparseMatrixCOO (data. A)
20
23
return QPData (data. c0, data. c, HCOO, ACOO)
21
24
end
22
- Base. convert (:: Type{QPData{T, S, MCOO, MCOO}} , data:: QPData{T, S, M1, M2} ) where {T, S, M1 <: SparseMatrixCOO , M2 <: SparseMatrixCOO , MCOO <: SparseMatrixCOO{T} } = data
25
+ Base. convert (
26
+ :: Type{QPData{T, S, MCOO, MCOO}} ,
27
+ data:: QPData{T, S, M1, M2} ,
28
+ ) where {T, S, M1 <: SparseMatrixCOO , M2 <: SparseMatrixCOO , MCOO <: SparseMatrixCOO{T} } = data
23
29
24
30
abstract type AbstractQuadraticModel{T, S} <: AbstractNLPModel{T, S} end
25
31
@@ -64,7 +70,10 @@ mutable struct QuadraticModel{T, S, M1, M2} <: AbstractQuadraticModel{T, S}
64
70
data:: QPData{T, S, M1, M2}
65
71
end
66
72
67
- function Base. convert (:: Type{QuadraticModel{T, S, Mconv, Mconv}} , qm:: QuadraticModel{T, S, M1, M2} ) where {T, S, M1 <: AbstractMatrix , M2 <: AbstractMatrix , Mconv}
73
+ function Base. convert (
74
+ :: Type{QuadraticModel{T, S, Mconv, Mconv}} ,
75
+ qm:: QuadraticModel{T, S, M1, M2} ,
76
+ ) where {T, S, M1 <: AbstractMatrix , M2 <: AbstractMatrix , Mconv}
68
77
data_conv = convert (QPData{T, S, Mconv, Mconv}, qm. data)
69
78
return QuadraticModel (qm. meta, qm. counters, data_conv)
70
79
end
@@ -260,18 +269,18 @@ end
260
269
261
270
function fill_structure! (S:: SparseMatrixCSC , rows, cols)
262
271
count = 1
263
- @inbounds for col = 1 : size (S, 2 ), k = S. colptr[col] : (S. colptr[col+ 1 ] - 1 )
264
- rows[count] = S. rowval[k]
265
- cols[count] = col
266
- count += 1
272
+ @inbounds for col = 1 : size (S, 2 ), k = S. colptr[col]: (S. colptr[col + 1 ] - 1 )
273
+ rows[count] = S. rowval[k]
274
+ cols[count] = col
275
+ count += 1
267
276
end
268
277
end
269
278
270
279
function fill_coord! (S:: SparseMatrixCSC , vals, obj_weight)
271
280
count = 1
272
- @inbounds for col = 1 : size (S, 2 ), k = S. colptr[col] : (S. colptr[col+ 1 ] - 1 )
273
- vals[count] = obj_weight * S. nzval[k]
274
- count += 1
281
+ @inbounds for col = 1 : size (S, 2 ), k = S. colptr[col]: (S. colptr[col + 1 ] - 1 )
282
+ vals[count] = obj_weight * S. nzval[k]
283
+ count += 1
275
284
end
276
285
end
277
286
@@ -290,8 +299,8 @@ function NLPModels.hess_structure!(
290
299
cols:: AbstractVector{<:Integer} ,
291
300
) where {T, S, M1 <: Matrix }
292
301
count = 1
293
- for j= 1 : qp. meta. nvar
294
- for i= j : qp. meta. nvar
302
+ for j = 1 : ( qp. meta. nvar)
303
+ for i = j : ( qp. meta. nvar)
295
304
rows[count] = i
296
305
cols[count] = j
297
306
count += 1
@@ -330,9 +339,9 @@ function NLPModels.hess_coord!(
330
339
) where {T, S, M1 <: Matrix }
331
340
NLPModels. increment! (qp, :neval_hess )
332
341
count = 1
333
- for j= 1 : qp. meta. nvar
334
- for i= j : qp. meta. nvar
335
- vals[count] = obj_weight * qp. data. H[i,j]
342
+ for j = 1 : ( qp. meta. nvar)
343
+ for i = j : ( qp. meta. nvar)
344
+ vals[count] = obj_weight * qp. data. H[i, j]
336
345
count += 1
337
346
end
338
347
end
@@ -372,8 +381,8 @@ function NLPModels.jac_structure!(
372
381
cols:: AbstractVector{<:Integer} ,
373
382
) where {T, S, M1, M2 <: Matrix }
374
383
count = 1
375
- for j= 1 : qp. meta. nvar
376
- for i= 1 : qp. meta. ncon
384
+ for j = 1 : ( qp. meta. nvar)
385
+ for i = 1 : ( qp. meta. ncon)
377
386
rows[count] = i
378
387
cols[count] = j
379
388
count += 1
385
394
function NLPModels. jac_coord! (
386
395
qp:: QuadraticModel{T, S, M1, M2} ,
387
396
x:: AbstractVector ,
388
- vals:: AbstractVector
389
- ) where {T, S, M1, M2 <: SparseMatrixCOO }
397
+ vals:: AbstractVector ,
398
+ ) where {T, S, M1, M2 <: SparseMatrixCOO }
390
399
NLPModels. increment! (qp, :neval_jac )
391
400
vals .= qp. data. A. vals
392
401
return vals
395
404
function NLPModels. jac_coord! (
396
405
qp:: QuadraticModel{T, S, M1, M2} ,
397
406
x:: AbstractVector ,
398
- vals:: AbstractVector
399
- ) where {T, S, M1, M2 <: SparseMatrixCSC }
407
+ vals:: AbstractVector ,
408
+ ) where {T, S, M1, M2 <: SparseMatrixCSC }
400
409
NLPModels. increment! (qp, :neval_jac )
401
410
fill_coord! (qp. data. A, vals, one (T))
402
411
return vals
@@ -405,12 +414,12 @@ end
405
414
function NLPModels. jac_coord! (
406
415
qp:: QuadraticModel{T, S, M1, M2} ,
407
416
x:: AbstractVector ,
408
- vals:: AbstractVector
409
- ) where {T, S, M1, M2 <: Matrix }
417
+ vals:: AbstractVector ,
418
+ ) where {T, S, M1, M2 <: Matrix }
410
419
NLPModels. increment! (qp, :neval_jac )
411
420
count = 1
412
- for j= 1 : qp. meta. nvar
413
- for i= 1 : qp. meta. ncon
421
+ for j = 1 : ( qp. meta. nvar)
422
+ for i = 1 : ( qp. meta. ncon)
414
423
vals[count] = qp. data. A[i, j]
415
424
count += 1
416
425
end
@@ -538,7 +547,10 @@ function slackdata(data::QPData{T}, meta::NLPModelMeta{T}, ns::Int) where {T}
538
547
)
539
548
end
540
549
541
- function NLPModelsModifiers. SlackModel (qp:: AbstractQuadraticModel{T, S} , name = qp. meta. name * " -slack" ) where {T, S}
550
+ function NLPModelsModifiers. SlackModel (
551
+ qp:: AbstractQuadraticModel{T, S} ,
552
+ name = qp. meta. name * " -slack" ,
553
+ ) where {T, S}
542
554
qp. meta. ncon == length (qp. meta. jfix) && return qp
543
555
nfix = length (qp. meta. jfix)
544
556
ns = qp. meta. ncon - nfix
0 commit comments