Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
60 changes: 60 additions & 0 deletions src/ADNLPProblems/dembo_gp2.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
export dembo_gp2

function dembo_gp2(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
c = T[
5.35785470,
0.83568910,
37.239239,
-40792.1410,
0.00002584,
-0.00006663,
-0.00000734,
0.000853007,
0.00009395,
-0.00033085,
1330.32937,
-0.42002610,
-0.30585975,
0.00024186,
0.00010159,
0.00007379,
2275.132693,
-0.26680980,
-0.40583930,
0.00029955,
0.00007992,
0.00012157,
]

function f(x)
return c[1] * x[2] + c[2] * x[1] * x[5] + c[3] * x[1] + c[4]
end

function c!(cx, x)
cx[1] = c[5] * x[3] * x[5] + c[6] * x[2] * x[5] + c[7] * x[1] * x[4]
cx[2] = c[8] * x[2] * x[5] + c[9] * x[1] * x[4] + c[10] * x[3] * x[5]
cx[3] = c[11] / (x[2] * x[5]) + c[12] * x[1] / x[5] + c[13] / x[5]
cx[4] = c[14] * x[2] * x[5] + c[15] * x[1] * x[2] + c[16] * x[2]
cx[5] = c[17] / (x[3] * x[5]) + c[18] * x[1] / x[5] + c[19] * x[4] / x[5]
cx[6] = c[20] * x[3] * x[5] + c[21] * x[1] * x[3] + c[22] * x[3] * x[4]
return cx
end

x0 = T[78.62, 33.44, 31.07, 44.18, 35.22]
lvar = T[78.0, 33.0, 27.0, 27.0, 27.0]
uvar = T[102.0, 45.0, 45.0, 45.0, 45.0]
lcon = fill(T(-Inf), 6)
ucon = fill(T(0), 6)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp2";
kwargs...,
)
end
90 changes: 90 additions & 0 deletions src/ADNLPProblems/dembo_gp3.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
export dembo_gp3

function dembo_gp3(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
c = T[
1.715,
0.035,
4.0565,
10.0,
3000.0,
-0.063,
0.59553571e-2,
0.88392857,
-0.11756250,
1.10880000,
0.13035330,
-0.00660330,
0.66173269e-3,
0.17239878e-1,
-0.56595559e-2,
-0.19120592e-1,
0.56850750e2,
1.08702000,
0.32175000,
-0.03762000,
0.00619800,
0.24623121e4,
-0.25125634e2,
0.16118996e3,
5000.0,
-0.48951000e6,
0.44333333e2,
0.33000000,
0.02255600,
-0.00759500,
0.00061000,
-0.0005,
0.81967200,
0.81967200,
24500.0,
-250.0,
0.10204082e-1,
0.12244898e-4,
0.00006250,
0.00006250,
-0.00007625,
1.22,
1.0,
-1.0,
]

function f(x)
return c[1] * x[1] + c[2] * x[1] * x[6] + c[3] * x[3] + c[4] * x[2] + c[5] + c[6] * x[3] * x[5]
end

function c!(cx, x)
cx[1] = c[7] * x[2] + c[8] * x[3] / x[1] + c[9] * x[6]
cx[2] = c[10] * x[1] / x[3] + c[11] * x[1] * x[6] / x[3] + c[12] * x[1] * x[2] / x[3]
cx[3] = c[13] * x[2] + c[14] * x[5] + c[15] * x[4] + c[16] * x[6]
cx[4] = c[17] / x[5] + c[18] * x[6] / x[5] + c[19] * x[4] / x[5] + c[20] * x[2] / x[5]
cx[5] = c[21] * x[7] + c[22] * x[2] / (x[3] * x[4]) + c[23] * x[2] / x[3]
cx[6] = c[24] / x[7] + c[25] * x[2] / (x[3] * x[7]) + c[26] * x[2] / (x[3] * x[4] * x[7])
cx[7] = c[27] / x[7] + c[28] * x[7] / x[5]
cx[8] = c[29] * x[5] + c[30] * x[7]
cx[9] = c[31] * x[3] + c[32] * x[1]
cx[10] = c[33] * x[1] / x[3] + c[34] / x[3]
cx[11] = c[35] * x[2] / (x[3] * x[4]) + c[36] * x[2] / x[3]
cx[12] = c[37] * x[4] + c[38] * x[3] * x[4] / x[2]
cx[13] = c[39] * x[1] * x[6] + c[40] * x[1] + c[41] * x[3]
cx[14] = c[42] * x[3] / x[1] + c[43] / x[1] + c[44] * x[6]
return cx
end

x0 = T[1745.0, 110.0, 3048.0, 89.0, 92.0, 8.0, 145.0]
lvar = T[1.0, 1.0, 1.0, 85.0, 90.0, 3.0, 145.0]
uvar = T[2000.0, 120.0, 5000.0, 93.0, 95.0, 12.0, 162.0]
lcon = fill(T(-Inf), 14)
ucon = fill(T(0), 14)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp3";
kwargs...,
)
end
33 changes: 33 additions & 0 deletions src/ADNLPProblems/dembo_gp4a.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
export dembo_gp4a

