77
88function nazareth (:: Val{:nlp} ; n:: Int = default_nvar, type:: Type{T} = Float64, kwargs... ) where {T}
99 function f (x; n = length (x))
10+ nh = div (n, 2 )
1011 s = zero (T)
1112 for i = 1 : n
12- Ji = [j for j in max (1 , i- 2 ): min (n, i+ 2 )]
13- nh = div (n, 2 )
14- for j in (1 : n)
15- if abs (j- i) == nh && ! (j in Ji)
16- push! (Ji, j)
17- end
18- end
1913 sumtrig = zero (T)
20- for j in Ji
21- aij = 5 * (1 + mod (i,5 ) + mod (j,5 ))
22- bij = ( i + j) // 10
14+ for j = max ( 1 , i - 2 ) : min (n, i + 2 )
15+ aij = T ( 5 * (1 + mod (i,5 ) + mod (j,5 ) ))
16+ bij = T (( i + j) / 10 )
2317 sumtrig += aij * sin (x[j]) + bij * cos (x[j])
2418 end
19+ for j = 1 : n
20+ if abs (j- i) == nh && (j < max (1 , i- 2 ) || j > min (n, i+ 2 ))
21+ aij = T (5 * (1 + mod (i,5 ) + mod (j,5 )))
22+ bij = T ((i + j) / 10 )
23+ sumtrig += aij * sin (x[j]) + bij * cos (x[j])
24+ end
25+ end
2526 s += (n + i - sumtrig)^ 2
2627 end
27- return s
28+ return s / T (n)
2829 end
29- x0 = fill (one (T) // n , n)
30+ x0 = fill (one (T)/ sqrt ( T (n)) , n)
3031 return ADNLPModels. ADNLPModel (f, x0, name = " nazareth" , minimize = true ; kwargs... )
3132end
3233
3334function nazareth (:: Val{:nls} ; n:: Int = default_nvar, type:: Type{T} = Float64, kwargs... ) where {T}
34- x0 = fill (one (T)/ T (n), n)
35+ x0 = fill (one (T)/ sqrt ( T (n) ), n)
3536 function F! (r, x)
3637 nh = div (n, 2 )
3738 @inbounds for i = 1 : n
@@ -48,7 +49,7 @@ function nazareth(::Val{:nls}; n::Int = default_nvar, type::Type{T} = Float64, k
4849 sumtrig += aij * sin (x[j]) + bij * cos (x[j])
4950 end
5051 end
51- r[i] = n + i - sumtrig
52+ r[i] = ( n + i - sumtrig) / sqrt ( T (n))
5253 end
5354 return r
5455 end
0 commit comments