Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0dd9322
Add Dembo geometric programming test problems from 1976 paper (issue …
arnavk23 Mar 2, 2026
86e206a
Remove dembo_gp4c files for renaming to dembo_gp4b
arnavk23 Mar 2, 2026
b13e1a8
Create dembo_gp4b files with correct naming (was dembo_gp4c)
arnavk23 Mar 2, 2026
c76b7c1
Fix dembo_gp1b: align ADNLPProblems and PureJuMP constraints
arnavk23 Mar 2, 2026
24f0c4c
Fix dembo_gp3: align ADNLPProblems with PureJuMP formulation
arnavk23 Mar 2, 2026
3bfcbf6
Fix dembo_gp4a and dembo_gp5 objectives to match PureJuMP
arnavk23 Mar 2, 2026
20534d0
Fix dembo_gp6 and dembo_gp7 objectives and constraints to match PureJuMP
arnavk23 Mar 2, 2026
bbdfdd5
Fix dembo_gp8a: replace with correct linear programming formulation
arnavk23 Mar 2, 2026
bc86bab
Apply suggestions from code review
arnavk23 Mar 2, 2026
144107a
Fix dembo_gp meta files: change contype to :general
arnavk23 Mar 2, 2026
f4ff472
Fix remaining meta field type errors - origin must be Symbol
arnavk23 Mar 2, 2026
02a054d
Clean up dembo_gp meta files: remove invalid fields and fix origin sy…
arnavk23 Mar 2, 2026
b8b80d9
Fix dembo_gp1a: align ADNLP with PureJuMP linear constraint
arnavk23 Mar 2, 2026
ee84f5c
Fix metadata constraint type classification for dembo_gp problems
arnavk23 Mar 2, 2026
c65a772
Delete BF01580667.pdf
arnavk23 Mar 2, 2026
7286727
Merge branch 'JuliaSmoothOptimizers:main' into fix/dembo-geometric-pr…
arnavk23 Mar 2, 2026
4396ce1
Fix: Separate linear constraints from nonlinear in dembo_gp problems
arnavk23 Mar 2, 2026
59e1036
Apply suggestions from code review
arnavk23 Mar 3, 2026
d6c3cdf
Add variable bounds to dembo_gp4a to match PureJuMP version
arnavk23 Mar 3, 2026
1cfcf31
Move docstrings from ADNLPProblems to PureJuMP for dembo_gp problems
arnavk23 Mar 3, 2026
09d3dfb
Apply suggestions from code review
arnavk23 Mar 3, 2026
4efa1d6
copilot suggestions
arnavk23 Mar 3, 2026
bcedfac
Rebuild Dembo GP problems 2-7 from 1976 paper
arnavk23 Mar 3, 2026
3254c1b
Remove debug artifacts and PDF extraction files
arnavk23 Mar 3, 2026
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/dembo_gp1a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
export dembo_gp1a

function dembo_gp1a(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return exp(x[1]) + exp(x[2])
end

function c!(cx, x)
# Constraint: 0.5*(1 + exp(-x1)) + 0.5*(1 + exp(-x2)) >= 1
# Rewritten as: 0.5 + 0.5*exp(-x1) + 0.5 + 0.5*exp(-x2) - 1 >= 0
# Or: 0.5*exp(-x1) + 0.5*exp(-x2) >= 0 (always satisfied)
# The original form from the paper:
cx[1] = 0.5 / (1 + exp(-x[1])) + 0.5 / (1 + exp(-x[2]))
return cx
end

x0 = T[0.0, 0.0]
lcon = T[1.0]
ucon = T[Inf]
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp1a"; kwargs...)
end
18 changes: 18 additions & 0 deletions src/ADNLPProblems/dembo_gp1b.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export dembo_gp1b

function dembo_gp1b(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return exp(x[1]) + exp(x[2])
end

function c!(cx, x)
# Constraint variant
cx[1] = (1 + exp(-x[1]))^(-1) + (1 + exp(-x[2]))^(-1)
return cx
end

x0 = T[0.0, 0.0]
lcon = T[1.0]
ucon = T[Inf]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp1b"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
19 changes: 19 additions & 0 deletions src/ADNLPProblems/dembo_gp2.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export dembo_gp2

function dembo_gp2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return (x[1]+1)^2 + (x[2]+1)^2 + (x[3]+1)^2
end

function c!(cx, x)
# Constraints from geometric programming
cx[1] = x[1] + x[2] - x[3]
cx[2] = x[1]^2 + x[2]^2 - 1
return cx
end

x0 = T[1.0, 1.0, 1.0]
lcon = T[0.0, -Inf]
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
ucon = T[0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp2"; kwargs...)
end
19 changes: 19 additions & 0 deletions src/ADNLPProblems/dembo_gp3.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export dembo_gp3

function dembo_gp3(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return 0.5 * x[1] * x[4] + 0.5 * x[2] * x[4] + x[3]
end

function c!(cx, x)
cx[1] = x[1]^3 + x[2]^3 - 1
cx[2] = x[1]^2 * x[3] - 1
cx[3] = x[4]^2 - 1
return cx
end

x0 = T[0.5, 0.5, 0.5, 1.0]
lcon = T[0.0, 0.0, 0.0]
ucon = T[0.0, 0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp3"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
18 changes: 18 additions & 0 deletions src/ADNLPProblems/dembo_gp4a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export dembo_gp4a

function dembo_gp4a(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return x[1] * x[2] * x[3] * x[4] * x[5]
end

function c!(cx, x)
cx[1] = x[1] + x[2] + x[3] + x[4] + x[5] - 5
cx[2] = x[1]^2 + x[2]^2 + x[3]^2 + x[4]^2 + x[5]^2 - 5
return cx
end

x0 = T[1.0, 1.0, 1.0, 1.0, 1.0]
lcon = T[0.0, 0.0]
ucon = T[0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp4a"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
17 changes: 17 additions & 0 deletions src/ADNLPProblems/dembo_gp4c.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export dembo_gp4b

function dembo_gp4b(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return x[1] * x[2] * x[3] * x[4] * x[5]
end

function c!(cx, x)
cx[1] = x[1] + 2*x[2] + 3*x[3] + 4*x[4] + 5*x[5] - 3
return cx
end

x0 = T[1.0, 1.0, 1.0, 1.0, 1.0]
lcon = T[0.0]
ucon = T[0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp4b"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
18 changes: 18 additions & 0 deletions src/ADNLPProblems/dembo_gp5.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export dembo_gp5

function dembo_gp5(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return 10*x[1]*x[2]*x[3]
end

function c!(cx, x)
cx[1] = x[1] + 2*x[2] + 2*x[3] - 72
cx[2] = 2*x[1] + x[2] + 2*x[3] - 100
return cx
end

x0 = T[10.0, 10.0, 10.0]
lcon = T[0.0, 0.0]
ucon = T[0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp5"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
19 changes: 19 additions & 0 deletions src/ADNLPProblems/dembo_gp6.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export dembo_gp6

function dembo_gp6(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return (0.5*x[1]*x[4] + 0.25*x[2]*x[4] + 0.25*x[3]*x[4])
end

function c!(cx, x)
cx[1] = x[1]^(0.2) + x[2]^(0.2) + x[3]^(0.2) - 100
cx[2] = x[1]^2 + x[2]^2 + x[3]^2 - 10
cx[3] = x[4] - 0.5
return cx
end

x0 = T[10.0, 10.0, 10.0, 1.0]
lcon = T[0.0, 0.0, 0.0]
ucon = T[0.0, 0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp6"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
18 changes: 18 additions & 0 deletions src/ADNLPProblems/dembo_gp7.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export dembo_gp7

function dembo_gp7(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return 0.5*x[1] + 0.6*x[2] - 0.5*x[3]*x[4]
end

function c!(cx, x)
cx[1] = x[1] + x[2] - 2*x[3] - 2*x[4]
cx[2] = x[1]^2 + x[2]^2 - 4*x[3] - 4*x[4]
return cx
end

x0 = T[1.0, 1.0, 1.0, 1.0]
lcon = T[0.0, 0.0]
ucon = T[0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp7"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
20 changes: 20 additions & 0 deletions src/ADNLPProblems/dembo_gp8a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export dembo_gp8a

function dembo_gp8a(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return (x[1] - 10)^2 + 5*(x[2] - 12)^2 + x[3]^4 + 3*(x[4] - 11)^2 + 10*x[5]^6 + 7*x[6]^2 + x[7]^4 - 4*x[6]*x[7] - 10*x[6] - 8*x[7]
end

function c!(cx, x)
cx[1] = 2*x[1]^2 + 3*x[2]^4 + x[3] + 4*x[4]^2 + 5*x[5] + 127
cx[2] = 7*x[1] + 8*x[2] + x[3]^2 + 100 - 3*x[4]
cx[3] = 23*x[1]^2 + x[2]^2 + 6*x[6]^2 - 8*x[7] - 196
cx[4] = 4*x[1]^2 + x[2]^2 - 3*x[1]*x[2] + 2*x[3]^2 + 5*x[6] - 11*x[7] - 40
return cx
end

x0 = T[2.0, 3.0, -1.0, 1.0, 2.0, 9.9, 1.4]
lcon = T[-Inf, -Inf, -Inf, -Inf]
ucon = T[0.0, 0.0, 0.0, 0.0]
return ADNLPModels.ADNLPModel!(f, x0, c!, lcon, ucon, name = "dembo_gp8a"; kwargs...)
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
end
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp1a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp1a_meta = Dict(
:nvar => 2,
:variable_nvar => false,
:ncon => 1,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp1a",
:has_equalities_only => false,
:has_inequalities_only => true,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp1a_nvar(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp1a_ncon(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp1a_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp1a_nnln(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp1a_nequ(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp1a_nineq(; n::Integer = default_nvar, kwargs...) = 1
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp1b.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp1b_meta = Dict(
:nvar => 2,
:variable_nvar => false,
:ncon => 1,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp1b",
:has_equalities_only => false,
:has_inequalities_only => true,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp1b_nvar(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp1b_ncon(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp1b_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp1b_nnln(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp1b_nequ(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp1b_nineq(; n::Integer = default_nvar, kwargs...) = 1
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp2.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp2_meta = Dict(
:nvar => 3,
:variable_nvar => false,
:ncon => 2,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp2",
:has_equalities_only => true,
:has_inequalities_only => false,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp2_nvar(; n::Integer = default_nvar, kwargs...) = 3
get_dembo_gp2_ncon(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp2_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp2_nnln(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp2_nequ(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp2_nineq(; n::Integer = default_nvar, kwargs...) = 0
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp3.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp3_meta = Dict(
:nvar => 4,
:variable_nvar => false,
:ncon => 3,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp3",
:has_equalities_only => true,
:has_inequalities_only => false,
:has_bounds => false,
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp3_nvar(; n::Integer = default_nvar, kwargs...) = 4
get_dembo_gp3_ncon(; n::Integer = default_nvar, kwargs...) = 3
get_dembo_gp3_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp3_nnln(; n::Integer = default_nvar, kwargs...) = 3
get_dembo_gp3_nequ(; n::Integer = default_nvar, kwargs...) = 3
get_dembo_gp3_nineq(; n::Integer = default_nvar, kwargs...) = 0
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp4a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp4a_meta = Dict(
:nvar => 5,
:variable_nvar => false,
:ncon => 2,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp4a",
:has_equalities_only => true,
:has_inequalities_only => false,
:has_bounds => false,
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp4a_nvar(; n::Integer = default_nvar, kwargs...) = 5
get_dembo_gp4a_ncon(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp4a_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp4a_nnln(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp4a_nequ(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp4a_nineq(; n::Integer = default_nvar, kwargs...) = 0
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp4c.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp4b_meta = Dict(
:nvar => 5,
:variable_nvar => false,
:ncon => 1,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp4b",
:has_equalities_only => true,
:has_inequalities_only => false,
:has_bounds => false,
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
)
get_dembo_gp4b_nvar(; n::Integer = default_nvar, kwargs...) = 5
get_dembo_gp4b_ncon(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp4b_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp4b_nnln(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp4b_nequ(; n::Integer = default_nvar, kwargs...) = 1
get_dembo_gp4b_nineq(; n::Integer = default_nvar, kwargs...) = 0
25 changes: 25 additions & 0 deletions src/Meta/dembo_gp5.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
dembo_gp5_meta = Dict(
:nvar => 3,
:variable_nvar => false,
:ncon => 2,
:variable_ncon => false,
:minimize => true,
:name => "dembo_gp5",
:has_equalities_only => true,
:has_inequalities_only => false,
:has_bounds => false,
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
:has_fixed_variables => false,
:objtype => :other,
:contype => :nonlinearly_constrained,
:best_known_lower_bound => -Inf,
:best_known_upper_bound => Inf,
:is_feasible => true,
:defined_everywhere => missing,
:origin => "Dembo, Ron S. A set of geometric programming test problems and their solutions. Mathematical Programming 10.1 (1976): 192-213.",
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
)
get_dembo_gp5_nvar(; n::Integer = default_nvar, kwargs...) = 3
get_dembo_gp5_ncon(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp5_nlin(; n::Integer = default_nvar, kwargs...) = 0
get_dembo_gp5_nnln(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp5_nequ(; n::Integer = default_nvar, kwargs...) = 2
get_dembo_gp5_nineq(; n::Integer = default_nvar, kwargs...) = 0
Comment thread
arnavk23 marked this conversation as resolved.
Outdated
Loading
Loading