-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathNZF1.jl
More file actions
59 lines (56 loc) · 1.85 KB
/
NZF1.jl
File metadata and controls
59 lines (56 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
export NZF1
function NZF1(; use_nls::Bool = false, kwargs...)
model = use_nls ? :nls : :nlp
return NZF1(Val(model); kwargs...)
end
function NZF1(::Val{:nlp}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n_orig = n
nbis = max(2, div(n, 13))
n = 13 * nbis
@adjust_nvar_warn("NZF1", n_orig, n)
l = div(n, 13)
function f(x; l = l)
return sum(
(3 * x[i] - 60 + 1 // 10 * (x[i + 1] - x[i + 2])^2)^2 +
(
x[i + 1]^2 +
x[i + 2]^2 +
(x[i + 3]^2) * (1 + x[i + 3])^2 +
x[i + 6] +
x[i + 5] / (1 + x[i + 4]^2 + sin(x[i + 4] / 1000))
)^2 +
(x[i + 6] + x[i + 7] - x[i + 8]^2 + x[i + 10])^2 +
(log(1 + x[i + 10]^2) + x[i + 11] - 5 * x[i + 12] + 20)^2 +
(x[i + 4] + x[i + 5] + x[i + 5] * x[i + 9] + 10 * x[i + 9] - 50)^2 for i = 1:l
) + sum((x[i + 6] - x[i + 19])^2 for i = 1:(l - 1))
end
x0 = ones(T, n)
return ADNLPModels.ADNLPModel(f, x0, name = "NZF1"; kwargs...)
end
function NZF1(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
n_orig = n
nbis = max(2, div(n, 13))
n = 13 * nbis
@adjust_nvar_warn("NZF1", n_orig, n)
l = div(n, 13)
function F!(r, x; l = l)
for i = 1:l
r[i] = 3 * x[i] - 60 + 1 // 10 * (x[i + 1] - x[i + 2])^2
r[i + l] =
x[i + 1]^2 +
x[i + 2]^2 +
(x[i + 3]^2) * (1 + x[i + 3])^2 +
x[i + 6] +
x[i + 5] / (1 + x[i + 4]^2 + sin(x[i + 4] / 1000))
r[i + 2l] = x[i + 6] + x[i + 7] - x[i + 8]^2 + x[i + 10]
r[i + 3l] = log(1 + x[i + 10]^2) + x[i + 11] - 5 * x[i + 12] + 20
r[i + 4l] = x[i + 4] + x[i + 5] + x[i + 5] * x[i + 9] + 10 * x[i + 9] - 50
end
for i = 1:(l - 1)
r[i + 5l] = x[i + 6] - x[i + 19]
end
return r
end
x0 = ones(T, n)
return ADNLPModels.ADNLSModel!(F!, x0, 6l - 1, name = "NZF1-nls"; kwargs...)
end