22using JSOSuite
33
44# stdlib
5- using LinearAlgebra, SparseArrays, Test
5+ using LinearAlgebra, Logging, SparseArrays, Test
66
77# others
88using JuMP, NLPModelsJuMP
@@ -11,6 +11,7 @@ using JuMP, NLPModelsJuMP
1111using ADNLPModels, NLPModels, NLSProblems, QuadraticModels, OptimizationProblems, SparseMatricesCOO
1212using JSOSolvers, Percival, SolverCore
1313
14+ #=
1415@testset "Test not loaded solvers" begin
1516 nlp = ADNLPModel(x -> sum(x), ones(2))
1617
@@ -22,6 +23,7 @@ using JSOSolvers, Percival, SolverCore
2223 @test_throws ArgumentError minimize("RipQP", nlp)
2324end
2425
26+ =#
2527# optionals
2628using KNITRO
2729if KNITRO. has_knitro ()
3032using CaNNOLeS, DCISolver, FletcherPenaltySolver, NLPModelsIpopt, RipQP
3133using SolverBenchmark
3234
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+
3339meta = OptimizationProblems. meta
3440
3541function test_in_place_solve (nlp, solver_name)
3642 pkg_name = JSOSuite. optimizers[JSOSuite. optimizers. name_solver .== solver_name, :name_pkg ][1 ]
3743 pkg_name = replace (pkg_name, " .jl" => " " )
3844 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
4048 @test stats. status == :first_order
4149 reset! (solver, nlp)
4250 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
4454 @test stats. status == :first_order
4555end
4656
@@ -49,14 +59,19 @@ function test_in_place_solve(model::JuMP.Model, solver_name)
4959 pkg_name = JSOSuite. optimizers[JSOSuite. optimizers. name_solver .== solver_name, :name_pkg ][1 ]
5060 pkg_name = replace (pkg_name, " .jl" => " " )
5161 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
5365 @test stats. status == :first_order
5466 reset! (solver, nlp)
5567 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
5771 @test stats. status == :first_order
5872end
5973
74+ #=
6075@testset "Test in-place solve!" begin
6176 nlp = OptimizationProblems.ADNLPProblems.arglina()
6277 model = OptimizationProblems.PureJuMP.arglina()
8196 end
8297 end
8398end
99+ =#
84100
85101include (" qp_tests.jl" )
86102
87103@testset " Test `Float32`" begin
88104 nlp = OptimizationProblems. ADNLPProblems. genrose (type = Val (Float32))
89105 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 ))
91107 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+ )
93116 @test true
94117 else
95118 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+ )
97127 @test true
98128 end
99129 end
100130end
101131
132+ #=
102133@testset "JSOSuite JuMP API" begin
103134 model = OptimizationProblems.PureJuMP.genrose()
104135 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)... )
108139 @test true
109140 end
110141end
@@ -124,27 +155,27 @@ end
124155
125156@testset "Basic solve tests" begin
126157 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)... )
128159 @test stats.status_reliable && (stats.status == :first_order)
129160
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)... )
131162 @test stats.status_reliable && (stats.status == :first_order)
132163
133164 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)... )
135166 @test stats.status_reliable && (stats.status == :first_order)
136167
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)... )
138169 @test stats.status_reliable && (stats.status == :first_order)
139170end
140171
141172@testset "Test solve OptimizationProblems: $name" for name in first(meta[meta.nvar .< 10, :name], 5)
142173 name in ["bennett5", "channel", "hs253", "hs73", "misra1c"] && continue
143174 nlp = OptimizationProblems.ADNLPProblems.eval(Meta.parse(name))()
144- minimize (nlp, verbose = 0 )
175+ minimize(nlp, verbose = 0; get_solver_options(solver_name)... )
145176 @test true
146177 model = OptimizationProblems.PureJuMP.eval(Meta.parse(name))()
147- minimize (model, verbose = 0 )
178+ minimize(model, verbose = 0; get_solver_options(solver_name)... )
148179 @test true
149180end
150181
@@ -169,7 +200,8 @@ for solver in eachrow(JSOSuite.optimizers)
169200 rtol = 1e-5,
170201 max_time = 12.0,
171202 max_eval = 10,
172- verbose = 0 ,
203+ verbose = 0;
204+ get_solver_options(solver_name)...)
173205 )
174206 @test true
175207 else
@@ -181,7 +213,8 @@ for solver in eachrow(JSOSuite.optimizers)
181213 rtol = 1e-5,
182214 max_time = 12.0,
183215 max_eval = 10,
184- verbose = 0 ,
216+ verbose = 0;
217+ get_solver_options(solver_name)...)
185218 )
186219 @test true
187220 end
208241 max_iter = 100,
209242 max_eval = 10,
210243 callback = callback,
211- verbose = 0 ,
244+ verbose = 0;
245+ get_solver_options(solver_name)...)
212246 )
213247 @test true
214248 elseif solver.specialized_nls
223257 max_iter = 100,
224258 max_eval = 10,
225259 callback = callback,
226- verbose = 0 ,
260+ verbose = 0;
261+ get_solver_options(solver_name)...)
227262 )
228263 @test true
229264 else # RipQP
@@ -237,10 +272,12 @@ end
237272 max_iter = 100,
238273 max_eval = 10,
239274 callback = callback,
240- verbose = 0 ,
275+ verbose = 0;
276+ get_solver_options(solver_name)...)
241277 )
242278 @test true
243279 end
244280 end
245281 end
246282end
283+ =#
0 commit comments