2
2
using JSOSuite
3
3
4
4
# stdlib
5
- using LinearAlgebra, SparseArrays, Test
5
+ using LinearAlgebra, Logging, SparseArrays, Test
6
6
7
7
# others
8
8
using JuMP, NLPModelsJuMP
@@ -11,6 +11,7 @@ using JuMP, NLPModelsJuMP
11
11
using ADNLPModels, NLPModels, NLSProblems, QuadraticModels, OptimizationProblems, SparseMatricesCOO
12
12
using JSOSolvers, Percival, SolverCore
13
13
14
+ #=
14
15
@testset "Test not loaded solvers" begin
15
16
nlp = ADNLPModel(x -> sum(x), ones(2))
16
17
@@ -22,6 +23,7 @@ using JSOSolvers, Percival, SolverCore
22
23
@test_throws ArgumentError minimize("RipQP", nlp)
23
24
end
24
25
26
+ =#
25
27
# optionals
26
28
using KNITRO
27
29
if KNITRO. has_knitro ()
30
32
using CaNNOLeS, DCISolver, FletcherPenaltySolver, NLPModelsIpopt, RipQP
31
33
using SolverBenchmark
32
34
35
+ default_solver_options = (verbose = 0 ,)
36
+ solver_options = Dict (:IpoptSolver => (print_level = 0 ,), :RipQP => ())
37
+ get_solver_options (name) = get (solver_options, name, default_solver_options)
38
+
33
39
meta = OptimizationProblems. meta
34
40
35
41
function test_in_place_solve (nlp, solver_name)
36
42
pkg_name = JSOSuite. optimizers[JSOSuite. optimizers. name_solver .== solver_name, :name_pkg ][1 ]
37
43
pkg_name = replace (pkg_name, " .jl" => " " )
38
44
solver = eval (Meta. parse (pkg_name * " .$solver_name " ))(nlp)
39
- stats = solve! (solver, nlp)
45
+ stats = with_logger (NullLogger ()) do
46
+ solve! (solver, nlp; get_solver_options (solver_name)... )
47
+ end
40
48
@test stats. status == :first_order
41
49
reset! (solver, nlp)
42
50
stats = GenericExecutionStats (nlp)
43
- solve! (solver, nlp, stats)
51
+ with_logger (NullLogger ()) do
52
+ solve! (solver, nlp, stats; get_solver_options (solver_name)... )
53
+ end
44
54
@test stats. status == :first_order
45
55
end
46
56
@@ -49,14 +59,19 @@ function test_in_place_solve(model::JuMP.Model, solver_name)
49
59
pkg_name = JSOSuite. optimizers[JSOSuite. optimizers. name_solver .== solver_name, :name_pkg ][1 ]
50
60
pkg_name = replace (pkg_name, " .jl" => " " )
51
61
solver = eval (Meta. parse (pkg_name * " .$solver_name " ))(nlp)
52
- stats = solve! (solver, model)
62
+ stats = with_logger (NullLogger ()) do
63
+ solve! (solver, model; get_solver_options (solver_name)... )
64
+ end
53
65
@test stats. status == :first_order
54
66
reset! (solver, nlp)
55
67
stats = GenericExecutionStats (nlp)
56
- solve! (solver, model, stats)
68
+ with_logger (NullLogger ()) do
69
+ solve! (solver, model, stats; get_solver_options (solver_name)... )
70
+ end
57
71
@test stats. status == :first_order
58
72
end
59
73
74
+ #=
60
75
@testset "Test in-place solve!" begin
61
76
nlp = OptimizationProblems.ADNLPProblems.arglina()
62
77
model = OptimizationProblems.PureJuMP.arglina()
81
96
end
82
97
end
83
98
end
99
+ =#
84
100
85
101
include (" qp_tests.jl" )
86
102
87
103
@testset " Test `Float32`" begin
88
104
nlp = OptimizationProblems. ADNLPProblems. genrose (type = Val (Float32))
89
105
atol, rtol = √ eps (Float32), √ eps (Float32)
90
- for solver in eachrow (JSOSuite. select_optimizers (nlp))
106
+ for solver in eachrow (JSOSuite. select_optimizers (nlp, verbose = 0 ))
91
107
if solver. nonlinear_obj
92
- minimize (solver. name, nlp, verbose = 0 , atol = atol, rtol = rtol)
108
+ minimize (
109
+ solver. name,
110
+ nlp,
111
+ verbose = 0 ,
112
+ atol = atol,
113
+ rtol = rtol;
114
+ get_solver_options (solver_name)... ,
115
+ )
93
116
@test true
94
117
else
95
118
nlp_qm = QuadraticModel (nlp, nlp. meta. x0)
96
- minimize (solver. name, nlp_qm, verbose = 0 , atol = atol, rtol = rtol)
119
+ minimize (
120
+ solver. name,
121
+ nlp_qm,
122
+ verbose = 0 ,
123
+ atol = atol,
124
+ rtol = rtol;
125
+ get_solver_options (solver_name)... ,
126
+ )
97
127
@test true
98
128
end
99
129
end
100
130
end
101
131
132
+ #=
102
133
@testset "JSOSuite JuMP API" begin
103
134
model = OptimizationProblems.PureJuMP.genrose()
104
135
jum = MathOptNLPModel(model)
105
- @test JSOSuite. select_optimizers (model) == JSOSuite. select_optimizers (jum)
106
- for solver in eachrow (JSOSuite. select_optimizers (model))
107
- minimize (solver. name, model, verbose = 0 )
136
+ @test JSOSuite.select_optimizers(model, verbose=0 ) == JSOSuite.select_optimizers(jum, verbose=0 )
137
+ for solver in eachrow(JSOSuite.select_optimizers(model, verbose=0 ))
138
+ minimize(solver.name, model, verbose = 0; get_solver_options(solver_name)... )
108
139
@test true
109
140
end
110
141
end
@@ -124,27 +155,27 @@ end
124
155
125
156
@testset "Basic solve tests" begin
126
157
f = x -> 100 * (x[2] - x[1]^2)^2 + (x[1] - 1)^2
127
- stats = minimize (f, [- 1.2 ; 1.0 ], verbose = 0 )
158
+ stats = minimize(f, [-1.2; 1.0], verbose = 0; get_solver_options(solver_name)... )
128
159
@test stats.status_reliable && (stats.status == :first_order)
129
160
130
- stats = minimize (" DCISolver" , f, [- 1.2 ; 1.0 ], verbose = 0 )
161
+ stats = minimize("DCISolver", f, [-1.2; 1.0], verbose = 0; get_solver_options(solver_name)... )
131
162
@test stats.status_reliable && (stats.status == :first_order)
132
163
133
164
F = x -> [10 * (x[2] - x[1]^2); x[1] - 1]
134
- stats = minimize (F, [- 1.2 ; 1.0 ], 2 , verbose = 0 )
165
+ stats = minimize(F, [-1.2; 1.0], 2, verbose = 0; get_solver_options(solver_name)... )
135
166
@test stats.status_reliable && (stats.status == :first_order)
136
167
137
- stats = minimize (" DCISolver" , F, [- 1.2 ; 1.0 ], 2 , verbose = 0 )
168
+ stats = minimize("DCISolver", F, [-1.2; 1.0], 2, verbose = 0; get_solver_options(solver_name)... )
138
169
@test stats.status_reliable && (stats.status == :first_order)
139
170
end
140
171
141
172
@testset "Test solve OptimizationProblems: $name" for name in first(meta[meta.nvar .< 10, :name], 5)
142
173
name in ["bennett5", "channel", "hs253", "hs73", "misra1c"] && continue
143
174
nlp = OptimizationProblems.ADNLPProblems.eval(Meta.parse(name))()
144
- minimize (nlp, verbose = 0 )
175
+ minimize(nlp, verbose = 0; get_solver_options(solver_name)... )
145
176
@test true
146
177
model = OptimizationProblems.PureJuMP.eval(Meta.parse(name))()
147
- minimize (model, verbose = 0 )
178
+ minimize(model, verbose = 0; get_solver_options(solver_name)... )
148
179
@test true
149
180
end
150
181
@@ -169,7 +200,8 @@ for solver in eachrow(JSOSuite.optimizers)
169
200
rtol = 1e-5,
170
201
max_time = 12.0,
171
202
max_eval = 10,
172
- verbose = 0 ,
203
+ verbose = 0;
204
+ get_solver_options(solver_name)...)
173
205
)
174
206
@test true
175
207
else
@@ -181,7 +213,8 @@ for solver in eachrow(JSOSuite.optimizers)
181
213
rtol = 1e-5,
182
214
max_time = 12.0,
183
215
max_eval = 10,
184
- verbose = 0 ,
216
+ verbose = 0;
217
+ get_solver_options(solver_name)...)
185
218
)
186
219
@test true
187
220
end
208
241
max_iter = 100,
209
242
max_eval = 10,
210
243
callback = callback,
211
- verbose = 0 ,
244
+ verbose = 0;
245
+ get_solver_options(solver_name)...)
212
246
)
213
247
@test true
214
248
elseif solver.specialized_nls
223
257
max_iter = 100,
224
258
max_eval = 10,
225
259
callback = callback,
226
- verbose = 0 ,
260
+ verbose = 0;
261
+ get_solver_options(solver_name)...)
227
262
)
228
263
@test true
229
264
else # RipQP
@@ -237,10 +272,12 @@ end
237
272
max_iter = 100,
238
273
max_eval = 10,
239
274
callback = callback,
240
- verbose = 0 ,
275
+ verbose = 0;
276
+ get_solver_options(solver_name)...)
241
277
)
242
278
@test true
243
279
end
244
280
end
245
281
end
246
282
end
283
+ =#
0 commit comments