function dembo_gp4a(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return T(0.4) * x[1]^T(0.67) * x[7]^T(0.67) + T(0.4) * x[2]^T(0.67) * x[8]^T(0.67) + T(10) - x[1] - x[2]
end

function c!(cx, x)
cx[1] = T(0.0588) * x[5] * x[7] + T(0.1) * x[1]
cx[2] = T(0.0588) * x[6] * x[8] + T(0.1) * x[1] + T(0.1) * x[2]
cx[3] = T(4) * x[3] / x[5] + T(2) * x[3]^T(0.71) / x[5] + T(0.0588) * x[3]^T(1.3) * x[7]
cx[4] = T(4) * x[4] / x[6] + T(2) * x[4]^T(0.71) / x[6] + T(0.0588) * x[4]^T(1.3) * x[8]
return cx
end

x0 = T[6.0, 3.0, 0.4, 0.2, 6.0, 6.0, 1.0, 0.5]
lvar = fill(T(0.1), 8)
uvar = fill(T(10), 8)
lcon = fill(T(-Inf), 4)
ucon = fill(T(0), 4)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp4a";
kwargs...,
)
end
33 changes: 33 additions & 0 deletions src/ADNLPProblems/dembo_gp4b.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
export dembo_gp4b

function dembo_gp4b(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
function f(x)
return T(0.4) * x[1]^T(0.67) * x[7]^T(0.67) + T(0.4) * x[2]^T(0.67) * x[8]^T(0.67) + T(10) - x[1] - x[2]
end

function c!(cx, x)
cx[1] = T(0.0588) * x[5] * x[7] + T(0.1) * x[1]
cx[2] = T(0.0588) * x[6] * x[8] + T(0.1) * x[1] + T(0.1) * x[2]
cx[3] = T(4) * x[3] / x[5] + T(2) * x[3]^T(0.71) / x[5] + T(0.0588) * x[3]^T(1.3) * x[7]
cx[4] = T(4) * x[4] / x[6] + T(2) * x[4]^T(0.71) / x[6] + T(0.0588) * x[4]^T(1.3) * x[8]
return cx
end

x0 = T[6.0, 3.0, 0.4, 0.2, 6.0, 6.0, 1.0, 0.5]
lvar = fill(T(0.1), 8)
uvar = fill(T(10), 8)
lcon = fill(T(-Inf), 4)
ucon = fill(T(0), 4)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp4b";
kwargs...,
)
end
57 changes: 57 additions & 0 deletions src/ADNLPProblems/dembo_gp5.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
export dembo_gp5

