Skip to content

Commit c38d708

Browse files
arnavk23Copilot
andauthored
Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 0a64e74 commit c38d708

12 files changed

Lines changed: 41 additions & 28 deletions

File tree

src/ADNLPProblems/ackley.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
export ackley
2+
using Random
23

34
function ackley(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
5+
rng = get(kwargs, :rng, Random.MersenneTwister(0))
46
function f(x)
57
n = length(x)
68
sum1 = sum(x[i]^2 for i = 1:n)
79
sum2 = sum(cos(2 * T(π) * x[i]) for i = 1:n)
810
return -20 * exp(-T(0.2) * sqrt(sum1 / n)) - exp(sum2 / n) + 20 + T(ℯ)
911
end
10-
x0 = T[-32 + 64 * rand(T) for _ = 1:n]
11-
return ADNLPModels.ADNLPModel(f, x0, name = "ackley"; kwargs...)
12+
x0 = T[-32 + 64 * rand(rng, T) for _ = 1:n]
13+
lvar = fill(T(-32.768), n)
14+
uvar = fill(T(32.768), n)
15+
return ADNLPModels.ADNLPModel(f, x0; lvar = lvar, uvar = uvar, name = "ackley", kwargs...)
1216
end

src/ADNLPProblems/griewank.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
export griewank
22

3-
function griewank(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
3+
function griewank(; n::Int = default_nvar, type::Type{T} = Float64, x0::AbstractVector{T} = T[], kwargs...) where {T}
44
function f(x)
55
n = length(x)
66
sum_term = sum(x[i]^2 for i = 1:n) / 4000
77
prod_term = prod(cos(x[i] / sqrt(T(i))) for i = 1:n)
88
return sum_term - prod_term + 1
99
end
10-
x0 = T[-600 + 1200 * rand(T) for _ = 1:n]
11-
return ADNLPModels.ADNLPModel(f, x0, name = "griewank"; kwargs...)
10+
x0_local = isempty(x0) ? zeros(T, n) : x0
11+
return ADNLPModels.ADNLPModel(f, x0_local, name = "griewank"; kwargs...)
1212
end

src/ADNLPProblems/rastrigin.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ function rastrigin(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...)
55
n = length(x)
66
return 10 * n + sum(x[i]^2 - 10 * cos(2 * T(π) * x[i]) for i = 1:n)
77
end
8-
x0 = T[-5.12 + 10.24 * rand(T) for _ = 1:n]
9-
return ADNLPModels.ADNLPModel(f, x0, name = "rastrigin"; kwargs...)
8+
x0 = zeros(T, n)
9+
lvar = T[-5.12 for _ = 1:n]
10+
uvar = T[5.12 for _ = 1:n]
11+
return ADNLPModels.ADNLPModel(f, x0, lvar = lvar, uvar = uvar, name = "rastrigin"; kwargs...)
1012
end

src/ADNLPProblems/sphere.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ function sphere(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) whe
44
function f(x)
55
return sum(x[i]^2 for i = 1:length(x))
66
end
7-
x0 = T[-1 + 2 * rand(T) for _ = 1:n]
8-
return ADNLPModels.ADNLPModel(f, x0, name = "sphere"; kwargs...)
7+
x0 = zeros(T, n)
8+
lvar = fill(T(-5.12), n)
9+
uvar = fill(T(5.12), n)
10+
return ADNLPModels.ADNLPModel(f, x0; lvar = lvar, uvar = uvar, name = "sphere", kwargs...)
911
end

src/Meta/ackley.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ ackley_meta = Dict(
77
:name => "ackley",
88
:has_equalities_only => false,
99
:has_inequalities_only => false,
10-
:has_bounds => false,
10+
:has_bounds => true,
1111
:has_fixed_variables => false,
1212
:objtype => :other,
1313
:contype => :unconstrained,
14-
:best_known_lower_bound => -Inf,
15-
:best_known_upper_bound => 20.0 + exp(1.0),
14+
:best_known_lower_bound => 0.0,
15+
:best_known_upper_bound => 0.0,
1616
:is_feasible => true,
1717
:defined_everywhere => missing,
1818
:origin => :unknown,

src/Meta/griewank.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ griewank_meta = Dict(
77
:name => "griewank",
88
:has_equalities_only => false,
99
:has_inequalities_only => false,
10-
:has_bounds => false,
10+
:has_bounds => true,
1111
:has_fixed_variables => false,
1212
:objtype => :other,
1313
:contype => :unconstrained,
14-
:best_known_lower_bound => -Inf,
15-
:best_known_upper_bound => 360001.0,
14+
:best_known_lower_bound => 0.0,
15+
:best_known_upper_bound => 0.0,
1616
:is_feasible => true,
1717
:defined_everywhere => missing,
1818
:origin => :unknown,

src/Meta/rastrigin.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ rastrigin_meta = Dict(
1111
:has_fixed_variables => false,
1212
:objtype => :other,
1313
:contype => :unconstrained,
14-
:best_known_lower_bound => -Inf,
15-
:best_known_upper_bound => 10000.0,
14+
:best_known_lower_bound => 0.0,
15+
:best_known_upper_bound => 0.0,
1616
:is_feasible => true,
1717
:defined_everywhere => missing,
1818
:origin => :unknown,

src/Meta/sphere.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ sphere_meta = Dict(
77
:name => "sphere",
88
:has_equalities_only => false,
99
:has_inequalities_only => false,
10-
:has_bounds => false,
10+
:has_bounds => true,
1111
:has_fixed_variables => false,
1212
:objtype => :other,
1313
:contype => :unconstrained,
14-
:best_known_lower_bound => -Inf,
15-
:best_known_upper_bound => 100.0,
14+
:best_known_lower_bound => 0.0,
15+
:best_known_upper_bound => 0.0,
1616
:is_feasible => true,
1717
:defined_everywhere => missing,
1818
:origin => :unknown,

src/PureJuMP/ackley.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ function ackley(args...; n::Int = default_nvar, kwargs...)
2222
nlp = Model()
2323

2424
x0 = [-32 + 64 * rand() for i = 1:n]
25-
@variable(nlp, x[i = 1:n], start = x0[i])
25+
@variable(nlp, -32 <= x[i = 1:n] <= 32, start = x0[i])
26+
nlp.ext[:has_bounds] = true
2627

2728
@objective(
2829
nlp,

src/PureJuMP/griewank.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,18 @@
1515
export griewank
1616

1717
"Griewank multimodal minimization problem"
18-
function griewank(args...; n::Int = default_nvar, kwargs...)
18+
function griewank(args...; n::Int = default_nvar, x0::Union{Nothing,AbstractVector} = nothing, kwargs...)
1919
n < 1 && @warn("griewank: number of variables must be ≥ 1")
2020
n = max(1, n)
2121

2222
nlp = Model()
2323

24-
x0 = [-600 + 1200 * rand() for i = 1:n]
25-
@variable(nlp, x[i = 1:n], start = x0[i])
24+
if x0 === nothing
25+
x0 = zeros(n)
26+
elseif length(x0) != n
27+
throw(ArgumentError("griewank: length(x0) = $(length(x0)) must equal n = $n"))
28+
end
29+
@variable(nlp, -600 <= x[i = 1:n] <= 600, start = x0[i])
2630

2731
@objective(
2832
nlp,

0 commit comments

Comments
 (0)