Skip to content

Commit 80b2cc9

Browse files
geoffroylecontedpo
authored andcommitted
rand qp
1 parent 9926db3 commit 80b2cc9

File tree

6 files changed

+49
-4
lines changed

6 files changed

+49
-4
lines changed

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ NLPModels = "a4795742-8479-5a88-8948-cc11e1c8c1a6"
1010
Noise = "81d43f40-5267-43b7-ae1c-8b967f377efa"
1111
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1212
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
13+
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1314

1415
[compat]
1516
ADNLPModels = "^0.3, 0.4, 0.7"
@@ -24,7 +25,8 @@ julia = "^1.3.0"
2425
ADNLPModels = "54578032-b7ea-4c30-94aa-7cbd1cce6c9a"
2526
DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa"
2627
MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458"
28+
QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19"
2729
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
2830

2931
[targets]
30-
test = ["ADNLPModels", "DifferentialEquations", "MLDatasets", "Test"]
32+
test = ["ADNLPModels", "DifferentialEquations", "MLDatasets", "QuadraticModels", "Test"]

docs/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ADNLPModels = "54578032-b7ea-4c30-94aa-7cbd1cce6c9a"
33
DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa"
44
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
55
MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458"
6+
QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19"
67
RegularizedProblems = "ea076b23-609f-44d2-bb12-a4ae45328278"
78

89
[compat]

docs/make.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Documenter
2-
using ADNLPModels, DifferentialEquations, MLDatasets
2+
using ADNLPModels, DifferentialEquations, QuadraticModels
33
using RegularizedProblems
44

55
makedocs(

src/RegularizedProblems.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module RegularizedProblems
22

3-
using LinearAlgebra
3+
using LinearAlgebra, SparseArrays
44
using Random, Requires
55
using NLPModels
66
using Distributions, Noise
@@ -22,6 +22,9 @@ function __init__()
2222
@require MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458" begin
2323
include("nonlin_svm_model.jl")
2424
end
25+
@require QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19" begin
26+
include("qp_rand_model.jl")
27+
end
2528
end
2629

2730
end

src/qp_rand_model.jl

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
export qp_rand_model
2+
using .QuadraticModels
3+
4+
"""
5+
model, x0 = qp_rand_model(n, dens = 1.0e-3)
6+
7+
Return an instance of a `QuadraticModel` representing
8+
9+
½ xᵀQx + cᵀx s.t. x ≥ 1,
10+
11+
where Q = A + A' + I where A is a random square matrix with density `dens`.
12+
13+
## Arguments
14+
15+
* `n :: Int`: size of the problem,
16+
* `dens :: Real`: density of A used to generate the quadratic model.
17+
18+
## Return Value
19+
20+
An instance of a `QuadraticModel`
21+
"""
22+
function qp_rand_model(n::Int, dens::R = 1.0e-3) where {R <: Real}
23+
A = sprand(R, n, n, dens)
24+
H = A + A' + I
25+
c = randn(R, n)
26+
l = .-ones(R, n) #-one(R) .- rand(R, n)
27+
# u = one(R) .+ rand(R, n)
28+
qp = QuadraticModel(c, H; lvar = l)
29+
x0 = zeros(R, n)
30+
qp, x0
31+
end

test/runtests.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using LinearAlgebra, Test
2-
using ADNLPModels, DifferentialEquations, NLPModels, MLDatasets
2+
using ADNLPModels, DifferentialEquations, NLPModels, MLDatasets, QuadraticModels
33
using RegularizedProblems
44

55
function test_well_defined(model, nls_model, sol)
@@ -151,3 +151,11 @@ end
151151
@test all(nls_model.meta.uvar .== Inf)
152152
test_objectives(model, nls_model)
153153
end
154+
155+
@testset "QP-rand" begin
156+
n, dens = 100, 0.1
157+
model, x0 = qp_rand_model(n, dens)
158+
@test all(model.meta.lvar .== -1.0)
159+
@test all(model.meta.uvar .== Inf)
160+
@test all(model.meta.x0 .== x0)
161+
end

0 commit comments

Comments
 (0)