1+ export hs85
2+
3+ function hs85 (; type:: Type{T} = Float64, kwargs... ) where {T}
4+ a = T[0 , 17.505 , 11.275 , 214.228 , 7.458 , 0.961 , 1.612 , 0.146 , 107.99 ,
5+ 922.693 , 926.832 , 18.766 , 1072.163 , 8961.448 , 0.063 , 71084.33 , 2802713 ]
6+ b = T[0 , 1053.6667 , 35.03 , 665.585 , 584.463 , 265.916 , 7.046 , 0.222 ,
7+ 273.366 , 1286.105 , 1444.046 , 537.141 , 3247.039 , 26844.086 , 0.386 ,
8+ 140000 , 12146108 ]
9+ c10 = T (12.3 ) / T (752.3 )
10+
11+ # Variable bounds and starting point (exact from the standard model)
12+ lvar = T[704.4148 , 68.6 , 0.0 , 193.0 , 25.0 ]
13+ uvar = T[906.3855 , 288.88 , 134.75 , 287.0966 , 84.1988 ]
14+ x0 = T[900.0 , 80.0 , 115.0 , 267.0 , 27.0 ]
15+
16+ # Best known value ≈ -1.90513375
17+ function f (x:: AbstractVector{T} )
18+ # All intermediates (identical to those used in constraints)
19+ y1 = x[2 ] + x[3 ] + T (41.6 )
20+ c1 = T (0.024 ) * x[4 ] - T (4.62 )
21+ y2 = T (12.5 ) / c1 + T (12 )
22+ c2 = T (0.0003535 ) * x[1 ]^ 2 + T (0.5311 ) * x[1 ] + T (0.08705 ) * y2 * x[1 ]
23+ c3 = T (0.052 ) * x[1 ] + T (78 ) + T (0.002377 ) * y2 * x[1 ]
24+ y3 = c2 / c3
25+ y4 = T (19 ) * y3
26+ c4 = T (0.04782 ) * (x[1 ] - y3) + T (0.1956 ) * (x[1 ] - y3)^ 2 / x[2 ] +
27+ T (0.6376 ) * y4 + T (1.594 ) * y3
28+ c5 = T (100 ) * x[2 ]
29+ c6 = x[1 ] - y3 - y4
30+ c7 = T (0.95 ) - c4 / c5
31+ y5 = c6 * c7
32+ y6 = x[1 ] - y5 - y4 - y3
33+ c8 = (y5 + y4) * T (0.995 )
34+ y7 = c8 / y1
35+ y8 = c8 / T (3798 )
36+ c9 = y7 - T (0.0663 ) * y7 / y8 - T (0.3153 )
37+ y9 = T (96.82 ) / c9 + T (0.321 ) * y1
38+ y10 = T (1.29 ) * y5 + T (1.258 ) * y4 + T (2.29 ) * y3 + T (1.71 ) * y6
39+ y11 = T (1.71 ) * x[1 ] - T (0.452 ) * y4 + T (0.58 ) * y3
40+ c11 = T (1.75 ) * y2 * T (0.995 ) * x[1 ]
41+ c12 = T (0.995 ) * y10 + T (1998 )
42+ y12 = c10 * x[1 ] + c11 / c12
43+ y13 = c12 - T (1.75 ) * y2
44+ y14 = T (3623 ) + T (64.4 ) * x[2 ] + T (58.4 ) * x[3 ] + T (146312 ) / (y9 + x[5 ])
45+ c13 = T (0.995 ) * y10 + T (60.8 ) * x[2 ] + T (48 ) * x[4 ] -
46+ T (0.1121 ) * y14 - T (5095 )
47+ y15 = y13 / c13
48+ y16 = T (148000 ) - T (331000 ) * y15 + T (40 ) * y13 - T (61 ) * y15 * y13
49+ c14 = T (2324 ) * y10 - T (28740000 ) * y2
50+ y17 = T (14130000 ) - T (1328 ) * y10 - T (531 ) * y11 + c14 / c12
51+ c15 = y13 / y15 - y13 / T (0.52 )
52+ c16 = T (1.104 ) - T (0.72 ) * y15
53+ # c17 not needed for objective
54+
55+ return - T (5.843e-7 ) * y17 +
56+ T (1.17e-4 ) * y14 +
57+ T (2.358e-5 ) * y13 +
58+ T (1.502e-6 ) * y16 +
59+ T (0.0321 ) * y12 +
60+ T (0.004324 ) * y5 +
61+ T (1e-4 ) * c15 / c16 +
62+ T (37.48 ) * y2 / c12 +
63+ T (0.1365 )
64+ end
65+
66+ # Constraint function (48 inequalities, all of the form c(x) >= 0)
67+ function c! (cx:: AbstractVector{T} , x:: AbstractVector{T} )
68+ # All intermediates (identical to those used in objective)
69+ y1 = x[2 ] + x[3 ] + T (41.6 )
70+ c1 = T (0.024 ) * x[4 ] - T (4.62 )
71+ y2 = T (12.5 ) / c1 + T (12 )
72+ c2 = T (0.0003535 ) * x[1 ]^ 2 + T (0.5311 ) * x[1 ] + T (0.08705 ) * y2 * x[1 ]
73+ c3 = T (0.052 ) * x[1 ] + T (78 ) + T (0.002377 ) * y2 * x[1 ]
74+ y3 = c2 / c3
75+ y4 = T (19 ) * y3
76+ c4 = T (0.04782 ) * (x[1 ] - y3) + T (0.1956 ) * (x[1 ] - y3)^ 2 / x[2 ] + T (0.6376 ) * y4 + T (1.594 ) * y3
77+ c5 = T (100 ) * x[2 ]
78+ c6 = x[1 ] - y3 - y4
79+ c7 = T (0.95 ) - c4 / c5
80+ y5 = c6 * c7
81+ y6 = x[1 ] - y5 - y4 - y3
82+ c8 = (y5 + y4) * T (0.995 )
83+ y7 = c8 / y1
84+ y8 = c8 / T (3798 )
85+ c9 = y7 - T (0.0663 ) * y7 / y8 - T (0.3153 )
86+ y9 = T (96.82 ) / c9 + T (0.321 ) * y1
87+ y10 = T (1.29 ) * y5 + T (1.258 ) * y4 + T (2.29 ) * y3 + T (1.71 ) * y6
88+ y11 = T (1.71 ) * x[1 ] - T (0.452 ) * y4 + T (0.58 ) * y3
89+ c11 = T (1.75 ) * y2 * T (0.995 ) * x[1 ]
90+ c12 = T (0.995 ) * y10 + T (1998 )
91+ y12 = c10 * x[1 ] + c11 / c12
92+ y13 = c12 - T (1.75 ) * y2
93+ y14 = T (3623 ) + T (64.4 ) * x[2 ] + T (58.4 ) * x[3 ] + T (146312 ) / (y9 + x[5 ])
94+ c13 = T (0.995 ) * y10 + T (60.8 ) * x[2 ] + T (48 ) * x[4 ] - T (0.1121 ) * y14 - T (5095 )
95+ y15 = y13 / c13
96+ y16 = T (148000 ) - T (331000 ) * y15 + T (40 ) * y13 - T (61 ) * y15 * y13
97+ c14 = T (2324 ) * y10 - T (28740000 ) * y2
98+ y17 = T (14130000 ) - T (1328 ) * y10 - T (531 ) * y11 + c14 / c12
99+ c15 = y13 / y15 - y13 / T (0.52 )
100+ c16 = T (1.104 ) - T (0.72 ) * y15
101+ c17 = y9 + x[5 ]
102+ # Constraints
103+ cx[1 ] = T (1.5 ) * x[2 ] - x[3 ]
104+ cx[2 ] = y1 - T (213.1 )
105+ cx[3 ] = T (405.23 ) - y1
106+ cx[4 ] = y2 - a[2 ]
107+ cx[5 ] = y3 - a[3 ]
108+ cx[6 ] = y4 - a[4 ]
109+ cx[7 ] = y5 - a[5 ]
110+ cx[8 ] = y6 - a[6 ]
111+ cx[9 ] = y7 - a[7 ]
112+ cx[10 ] = y8 - a[8 ]
113+ cx[11 ] = y9 - a[9 ]
114+ cx[12 ] = y10 - a[10 ]
115+ cx[13 ] = y11 - a[11 ]
116+ cx[14 ] = y12 - a[12 ]
117+ cx[15 ] = y13 - a[13 ]
118+ cx[16 ] = y14 - a[14 ]
119+ cx[17 ] = y15 - a[15 ]
120+ cx[18 ] = y16 - a[16 ]
121+ cx[19 ] = y17 - a[17 ]
122+ cx[20 ] = b[2 ] - y2
123+ cx[21 ] = b[3 ] - y3
124+ cx[22 ] = b[4 ] - y4
125+ cx[23 ] = b[5 ] - y5
126+ cx[24 ] = b[6 ] - y6
127+ cx[25 ] = b[7 ] - y7
128+ cx[26 ] = b[8 ] - y8
129+ cx[27 ] = b[9 ] - y9
130+ cx[28 ] = b[10 ] - y10
131+ cx[29 ] = b[11 ] - y11
132+ cx[30 ] = b[12 ] - y12
133+ cx[31 ] = b[13 ] - y13
134+ cx[32 ] = b[14 ] - y14
135+ cx[33 ] = b[15 ] - y15
136+ cx[34 ] = b[16 ] - y16
137+ cx[35 ] = b[17 ] - y17
138+ cx[36 ] = y4 - (T (0.28 ) / T (0.72 )) * y5
139+ cx[37 ] = T (21 ) - T (3496 ) * y2 / c12
140+ cx[38 ] = T (62212 ) / c17 - T (110.6 ) - y1
141+ # 10 box constraints (5 lower, 5 upper)
142+ cx[39 ] = x[1 ] - lvar[1 ]
143+ cx[40 ] = x[2 ] - lvar[2 ]
144+ cx[41 ] = x[3 ] - lvar[3 ]
145+ cx[42 ] = x[4 ] - lvar[4 ]
146+ cx[43 ] = x[5 ] - lvar[5 ]
147+ cx[44 ] = uvar[1 ] - x[1 ]
148+ cx[45 ] = uvar[2 ] - x[2 ]
149+ cx[46 ] = uvar[3 ] - x[3 ]
150+ cx[47 ] = uvar[4 ] - x[4 ]
151+ cx[48 ] = uvar[5 ] - x[5 ]
152+ return cx
153+ end
154+ # Constraint bounds: all inequalities of the form c(x) >= 0
155+ m = 48
156+ cl = zeros (T, m)
157+ cu = fill (T (Inf ), m)
158+ return ADNLPModels. ADNLPModel! (
159+ f, x0, lvar, uvar,
160+ c!, cl, cu;
161+ name = " hs85" ,
162+ kwargs...
163+ )
164+ end
0 commit comments