Skip to content

Commit 8da9956

Browse files
tmigotabelsiqueira
authored andcommitted
remove f and c in structure
1 parent e9679e3 commit 8da9956

File tree

7 files changed

+25
-31
lines changed

7 files changed

+25
-31
lines changed

src/ad.jl

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,44 +3,38 @@ struct ForwardDiffAD <: ADBackend
33
nnzh::Int
44
nnzj::Int
55
end
6-
function ForwardDiffAD(f, c, x0::AbstractVector, ncon::Integer)
7-
nvar = length(x0)
6+
function ForwardDiffAD(nvar::Integer, ncon::Integer)
87
nnzh = nvar * (nvar + 1) / 2
98
nnzj = nvar * ncon
109
return ForwardDiffAD(nnzh, nnzj)
1110
end
12-
function ForwardDiffAD(f, x0::AbstractVector)
13-
nvar = length(x0)
11+
function ForwardDiffAD(nvar::Integer)
1412
nnzh = nvar * (nvar + 1) / 2
1513
return ForwardDiffAD(nnzh, 0)
1614
end
1715
struct ZygoteAD <: ADBackend
1816
nnzh::Int
1917
nnzj::Int
2018
end
21-
function ZygoteAD(f, c, x0::AbstractVector, ncon::Integer)
22-
nvar = length(x0)
19+
function ZygoteAD(nvar::Integer, ncon::Integer)
2320
nnzh = nvar * (nvar + 1) / 2
2421
nnzj = nvar * ncon
2522
return ZygoteAD(nnzh, nnzj)
2623
end
27-
function ZygoteAD(f, x0::AbstractVector)
28-
nvar = length(x0)
24+
function ZygoteAD(nvar::Integer)
2925
nnzh = nvar * (nvar + 1) / 2
3026
return ZygoteAD(nnzh, 0)
3127
end
3228
struct ReverseDiffAD <: ADBackend
3329
nnzh::Int
3430
nnzj::Int
3531
end
36-
function ReverseDiffAD(f, c, x0::AbstractVector, ncon::Integer)
37-
nvar = length(x0)
32+
function ReverseDiffAD(nvar::Integer, ncon::Integer)
3833
nnzh = nvar * (nvar + 1) / 2
3934
nnzj = nvar * ncon
4035
return ReverseDiffAD(nnzh, nnzj)
4136
end
42-
function ReverseDiffAD(f, x0::AbstractVector)
43-
nvar = length(x0)
37+
function ReverseDiffAD(nvar::Integer)
4438
nnzh = nvar * (nvar + 1) / 2
4539
return ReverseDiffAD(nnzh, 0)
4640
end
@@ -127,7 +121,7 @@ end
127121
return Zygote.jacobian(f, x)[1]
128122
end
129123
function hessian(b::ZygoteAD, f, x)
130-
return jacobian(ForwardDiffAD(f, x), x -> gradient(b, f, x), x)
124+
return jacobian(ForwardDiffAD(length(x)), x -> gradient(b, f, x), x)
131125
end
132126
function Jprod(::ZygoteAD, f, x, v)
133127
return vec(Zygote.jacobian(t -> f(x + t * v), 0)[1])

