Skip to content

Commit cce8815

Browse files
committed
Implementation of Problem 13
1 parent 5d3e551 commit cce8815

4 files changed

Lines changed: 66 additions & 1 deletion

File tree

src/ADNLPProblems/browngen2.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export browngen2
2+
3+
function browngen2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
4+
n = max(2, n)
5+
function f(x; n = length(x))
6+
s = zero(T)
7+
@inbounds for i = 2:n
8+
s += abs(x[i-1])^(x[i]^2 + one(T)) + abs(x[i])^(x[i-1]^2 + one(T))
9+
end
10+
return s
11+
end
12+
x0 = [isodd(i) ? -one(T) : one(T) for i in 1:n]
13+
return ADNLPModels.ADNLPModel(f, x0, name = "browngen2"; kwargs...)
14+
end

src/Meta/browngen2.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
browngen2_meta = Dict(
2+
:nvar => 100,
3+
:variable_nvar => true,
4+
:ncon => 0,
5+
:variable_ncon => false,
6+
:minimize => true,
7+
:name => "browngen2",
8+
:has_equalities_only => false,
9+
:has_inequalities_only => false,
10+
:has_bounds => false,
11+
:has_fixed_variables => false,
12+
:objtype => :other,
13+
:contype => :unconstrained,
14+
:best_known_lower_bound => -Inf,
15+
:best_known_upper_bound => Inf,
16+
:is_feasible => missing,
17+
:defined_everywhere => missing,
18+
:origin => :literature,
19+
)
20+
21+
get_browngen2_nvar(; n::Integer = default_nvar, kwargs...) = n
22+
get_browngen2_ncon(; n::Integer = default_nvar, kwargs...) = 0
23+
get_browngen2_nlin(; n::Integer = default_nvar, kwargs...) = 0
24+
get_browngen2_nnln(; n::Integer = default_nvar, kwargs...) = 0
25+
get_browngen2_nequ(; n::Integer = default_nvar, kwargs...) = 0
26+
get_browngen2_nineq(; n::Integer = default_nvar, kwargs...) = 0
27+
get_browngen2_nls_nequ(; n::Integer = default_nvar, kwargs...) = 0

src/PureJuMP/browngen1.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Generalization of the Brown function
1+
# Generalization of the Brown function 1
22
#
33
# Problem 12 in
44
# L. Luksan, C. Matonoha and J. Vlcek

src/PureJuMP/browngen2.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generalization of the Brown function 2
2+
#
3+
# Problem 13 in
4+
# L. Luksan, C. Matonoha and J. Vlcek
5+
# Sparse Test Problems for Unconstrained Optimization,
6+
# Technical Report 1064,
7+
# Institute of Computer Science,
8+
# Academy of Science of the Czech Republic
9+
#
10+
# https://www.researchgate.net/publication/325314400_Sparse_Test_Problems_for_Unconstrained_Optimization
11+
export browngen2
12+
13+
function browngen2(; n::Int = default_nvar)
14+
nlp = Model()
15+
@variable(nlp, x[1:n])
16+
for i in 1:n
17+
set_start_value(x[i], isodd(i) ? -1.0 : 1.0)
18+
end
19+
20+
@objective(nlp, Min,
21+
sum(abs(x[i-1])^(x[i]^2 + 1) + abs(x[i])^(x[i-1]^2 + 1) for i = 2:n)
22+
)
23+
return nlp
24+
end

0 commit comments

Comments
 (0)