function dembo_gp5(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
c = T[
1.0,
1.0,
1.0,
833.33252,
100.0,
-83333.333,
1250.0,
1.0,
-1250.0,
1250000.0,
1.0,
-2500.0,
0.0025,
0.0025,
0.0025,
0.0025,
-0.0025,
0.01,
-0.01,
]

function f(x)
return c[1] * x[1] + c[2] * x[2] + c[3] * x[3]
end

function c!(cx, x)
cx[1] = c[4] * x[4] / (x[1] * x[6]) + c[5] / x[6] + c[6] / (x[1] * x[6])
cx[2] = c[7] * x[5] / (x[2] * x[7]) + c[8] * x[4] / x[7] + c[9] * x[4] / (x[2] * x[7])
cx[3] = c[10] / (x[3] * x[8]) + c[11] * x[5] / x[8] + c[12] * x[5] / (x[3] * x[8])
cx[4] = c[13] * x[4] + c[14] * x[6]
cx[5] = c[15] * x[5] + c[16] * x[7] + c[17] * x[4]
cx[6] = c[18] * x[8] + c[19] * x[5]
return cx
end

x0 = T[5000.0, 5000.0, 5000.0, 200.0, 350.0, 150.0, 225.0, 425.0]
lvar = T[100.0, 1000.0, 1000.0, 10.0, 10.0, 10.0, 10.0, 10.0]
uvar = T[10000.0, 10000.0, 10000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0]
lcon = fill(T(-Inf), 6)
ucon = fill(T(0), 6)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp5";
kwargs...,
)
end
84 changes: 84 additions & 0 deletions src/ADNLPProblems/dembo_gp6.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
export dembo_gp6

function dembo_gp6(; n::Int = default_nvar, type::Type{T} = Float64, kwargs...) where {T}
c = T[
1.0,
1.0,
1.0,
1.262626,
-1.231059,
1.262626,
-1.231059,
1.262626,
-1.231059,
0.034750,
0.975000,
-0.009750,
0.034750,
0.975000,
-0.009750,
1.0,
1.0,
-1.0,
0.002,
0.002,
1.0,
1.0,
-0.002,
-0.002,
1.0,
1.0,
500.0,
-1.0,
-500.0,
0.9,
0.002,
-0.002,
1.0,
1.0,
0.002,
-0.002,
0.034750,
0.975000,
-0.009750,
]

function f(x)
return c[1] * x[11] + c[2] * x[12] + c[3] * x[13]
end

function c!(cx, x)
cx[1] = c[4] * x[8] / x[11] + c[5] * x[1] * x[8] / x[11]
cx[2] = c[6] * x[9] / x[12] + c[7] * x[2] * x[9] / x[12]
cx[3] = c[8] * x[10] / x[13] + c[9] * x[3] * x[10] / x[13]
cx[4] = c[10] * x[2] / x[5] + c[11] * x[2] + c[12] * x[1] / x[5]
cx[5] = c[13] * x[3] / x[6] + c[14] * x[3] + c[15] * x[2] / x[6]
cx[6] = c[16] * x[1] * x[8] / (x[5] * x[7]) + c[17] * x[4] / x[5] + c[18] * x[4] * x[8] / (x[5] * x[7])
cx[7] = c[19] * x[2] * x[9] + c[20] * x[5] * x[8] + c[21] * x[6] + c[22] * x[5] + c[23] * x[1] * x[8] + c[24] * x[6] * x[9]
cx[8] = c[25] * x[3] * x[10] / (x[2] * x[9]) + c[26] * x[6] / x[2] + c[27] / x[9] + c[28] * x[10] / x[9] + c[29] * x[6] / (x[2] * x[9])
cx[9] = c[30] / x[2] + c[31] * x[10] + c[32] * x[3] * x[10] / x[2]
cx[10] = c[33] * x[2] / x[3]
cx[11] = c[34] * x[1] / x[2]
cx[12] = c[35] * x[7] + c[36] * x[8]
cx[13] = c[37] * x[1] / x[4] + c[38] * x[1] + c[39] * x[3] / x[4]
return cx
end

x0 = T[0.50, 0.80, 0.90, 0.10, 0.14, 0.50, 489.0, 80.0, 650.0, 450.0, 150.0, 150.0, 150.0]
lvar = T[0.1, 0.1, 0.9, 0.0001, 0.1, 0.1, 0.1, 0.1, 500.0, 0.1, 1.0, 0.0001, 0.0001]
uvar = T[1.0, 1.0, 1.0, 0.1, 0.9, 0.9, 1000.0, 1000.0, 1000.0, 500.0, 150.0, 150.0, 150.0]
lcon = fill(T(-Inf), 13)
ucon = fill(T(0), 13)

return ADNLPModels.ADNLPModel!(
f,
x0,
lvar,
uvar,
c!,
lcon,
ucon,
name = "dembo_gp6";
kwargs...,
)
end
Loading