src/nlp.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function ADNLPModel(
3939
f,
4040
x0::AbstractVector{T};
4141
name::String = "Generic",
42-
adbackend = ForwardDiffAD(f, x0),
42+
adbackend = ForwardDiffAD(length(x0)),
4343
) where {T}
4444
nvar = length(x0)
4545
@lencheck nvar x0
@@ -57,7 +57,7 @@ function ADNLPModel(
5757
lvar::AbstractVector,
5858
uvar::AbstractVector;
5959
name::String = "Generic",
60-
adbackend = ForwardDiffAD(f, x0),
60+
adbackend = ForwardDiffAD(length(x0)),
6161
) where {T}
6262
nvar = length(x0)
6363
@lencheck nvar x0 lvar uvar
@@ -87,7 +87,7 @@ function ADNLPModel(
8787
y0::AbstractVector = fill!(similar(lcon), zero(T)),
8888
name::String = "Generic",
8989
lin::AbstractVector{<:Integer} = Int[],
90-
adbackend = ForwardDiffAD(f, c, x0, length(lcon)),
90+
adbackend = ForwardDiffAD(length(x0), length(lcon)),
9191
) where {T}
9292
nvar = length(x0)
9393
ncon = length(lcon)
@@ -129,7 +129,7 @@ function ADNLPModel(
129129
y0::AbstractVector = fill!(similar(lcon), zero(T)),
130130
name::String = "Generic",
131131
lin::AbstractVector{<:Integer} = Int[],
132-
adbackend = ForwardDiffAD(f, c, x0, length(lcon)),
132+
adbackend = ForwardDiffAD(length(x0), length(lcon)),
133133
) where {T}
134134
nvar = length(x0)
135135
ncon = length(lcon)

src/nls.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ function ADNLSModel(
4646
nequ::Integer;
4747
linequ::AbstractVector{<:Integer} = Int[],
4848
name::String = "Generic",
49-
adbackend = ForwardDiffAD(F, x0),
49+
adbackend = ForwardDiffAD(length(x0)),
5050
) where {T}
5151
nvar = length(x0)
5252

@@ -72,7 +72,7 @@ function ADNLSModel(
7272
uvar::AbstractVector;
7373
linequ::AbstractVector{<:Integer} = Int[],
7474
name::String = "Generic",
75-
adbackend = ForwardDiffAD(F, x0),
75+
adbackend = ForwardDiffAD(length(x0)),
7676
) where {T}
7777
nvar = length(x0)
7878
@lencheck nvar lvar uvar
@@ -102,7 +102,7 @@ function ADNLSModel(
102102
lin::AbstractVector{<:Integer} = Int[],
103103
linequ::AbstractVector{<:Integer} = Int[],
104104
name::String = "Generic",
105-
adbackend = ForwardDiffAD(F, c, x0, length(lcon)),
105+
adbackend = ForwardDiffAD(length(x0), length(lcon)),
106106
) where {T}
107107
nvar = length(x0)
108108
ncon = length(lcon)
@@ -148,7 +148,7 @@ function ADNLSModel(
148148
lin::AbstractVector{<:Integer} = Int[],
149149
linequ::AbstractVector{<:Integer} = Int[],
150150
name::String = "Generic",
151-
adbackend = ForwardDiffAD(F, c, x0, length(lcon)),
151+
adbackend = ForwardDiffAD(length(x0), length(lcon)),
152152
) where {T}
153153
nvar = length(x0)
154154
ncon = length(lcon)

test/nlp/basic.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,25 @@ function test_autodiff_model()
2525
for adbackend in (:ForwardDiffAD, :ZygoteAD, :ReverseDiffAD)
2626
x0 = zeros(2)
2727
f(x) = dot(x, x)
28-
nlp = ADNLPModel(f, x0, adbackend = eval(adbackend)(f, x0))
28+
nlp = ADNLPModel(f, x0, adbackend = eval(adbackend)(length(x0)))
2929

3030
c(x) = [sum(x) - 1]
31-
nlp = ADNLPModel(f, x0, c, [0], [0], adbackend = eval(adbackend)(f, c, x0, 1))
31+
nlp = ADNLPModel(f, x0, c, [0], [0], adbackend = eval(adbackend)(length(x0), 1))
3232
@test obj(nlp, x0) == f(x0)
3333

3434
x = range(-1, stop = 1, length = 100)
3535
y = 2x .+ 3 + randn(100) * 0.1
3636
regr = LinearRegression(x, y)
37-
nlp = ADNLPModel(regr, ones(2), adbackend = eval(adbackend)(regr, ones(2)))
37+
nlp = ADNLPModel(regr, ones(2), adbackend = eval(adbackend)(2))
3838
β = [ones(100) x] \ y
3939
@test abs(obj(nlp, β) - norm(y .- β[1] - β[2] * x)^2 / 2) < 1e-12
4040
@test norm(grad(nlp, β)) < 1e-12
4141

