Skip to content

Commit 8291998

Browse files
committed
[WIP] Change constructors
1 parent a8c8748 commit 8291998

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

solver-example.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ nlp = ADNLPModel(
1010
[0.0],
1111
[0.0]
1212
)
13-
solver = DummySolver(Float16, 2, 1)
13+
solver = DummySolver(Float16, nlp.meta)
1414
output = solve!(solver, nlp, δ = 1e-2)
1515

1616
#%%
1717
include("test/dummy_solver.jl")
18-
solver = DummySolver(2, 1)
18+
solver = DummySolver(Val(:nosolve), nlp)
1919
output = solve!(solver, nlp, δ = 1e-2)
2020
@allocated output = solve!(solver, nlp, δ = 1e-2)
21-
#%%
2221

22+
#%%
2323
include("test/dummy_solver.jl")
2424
output, solver = DummySolver(nlp)

test/dummy_solver.jl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,26 @@ mutable struct DummySolver{T} <: AbstractSolver{T}
99
ct :: Vector{T}
1010
end
1111

12-
function DummySolver(::Type{T}, nvar :: Integer, ncon :: Integer = 0) where T
12+
function DummySolver(::Type{T}, meta :: AbstractNLPModelMeta) where T
13+
nvar, ncon = meta.nvar, meta.ncon
1314
DummySolver{T}(true, zeros(T, nvar), zeros(T, nvar), zeros(T, nvar), zeros(T, nvar), zeros(T, ncon), zeros(T, ncon), zeros(T, ncon))
1415
end
1516

17+
function DummySolver(::Type{T}, ::Val{:nosolve}, nlp :: AbstractNLPModel) where T
18+
solver = DummySolver(T, nlp.meta)
19+
return solver
20+
end
21+
1622
function DummySolver(::Type{T}, nlp :: AbstractNLPModel) where T
17-
solver = DummySolver(T, nlp.meta.nvar, nlp.meta.ncon)
23+
solver = DummySolver(T, nlp.meta)
1824
output = solve!(solver, nlp)
1925
return output, solver
2026
end
2127

22-
DummySolver(args...) = DummySolver(Float64, args...)
28+
DummySolver(meta :: AbstractNLPModelMeta) = DummySolver(Float64, meta :: AbstractNLPModelMeta)
29+
DummySolver(::Val{:nosolve}, nlp :: AbstractNLPModel) = DummySolver(Float64, Val(:nosolve), nlp :: AbstractNLPModel)
30+
DummySolver(nlp :: AbstractNLPModel) = DummySolver(Float64, nlp :: AbstractNLPModel)
31+
2332

2433
function solve!(solver::DummySolver{T}, nlp :: AbstractNLPModel;
2534
x :: AbstractVector{T} = T.(nlp.meta.x0),

0 commit comments

Comments
 (0)