Skip to content
Merged
Show file tree
Hide file tree
Changes from 104 commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
7d950c5
Add Problems 5-12 (genbroyden, genbroydenb, placeholders for 7-12) an…
arnavk23 Oct 8, 2025
0243327
Renaming variables to be consistent across all problems
arnavk23 Oct 8, 2025
68460ee
Add PureJuMP counterparts for Problems 5-12 (genbroyden, genbroydenb,…
arnavk23 Oct 8, 2025
ccc6b20
JuMP
arnavk23 Oct 8, 2025
a70e7f5
Relax test: use intersection of problems in ADNLPProblems and PureJuM…
arnavk23 Oct 8, 2025
c893535
comments
arnavk23 Oct 8, 2025
7c5f406
Add convenience wrapper auglag() to ADNLPProblems.auglag
arnavk23 Oct 8, 2025
9c5c090
Add ADNLS variant for auglag and update auglag metadata nls count
arnavk23 Oct 8, 2025
7163faa
browngen
arnavk23 Oct 8, 2025
1fc23d9
changes
arnavk23 Oct 8, 2025
31e74f3
browngen
arnavk23 Oct 9, 2025
c2ce1ba
fixing checksum issues
arnavk23 Oct 9, 2025
9661813
toint
arnavk23 Oct 9, 2025
9e1d4f0
toint
arnavk23 Oct 9, 2025
9c79bd9
Delete src/ADNLPProblems/toint.jl
arnavk23 Oct 15, 2025
1c169ec
Update test_utils.jl
arnavk23 Oct 15, 2025
56dc762
Delete src/ADNLPProblems/trig.jl
arnavk23 Oct 15, 2025
76f9e9b
Removing trig and toint
arnavk23 Oct 15, 2025
fa11e18
Update src/ADNLPProblems/cragglvy2.jl
arnavk23 Oct 18, 2025
82e2fe6
Update src/ADNLPProblems/auglag.jl
arnavk23 Oct 18, 2025
ce63619
Update src/ADNLPProblems/auglag.jl
arnavk23 Oct 18, 2025
aafedce
changes proposed by @tmigot
arnavk23 Oct 18, 2025
3526af4
pdf changes
arnavk23 Oct 20, 2025
7d06b5e
Merge branch 'main' into luksan/add-problems-5-12
arnavk23 Oct 20, 2025
bccf9ff
Implementation of Augmented Lagrangian problem in PureJuMP without ex…
arnavk23 Oct 21, 2025
11e9015
fixing issues in auglag problem definitions
arnavk23 Oct 21, 2025
734a28e
Update src/PureJuMP/auglag.jl
arnavk23 Oct 21, 2025
f8a84f3
Update src/PureJuMP/auglag.jl
arnavk23 Oct 21, 2025
9ee9737
Update src/PureJuMP/auglag.jl
arnavk23 Oct 21, 2025
0a4bca7
Update src/PureJuMP/auglag.jl
arnavk23 Oct 21, 2025
a3cdf38
Update src/PureJuMP/auglag.jl
arnavk23 Oct 21, 2025
7fce265
Update src/ADNLPProblems/auglag.jl
arnavk23 Oct 21, 2025
930f079
Update src/ADNLPProblems/auglag.jl
arnavk23 Oct 21, 2025
8079928
auglag multiply by 10
arnavk23 Oct 21, 2025
e63ab1e
auglag documentation
arnavk23 Oct 21, 2025
b4840da
Brown generalized function
arnavk23 Oct 21, 2025
e0b70d4
Update src/PureJuMP/auglag.jl
arnavk23 Oct 23, 2025
bbc687e
Update src/ADNLPProblems/browngen.jl
arnavk23 Oct 23, 2025
ccd1d04
Update src/PureJuMP/auglag.jl
arnavk23 Oct 23, 2025
fdd1503
Update src/ADNLPProblems/browngen.jl
arnavk23 Oct 23, 2025
9c57ccd
Update src/ADNLPProblems/broyden7d.jl
arnavk23 Oct 23, 2025
32afb3c
Update src/Meta/genrose.jl
arnavk23 Oct 23, 2025
2af4718
Update src/Meta/chainwoo.jl
arnavk23 Oct 23, 2025
f68e258
Update src/Meta/cragglvy2.jl
arnavk23 Oct 23, 2025
76c8462
Update src/Meta/browngen.jl
arnavk23 Oct 23, 2025
1024b3e
Update src/ADNLPProblems/broyden7d.jl
arnavk23 Oct 23, 2025
945f075
Update src/Meta/broyden7d.jl
arnavk23 Oct 23, 2025
a14f598
Update src/PureJuMP/broyden7d.jl
arnavk23 Oct 23, 2025
aad39a9
Update src/ADNLPProblems/cragglvy2.jl
arnavk23 Oct 23, 2025
5139449
Update src/ADNLPProblems/cragglvy2.jl
arnavk23 Oct 23, 2025
173a8e4
Update src/ADNLPProblems/cragglvy2.jl
arnavk23 Oct 23, 2025
7257220
Update src/ADNLPProblems/genbroyden.jl
arnavk23 Oct 23, 2025
9a2f7eb
Update src/ADNLPProblems/genrose.jl
arnavk23 Oct 23, 2025
0bd40a8
Update src/ADNLPProblems/genrose.jl
arnavk23 Oct 23, 2025
405ffe7
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 23, 2025
275c7b6
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 23, 2025
09064a6
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 23, 2025
5d3e551
fixing errors and adding documentation
arnavk23 Oct 24, 2025
cce8815
Implementation of Problem 13
arnavk23 Oct 24, 2025
9671fc9
Update src/PureJuMP/auglag.jl
arnavk23 Oct 24, 2025
2436b24
Update src/PureJuMP/browngen2.jl
arnavk23 Oct 24, 2025
046ef5a
Update src/PureJuMP/browngen1.jl
arnavk23 Oct 24, 2025
4629ee7
Update src/PureJuMP/browngen2.jl
arnavk23 Oct 24, 2025
a4a1d3c
Update src/Meta/browngen2.jl
arnavk23 Oct 24, 2025
52b88a5
Update src/ADNLPProblems/browngen2.jl
arnavk23 Oct 24, 2025
3ab4917
Update src/ADNLPProblems/broyden7d.jl
arnavk23 Oct 24, 2025
4ad0719
Update src/ADNLPProblems/broyden7d.jl
arnavk23 Oct 24, 2025
14b6acf
Update src/PureJuMP/browngen1.jl
arnavk23 Oct 24, 2025
e6b5aea
Update src/PureJuMP/browngen1.jl
arnavk23 Oct 24, 2025
9f159b2
changes
arnavk23 Oct 25, 2025
8438c54
Added neighbors = [Int[] for _ in 1:n].
arnavk23 Oct 25, 2025
98f7cfc
Update src/PureJuMP/browngen1.jl
arnavk23 Oct 25, 2025
99d9e8a
Update src/ADNLPProblems/broyden7d.jl
arnavk23 Oct 25, 2025
d5ae2c9
Update src/Meta/chainwoo.jl
arnavk23 Oct 25, 2025
ef363fd
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 25, 2025
b301427
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
c695b37
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 25, 2025
9aab84b
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 25, 2025
db62cf5
Update src/ADNLPProblems/genbroydentri.jl
arnavk23 Oct 25, 2025
1d89d83
Update src/Meta/genrose.jl
arnavk23 Oct 25, 2025
3dec1df
Update src/PureJuMP/nazareth.jl
arnavk23 Oct 25, 2025
59a36a0
Update src/ADNLPProblems/powellsg.jl
arnavk23 Oct 25, 2025
7e2f98d
Update src/ADNLPProblems/powellsg.jl
arnavk23 Oct 25, 2025
5996d0d
Update src/ADNLPProblems/powellsg.jl
arnavk23 Oct 25, 2025
eff9b55
Update src/ADNLPProblems/powellsg.jl
arnavk23 Oct 25, 2025
8492676
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
03cd941
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
ddfdca0
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
2f697ee
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
d9a82af
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
b987ab1
Update src/ADNLPProblems/nazareth.jl
arnavk23 Oct 25, 2025
e2a953f
changes
arnavk23 Oct 26, 2025
2078516
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 26, 2025
14759d0
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 26, 2025
e2b9dbd
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 26, 2025
dcc91dc
Update src/ADNLPProblems/genbroydenb.jl
arnavk23 Oct 26, 2025
60f7615
Update src/ADNLPProblems/genrose.jl
arnavk23 Oct 26, 2025
9b82d82
Update src/ADNLPProblems/genrose.jl
arnavk23 Oct 26, 2025
09e1ac7
Update src/ADNLPProblems/chainwoo.jl
arnavk23 Oct 26, 2025
ed2fdd8
chainwoo: simplify residual calculations
arnavk23 Oct 26, 2025
0f7a50e
Update src/ADNLPProblems/chainwoo.jl
arnavk23 Oct 27, 2025
c305223
Update src/ADNLPProblems/chainwoo.jl
arnavk23 Oct 27, 2025
c54dcca
Update src/ADNLPProblems/chainwoo.jl
arnavk23 Oct 27, 2025
49f682e
chainwoo
arnavk23 Oct 27, 2025
dc2916d
Update src/Meta/chainwoo.jl
arnavk23 Oct 27, 2025
d1c06f9
easier implementation of the algorithm.
arnavk23 Oct 27, 2025
4c5115f
genbroydenb and running JuliaFormatter
arnavk23 Oct 27, 2025
ae0a0eb
fixing x0 in genbroydenb problem
arnavk23 Oct 28, 2025
ad66a20
vector adaptation for large-scale unconstrained optimization problems.
arnavk23 Oct 28, 2025
0216f26
Apply suggestions from code review
tmigot Oct 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions src/ADNLPProblems/auglag.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
export auglag

function auglag(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
λ₁ = T(-0.002008)
λ₂ = T(-0.001900)
λ₃ = T(-0.000261)

function f(x; n = length(x))
s = zero(T)
for i = 1:n
if mod(i, 5) == 0
prod_term = one(T)
sum_sq = zero(T)
for j = 1:5
idx = i + 1 - j
if 1 <= idx <= n
prod_term *= x[idx]
sum_sq += x[idx]^2
end
end
s += exp(prod_term) + 10 * (sum_sq - 10 - λ₁)^2

if i >= 4
s += 10 * (x[i-3] * x[i-2] - 5 * x[i-1] * x[i] - λ₂)^2
end

if i >= 4
s += 10 * (x[i-4]^3 + x[i-3]^3 + 1 - λ₃)^2
end
end
end
return s
end

x0 = zeros(T, n)
for i = 1:n
m = mod(i, 5)
if m == 1
x0[i] = i <= 2 ? T(-2) : T(-1)
elseif m == 2
x0[i] = i <= 2 ? T(2) : T(-1)
elseif m == 3
x0[i] = T(2)
elseif m == 4
x0[i] = T(-1)
else
x0[i] = T(-1)
end
end

return ADNLPModels.ADNLPModel(f, x0, name = "auglag"; kwargs...)
end
16 changes: 16 additions & 0 deletions src/ADNLPProblems/browngen1.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
export browngen1

function browngen1(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n = max(2, n)
function f(x; n = length(x))
s = zero(T)
@inbounds for i in 2:n
s += (x[i - 1] - 3)^2 +
(x[i - 1] - x[i])^2 +
exp(20 * (x[i - 1] - x[i]))
end
return s
end
x0 = [isodd(i) ? zero(T) : -one(T) for i in 1:n]
return ADNLPModels.ADNLPModel(f, x0, name = "browngen1"; kwargs...)
end
14 changes: 14 additions & 0 deletions src/ADNLPProblems/browngen2.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export browngen2

function browngen2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n = max(2, n)
function f(x; n = length(x))
s = zero(T)
@inbounds for i = 2:n
s += (x[i-1]^2)^(x[i]^2 + 1) + (x[i]^2)^(x[i-1]^2 + 1)
end
return s
end
x0 = [isodd(i) ? -one(T) : one(T) for i in 1:n]
return ADNLPModels.ADNLPModel(f, x0, name = "browngen2"; kwargs...)
end
48 changes: 48 additions & 0 deletions src/ADNLPProblems/broyden7d.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
export broyden7d

function broyden7d(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return broyden7d(Val(model); kwargs...)
end

function broyden7d(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
p = 7 // 3
function f(x; n = length(x), p = p)
x0 = zero(T)
xn1 = zero(T)
s = zero(T)
s += abs((3 - 2 * x[1]) * x[1] - x0 - x[2] + 1)^p
for i = 2:(n - 1)
s += abs((3 - 2 * x[i]) * x[i] - x[i - 1] - x[i + 1] + 1)^p
end
s += abs((3 - 2 * x[n]) * x[n] - x[n - 1] - xn1 + 1)^p
nh = div(n, 2)
for i = 1:nh
s += abs(x[i] + x[i + nh])^p
end
return s
end
x0 = fill(-one(T), n)
return ADNLPModels.ADNLPModel(f, x0, name = "broyden7d"; kwargs...)
end

function broyden7d(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
x0 = fill(-one(T), n)
function F!(r, x; n = length(x))
p = 7 // 6
nh = div(n, 2)
@inbounds begin
r[1] = abs((3 - 2 * x[1]) * x[1] - zero(T) - x[2] + one(T))^p
for i = 2:(n - 1)
r[i] = abs((3 - 2 * x[i]) * x[i] - x[i - 1] - x[i + 1] + one(T))^p
end
r[n] = abs((3 - 2 * x[n]) * x[n] - x[n - 1] - zero(T) + one(T))^p
for i = 1:nh
r[n + i] = abs(x[i] + x[i + nh])^p
end
end
return r
end
nequ = n + div(n, 2)
return ADNLPModels.ADNLSModel!(F!, x0, nequ, name = "broyden7d-nls"; kwargs...)
end
30 changes: 29 additions & 1 deletion src/ADNLPProblems/chainwoo.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
export chainwoo

function chainwoo(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function chainwoo(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return chainwoo(Val(model); kwargs...)
end

function chainwoo(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
(n % 4 == 0) || @warn("chainwoo: number of variables adjusted to be a multiple of 4")
n = 4 * max(1, div(n, 4))
function f(x; n = length(x))
Expand All @@ -16,3 +21,26 @@ function chainwoo(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) w
x0 = vcat([-3, -1, -3, -1], -2 * ones(T, n - 4))
return ADNLPModels.ADNLPModel(f, x0, name = "chainwoo"; kwargs...)
end

function chainwoo(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
(n % 4 == 0) || @warn("chainwoo: number of variables adjusted to be a multiple of 4")
n = 4 * max(1, div(n, 4))
function F!(r, x; n = length(x))
nb = div(n, 2) - 1
r[1] = 1
idx = 2
@inbounds for i = 1:nb
r[idx] = 10 * (x[2*i] - x[2*i - 1]^2)
r[idx + 1] = 1 - x[2*i - 1]
r[idx + 2] = T(sqrt(90)) * (x[2*i + 2] - x[2*i + 1]^2)
r[idx + 3] = 1 - x[2*i + 1]
r[idx + 4] = T(sqrt(10)) * (x[2*i] + x[2*i + 2] - 2)
r[idx + 5] = (x[2*i] - x[2*i + 2]) / T(sqrt(10))
idx += 6
end
return r
end
nequ = 1 + 6 * (div(n, 2) - 1)
x0 = vcat([-3, -1, -3, -1], -2 * ones(T, n - 4))
return ADNLPModels.ADNLSModel!(F!, x0, nequ, name = "chainwoo-nls"; kwargs...)
end
25 changes: 24 additions & 1 deletion src/ADNLPProblems/cragglvy2.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
export cragglvy2

function cragglvy2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function cragglvy2(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return cragglvy2(Val(model); kwargs...)
end

function cragglvy2(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n < 2 && @warn("cragglvy2: number of variables must be ≥ 2")
n = max(2, n)
function f(x; n = length(x))
Expand All @@ -15,3 +20,21 @@ function cragglvy2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...)
x0 = vcat(1, 2 * ones(T, n - 1))
return ADNLPModels.ADNLPModel(f, x0, name = "cragglvy2"; kwargs...)
end

function cragglvy2(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n < 2 && @warn("cragglvy2: number of variables must be ≥ 2")
n = max(2, n)
function F!(r, x; n = length(x))
for i = 1:(div(n, 2) - 1)
r[5 * (i - 1) + 1] = (exp(x[2 * i - 1]) - x[2 * i])^2
r[5 * (i - 1) + 2] = 10 * (x[2 * i] - x[2 * i + 1])^3
r[5 * (i - 1) + 3] = (tan(x[2 * i + 1] - x[2 * i + 2]))^2
r[5 * (i - 1) + 4] = x[2 * i - 1]^4
r[5 * (i - 1) + 5] = x[2 * i + 2] - 1
end
return r
end
nequ = 5 * (div(n, 2) - 1)
x0 = vcat(T(1), T(2) * ones(T, n - 1))
return ADNLPModels.ADNLSModel!(F!, x0, nequ, name = "cragglvy2-nls"; kwargs...)
end
47 changes: 47 additions & 0 deletions src/ADNLPProblems/genbroydenb.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
export genbroydenb

function genbroydenb(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return genbroydenb(Val(model); kwargs...)
end

function genbroydenb(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
p = 7 // 3
function f(x; n = length(x))
s = zero(T)
for i = 1:n
diag = (2 + 5 * x[i]^2) * x[i] + 1
neigh = zero(T)
@inbounds for j = max(1, i - 5):min(n, i + 1)
if j != i
neigh += x[j] * (1 + x[j])
end
end
s += abs(diag + neigh)^p
end
return s
end
x0 = fill(-one(T), n)
return ADNLPModels.ADNLPModel(f, x0, name = "genbroydenb", minimize = true; kwargs...)
end

function genbroydenb(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
p = 7 // 6
function F!(r, x; n = length(x))
@inbounds for i = 1:n
diag = (2 + 5 * x[i]^2) * x[i] + 1
neigh = zero(T)
lo = max(1, i - 5)
hi = min(n, i + 1)
for j = lo:hi
if j != i
neigh += x[j] * (1 + x[j])
end
end
r[i] = abs(diag + neigh)^p
end
return r
end
x0 = fill(-one(T), n)
return ADNLPModels.ADNLSModel!(F!, x0, n, name = "genbroydenb-nls"; kwargs...)
end
40 changes: 40 additions & 0 deletions src/ADNLPProblems/genbroydentri.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
export genbroydentri

function genbroydentri(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return genbroydentri(Val(model); kwargs...)
end

function genbroydentri(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
p = 7 // 3
function f(x; n = length(x))
x0 = zero(T)
xn1 = zero(T)
s = abs((3 - 2 * x[1]) * x[1] - x0 - x[2] + 1)^p
for i = 2:(n - 1)
s += abs((3 - 2 * x[i]) * x[i] - x[i - 1] - x[i + 1] + 1)^p
end
s += abs((3 - 2 * x[n]) * x[n] - x[n - 1] - xn1 + 1)^p
return s
end
x0 = fill(-one(T), n)
return ADNLPModels.ADNLPModel(f, x0, name = "genbroydentri"; kwargs...)
end

function genbroydentri(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
p = 7 // 6
x0 = fill(-one(T), n)
function F!(r, x)
x0_val = zero(T)
xn1_val = zero(T)
@inbounds begin
r[1] = abs((3 - 2 * x[1]) * x[1] - x0_val - x[2] + 1)^p
for i = 2:(n - 1)
r[i] = abs((3 - 2 * x[i]) * x[i] - x[i - 1] - x[i + 1] + 1)^p
end
r[n] = abs((3 - 2 * x[n]) * x[n] - x[n - 1] - xn1_val + 1)^p
end
return r
end
return ADNLPModels.ADNLSModel!(F!, x0, n, name = "genbroydentri-nls"; kwargs...)
end
27 changes: 24 additions & 3 deletions src/ADNLPProblems/genrose.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
export genrose, rosenbrock

function genrose(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function genrose(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return genrose(Val(model); kwargs...)
end

function genrose(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n < 2 && @warn("genrose: number of variables must be ≥ 2")
n = max(2, n)
function f(x; n = length(x))
Expand All @@ -12,5 +17,21 @@ function genrose(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) wh
return ADNLPModels.ADNLPModel(f, x0, name = "genrose"; kwargs...)
end

rosenbrock(args...; kwargs...) =
genrose(args..., n = 2, name = "rosenbrock"; delete!(Dict(kwargs), :n)...)
function genrose(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n = max(2, n)
nequ = 2 * (n - 1) + 1
function F!(r, x; n = length(x))
@inbounds begin
r[1] = 1
for i = 1:(n - 1)
r[i + 1] = 10 * (x[i + 1] - x[i]^2)
r[i + n] = x[i] - 1
end
end
return r
end
x0 = T.([i / (n + 1) for i = 1:n])
return ADNLPModels.ADNLSModel!(F!, x0, nequ, name = "genrose-nls"; kwargs...)
end

rosenbrock(args...; kwargs...) = genrose(args..., n = 2, name = "rosenbrock"; delete!(Dict(kwargs), :n)...)
Loading