4242
@testset "Constructors for ADNLPModel" begin
4343
lvar, uvar, lcon, ucon, y0 = -ones(2), ones(2), -ones(1), ones(1), zeros(1)
4444
badlvar, baduvar, badlcon, baducon, bady0 = -ones(3), ones(3), -ones(2), ones(2), zeros(2)
45-
unc_adbackend = eval(adbackend)(f, x0)
46-
con_adbackend = eval(adbackend)(f, c, x0, 1)
45+
unc_adbackend = eval(adbackend)(2)
46+
con_adbackend = eval(adbackend)(2, 1)
4747
nlp = ADNLPModel(f, x0, adbackend = unc_adbackend)
4848
nlp = ADNLPModel(f, x0, lvar, uvar, adbackend = unc_adbackend)
4949
nlp = ADNLPModel(f, x0, c, lcon, ucon, adbackend = con_adbackend)

test/nlp/nlpmodelstest.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
for problem in NLPModelsTest.nlp_problems
44
@testset "Checking NLPModelsTest tests on problem $problem" begin
55
nlp_ad = eval(Meta.parse(lowercase(problem) * "_autodiff"))()
6-
nlp_ad.adbackend = eval(adbackend)(nlp_ad.f, nlp_ad.meta.x0)
6+
nlp_ad.adbackend = eval(adbackend)(length(nlp_ad.meta.x0))
77
nlp_man = eval(Meta.parse(problem))()
88

99
show(IOBuffer(), nlp_ad)

test/nls/basic.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ function autodiff_nls_test()
22
for adbackend in (:ForwardDiffAD, :ZygoteAD, :ReverseDiffAD)
33
@testset "autodiff_nls_test for $adbackend" begin
44
F(x) = [x[1] - 1; x[2] - x[1]^2]
5-
nls = ADNLSModel(F, zeros(2), 2, adbackend = eval(adbackend)(F, zeros(2)))
5+
nls = ADNLSModel(F, zeros(2), 2, adbackend = eval(adbackend)(2))
66

77
@test isapprox(residual(nls, ones(2)), zeros(2), rtol = 1e-8)
88
end
@@ -13,8 +13,8 @@ function autodiff_nls_test()
1313
c(x) = [sum(x) - 1]
1414
lvar, uvar, lcon, ucon, y0 = -ones(2), ones(2), -ones(1), ones(1), zeros(1)
1515
badlvar, baduvar, badlcon, baducon, bady0 = -ones(3), ones(3), -ones(2), ones(2), zeros(2)
16-
unc_adbackend = eval(adbackend)(F, x0)
17-
con_adbackend = eval(adbackend)(F, c, x0, 1)
16+
unc_adbackend = eval(adbackend)(2)
17+
con_adbackend = eval(adbackend)(2, 1)
1818
nlp = ADNLSModel(F, x0, 3, adbackend = unc_adbackend)
1919
nlp = ADNLSModel(F, x0, 3, lvar, uvar, adbackend = unc_adbackend)
2020
nlp = ADNLSModel(F, x0, 3, c, lcon, ucon, adbackend = con_adbackend)

test/nls/nlpmodelstest.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
for problem in NLPModelsTest.nls_problems
33
@testset "Checking NLPModelsTest tests on problem $problem" begin
44
nls_ad = eval(Meta.parse(lowercase(problem) * "_autodiff"))()
5-
nls_ad.adbackend = eval(adbackend)(nls_ad.F, nls_ad.meta.x0)
5+
nls_ad.adbackend = eval(adbackend)(length(nls_ad.meta.x0))
66
nls_man = eval(Meta.parse(problem))()
77

88
nlss = AbstractNLSModel[nls_ad]

0 commit comments

Comments
 (0)