Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
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
21 changes: 21 additions & 0 deletions src/ADNLPProblems/toint.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
export toint

function toint(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
Comment thread
tmigot marked this conversation as resolved.
function f(x; n = length(x))
s = zero(T)
for i = 1:n
ci = 1 + (i // 10)

for j = max(1, i - 2):min(n, i + 2)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
aij = 5 * (1 + mod(i, 5) + mod(j, 5))
bij = (i + j) // 10
cj = (1 + j) // 10
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
s += aij * sin(bij + ci * x[i] + cj * x[j])
end
end
return s / n
end

x0 = fill(one(T), n)
return ADNLPModels.ADNLPModel(f, x0, name = "toint"; kwargs...)
end
20 changes: 20 additions & 0 deletions src/ADNLPProblems/trig.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export trig

function trig(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x; n = length(x))
s = zero(T)
for i = 1:n
s += i * (1 - cos(x[i]))

for j = max(1, i - 2):min(n, i + 2)
aij = 5 * (1 + mod(i, 5) + mod(j, 5))
bij = (i + j) // 10
s += aij * sin(x[j]) + bij * cos(x[j])
end
end
return s / n
end

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

function trigb(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x; n = length(x))
s = zero(T)
for i = 1:n
xim = (i == 1) ? zero(T) : x[i - 1]
xip = (i == n) ? zero(T) : x[i + 1]
s += i * (1 - cos(x[i]) + sin(xim) - sin(xip))
end
return s
end

x0 = fill(one(T), n)
return ADNLPModels.ADNLPModel(f, x0, name = "trigb"; kwargs...)
end
26 changes: 26 additions & 0 deletions src/Meta/toint.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
toint_meta = Dict(
:nvar => 100,
:variable_nvar => true,
:ncon => 0,
:variable_ncon => false,
:minimize => true,
:name => "toint",
:has_equalities_only => false,
:has_inequalities_only => false,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :unconstrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => 0.0,
Comment thread
tmigot marked this conversation as resolved.
Outdated
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
)

get_toint_nvar(; n::Integer = default_nvar, kwargs...) = n
get_toint_ncon(; n::Integer = default_nvar, kwargs...) = 0
get_toint_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_toint_nnln(; n::Integer = default_nvar, kwargs...) = 0
get_toint_nequ(; n::Integer = default_nvar, kwargs...) = 0
get_toint_nineq(; n::Integer = default_nvar, kwargs...) = 0
26 changes: 26 additions & 0 deletions src/Meta/trig.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
trig_meta = Dict(
:nvar => 100,
:variable_nvar => true,
:ncon => 0,
:variable_ncon => false,
:minimize => true,
:name => "trig",
:has_equalities_only => false,
:has_inequalities_only => false,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :unconstrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => 0.0,
Comment thread
tmigot marked this conversation as resolved.
Outdated
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
)

get_trig_nvar(; n::Integer = default_nvar, kwargs...) = n
get_trig_ncon(; n::Integer = default_nvar, kwargs...) = 0
get_trig_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_trig_nnln(; n::Integer = default_nvar, kwargs...) = 0
get_trig_nequ(; n::Integer = default_nvar, kwargs...) = 0
get_trig_nineq(; n::Integer = default_nvar, kwargs...) = 0
26 changes: 26 additions & 0 deletions src/Meta/trigb.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
trigb_meta = Dict(
:nvar => 100,
:variable_nvar => true,
:ncon => 0,
:variable_ncon => false,
:minimize => true,
:name => "trigb",
:has_equalities_only => false,
:has_inequalities_only => false,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :unconstrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => 0.0,
Comment thread
tmigot marked this conversation as resolved.
Outdated
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
)

get_trigb_nvar(; n::Integer = default_nvar, kwargs...) = n
get_trigb_ncon(; n::Integer = default_nvar, kwargs...) = 0
get_trigb_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_trigb_nnln(; n::Integer = default_nvar, kwargs...) = 0
get_trigb_nequ(; n::Integer = default_nvar, kwargs...) = 0
get_trigb_nineq(; n::Integer = default_nvar, kwargs...) = 0
35 changes: 35 additions & 0 deletions src/PureJuMP/toint.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Toint trigonometric function
#
# Problem 10 in
# L. Luksan, C. Matonoha and J. Vlcek
# Sparse Test Problems for Unconstrained Optimization,
# Technical Report 1064,
# Institute of Computer Science,
# Academy of Science of the Czech Republic
#
# https://www.researchgate.net/publication/325314400_Sparse_Test_Problems_for_Unconstrained_Optimization
#
export toint

function toint(args...; n::Int = default_nvar, kwargs...)
model = Model()
@variable(model, x[i = 1:n], start = 1)

@objective(
model,
Min,
(1 / n) * sum(begin
ci = 1 + i / 10
s = zero(Float64)
for j = max(1, i - 2):min(n, i + 2)
aij = 5 * (1 + mod(i, 5) + mod(j, 5))
bij = (i + j) / 10
cj = 1 + j / 10
s += aij * sin(bij + ci * x[i] + cj * x[j])
end
s
end for i = 1:n)
)

return model
end
31 changes: 31 additions & 0 deletions src/PureJuMP/trig.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Another trigonometric function
#
# Problem 9 in
# L. Luksan, C. Matonoha and J. Vlcek
# Sparse Test Problems for Unconstrained Optimization,
# Technical Report 1064,
# Institute of Computer Science,
# Academy of Science of the Czech Republic
#
# https://www.researchgate.net/publication/325314400_Sparse_Test_Problems_for_Unconstrained_Optimization
#
export trig

function trig(args...; n::Int = default_nvar, kwargs...)
model = Model()
@variable(model, x[i = 1:n], start = 1 / n)

@objective(
model,
Min,
(1 / n) * sum(
i * (1 - cos(x[i])) +
sum(
5 * (1 + mod(i, 5) + mod(j, 5)) * sin(x[j]) + (i + j) / 10 * cos(x[j]) for
j = max(1, i - 2):min(n, i + 2)
) for i = 1:n
)
)

return model
end
29 changes: 29 additions & 0 deletions src/PureJuMP/trigb.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## Banded trigonometric problem
#
# Problem 16 in
# L. Luksan, C. Matonoha and J. Vlcek
# Sparse Test Problems for Unconstrained Optimization,
# Technical Report 1064,
# Institute of Computer Science,
# Academy of Science of the Czech Republic
#
# https://www.researchgate.net/publication/325314400_Sparse_Test_Problems_for_Unconstrained_Optimization
#
export trigb

function trigb(args...; n::Int = default_nvar, kwargs...)
model = Model()
@variable(model, x[i = 1:n], start = 1)

@objective(
model,
Min,
sum(
i *
((1 - cos(x[i])) + ((i == 1) ? sin(0) : sin(x[i - 1])) - ((i == n) ? sin(0) : sin(x[i + 1])))
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
for i = 1:n
)
)

return model
end