@@ -119,7 +119,10 @@ class AckleyN3:
119
119
latex_formula = r'f(x, y) = -200exp(-0.2\sqrt{x^2 + y^2}) + 5exp(cos(3x) + sin(3y))'
120
120
latex_formula_dimension = r'd=2'
121
121
latex_formula_input_domain = r'x \in [-32, 32], y \in [-32, 32]'
122
- latex_formula_global_minimum = r'f(x, y)\approx-195.629028238419, at$$ $$x=\pm0.682584587365898, and$$ $$ y=-0.36075325513719'
122
+ latex_formula_global_minimum = (
123
+ r"f(x, y)\approx-186.4112127, at$$ $$x=\approx0.0000000008,"
124
+ r" and$$ $$ y\approx-0.0068"
125
+ )
123
126
continuous = False
124
127
convex = False
125
128
separable = False
@@ -139,8 +142,8 @@ def __init__(self, d=None):
139
142
def get_param (self ):
140
143
return {}
141
144
142
- def get_global_minimum (self , d ):
143
- X = np .array ([0.682584587365898 , - 0.36075325513719 ])
145
+ def get_global_minimum (self ):
146
+ X = np .array ([8.27712029e-10 , - 6.77344009e-03 ])
144
147
return (X , self (X ))
145
148
146
149
def __call__ (self , X ):
@@ -189,7 +192,7 @@ class Adjiman:
189
192
latex_formula = r'f(x, y)=cos(x)sin(y) - \frac{x}{y^2+1}'
190
193
latex_formula_dimension = r'd=2'
191
194
latex_formula_input_domain = r'x \in [-1, 2], y \in [-1, 1]'
192
- latex_formula_global_minimum = r'f(0 , 0)=-2.02181'
195
+ latex_formula_global_minimum = r'f(2 , 0.10578347 )=-2.02181'
193
196
continuous = True
194
197
convex = False
195
198
separable = False
@@ -211,8 +214,7 @@ def get_param(self):
211
214
return {}
212
215
213
216
def get_global_minimum (self , d ):
214
- X = np .array ([1 / (i + 1 ) for i in range (d )])
215
- X = np .array ([0 , 0 ])
217
+ X = np .array ([2 , 0.10578347 ])
216
218
return (X , self (X ))
217
219
218
220
def __call__ (self , X ):
@@ -356,7 +358,7 @@ def get_global_minimum(self, d):
356
358
357
359
def __call__ (self , X ):
358
360
x , y = X
359
- res = (1.5 - x + x * y ) ** 2 + (2.25 - x + x * y ** 2 )** 2 + (2.625 - x + x * y ** 3 )* 2
361
+ res = (1.5 - x + x * y ) ** 2 + (2.25 - x + x * y ** 2 )** 2 + (2.625 - x + x * y ** 3 )** 2
360
362
return res
361
363
362
364
class Bird :
@@ -801,7 +803,7 @@ class DeckkersAarts:
801
803
latex_formula = r'f(x, y) = 10^5x^2 + y^2 -(x^2 + y^2)^2 + 10^{-5}(x^2 + y^2)^4'
802
804
latex_formula_dimension = r'd=2'
803
805
latex_formula_input_domain = r'x \in [-20, 20], y \in [-20, 20]'
804
- latex_formula_global_minimum = r' f(0, \pm15)\approx25628.906250000004'
806
+ latex_formula_global_minimum = r" f(0, \pm15)\approx-17320.76671"
805
807
continuous = True
806
808
convex = False
807
809
separable = False
@@ -858,7 +860,7 @@ def get_param(self):
858
860
return {}
859
861
860
862
def get_global_minimum (self , d ):
861
- X = np .array ([2 ** (( - 2 ** ( i ) - 2 )/ 2 ** i ) for i in range (1 , d + 1 )])
863
+ X = np .array ([2 ** ( - (( 2 ** i ) - 2 ) / 2 ** i ) for i in range (1 , d + 1 )])
862
864
return (X , self (X ))
863
865
864
866
def __call__ (self , X ):
@@ -1615,11 +1617,15 @@ def get_global_minimum(self, d):
1615
1617
return (X , self (X ))
1616
1618
1617
1619
def __call__ (self , X ):
1618
- d = X .shape [0 ]
1619
- res = np .sum ([(np .sum ([((j + 1 ) + self .beta * (X [j ] ** (i + 1 ) - j ** (i + 1 )))
1620
- for j in range (d )])) ** 2
1621
- for i in range (d )])
1622
- return res
1620
+ d = X .shape [0 ]
1621
+ j = np .arange (1 , d + 1 )
1622
+ res = np .sum (
1623
+ [
1624
+ np .sum ((j + self .beta ) * (X ** i - (1 / j ) ** i )) ** 2
1625
+ for i in range (1 , d + 1 )
1626
+ ]
1627
+ )
1628
+ return res
1623
1629
1624
1630
class PermDBeta :
1625
1631
name = 'Perm d, beta'
@@ -1648,8 +1654,9 @@ def __init__(self, d, beta=0.5):
1648
1654
def get_param (self ):
1649
1655
return {'beta' : self .beta }
1650
1656
1651
- def get_global_minimum (self , d ):
1652
- X = np .array ([1 / (i + 1 ) for i in range (d )])
1657
+ def get_global_minimum (self ):
1658
+ d = self .d
1659
+ X = np .arange (1 , d )
1653
1660
return (X , self (X ))
1654
1661
1655
1662
def __call__ (self , X ):
@@ -1953,8 +1960,8 @@ def __call__(self, X):
1953
1960
res = res + 0.1 * np .sqrt (np .sum (X ** 2 ))
1954
1961
return res
1955
1962
1956
- class SchaffelN1 :
1957
- name = 'Schaffel N. 1'
1963
+ class SchafferN1 :
1964
+ name = 'Schaffer N. 1'
1958
1965
latex_formula = r'f(x, y)=0.5 + \frac{sin^2(x^2+y^2)^2-0.5}{(1+0.001(x^2+y^2))^2}'
1959
1966
latex_formula_dimension = r'd=2'
1960
1967
latex_formula_input_domain = r'x \in [-100, 100], y \in [-100, 100]'
@@ -1988,8 +1995,8 @@ def __call__(self, X):
1988
1995
res = 0.5 + (np .sin ((x ** 2 + y ** 2 )** 2 )** 2 - 0.5 )/ (1 + 0.001 * (x ** 2 + y ** 2 ))** 2
1989
1996
return res
1990
1997
1991
- class SchaffelN2 :
1992
- name = 'Schaffel N. 2'
1998
+ class SchafferN2 :
1999
+ name = 'Schaffer N. 2'
1993
2000
latex_formula = r'f(x, y)=0.5 + \frac{sin^2(x^2-y^2)-0.5}{(1+0.001(x^2+y^2))^2}'
1994
2001
latex_formula_dimension = r'd=2'
1995
2002
latex_formula_input_domain = r'x \in [-100, 100], y \in [-100, 100]'
@@ -2023,8 +2030,8 @@ def __call__(self, X):
2023
2030
res = 0.5 + (np .sin ((x ** 2 + y ** 2 ))** 2 - 0.5 )/ (1 + 0.001 * (x ** 2 + y ** 2 ))** 2
2024
2031
return res
2025
2032
2026
- class SchaffelN3 :
2027
- name = 'Schaffel N. 3'
2033
+ class SchafferN3 :
2034
+ name = 'Schaffer N. 3'
2028
2035
latex_formula = r'f(x, y)=0.5 + \frac{sin^2(cos(|x^2-y^2|))-0.5}{(1+0.001(x^2+y^2))^2}'
2029
2036
latex_formula_dimension = r'd=2'
2030
2037
latex_formula_input_domain = r'x \in [-100, 100], y \in [-100, 100]'
@@ -2058,9 +2065,9 @@ def __call__(self, X):
2058
2065
res = 0.5 + (np .sin (np .cos (np .abs (x ** 2 + y ** 2 )))** 2 - 0.5 )/ (1 + 0.001 * (x ** 2 + y ** 2 ))** 2
2059
2066
return res
2060
2067
2061
- class SchaffelN4 :
2062
- name = 'Schaffel N. 4'
2063
- latex_formula = r' f(x, y)=0.5 + \frac{sin ^2(cos (|x^2-y^2|))-0.5}{(1+0.001(x^2+y^2))^2}'
2068
+ class SchafferN4 :
2069
+ name = 'Schaffer N. 4'
2070
+ latex_formula = r" f(x, y)=0.5 + \frac{cos ^2(sin (|x^2-y^2|))-0.5}{(1+0.001(x^2+y^2))^2}"
2064
2071
latex_formula_dimension = r'd=2'
2065
2072
latex_formula_input_domain = r'x \in [-100, 100], y \in [-100, 100]'
2066
2073
latex_formula_global_minimum = r'f(0, 1.253115)\approx0.292579'
@@ -2090,7 +2097,7 @@ def get_global_minimum(self, d):
2090
2097
2091
2098
def __call__ (self , X ):
2092
2099
x , y = X
2093
- res = 0.5 + (np .cos (np .sin (np .abs (x ** 2 + y ** 2 )))** 2 - 0.5 )/ (1 + 0.001 * (x ** 2 + y ** 2 ))** 2
2100
+ res = 0.5 + (np .cos (np .sin (np .abs (x ** 2 - y ** 2 )))** 2 - 0.5 )/ (1 + 0.001 * (x ** 2 + y ** 2 ))** 2
2094
2101
return res
2095
2102
2096
2103
class Schwefel :
@@ -2347,9 +2354,10 @@ def get_global_minimum(self, d):
2347
2354
return None
2348
2355
2349
2356
def __call__ (self , X ):
2350
- d = X .shape [0 ]
2351
- for i in range (0 ,d ):
2352
- res = np .prod (np .sum ([i * np .cos ((j + 1 )* X [i ] + j ) for j in range (1 , 5 + 1 )]))
2357
+ j = np .arange (1 , 6 )[None , :]
2358
+ res = np .cos ((j + 1 ) * X [:, None ] + j ) \
2359
+ .sum (axis = 1 ) \
2360
+ .prod ()
2353
2361
return res
2354
2362
2355
2363
class ShubertN3 :
@@ -2565,7 +2573,7 @@ def __call__(self, X):
2565
2573
2566
2574
class Trid :
2567
2575
name = 'Trid'
2568
- latex_formula = r' f(\mathbf{x})=\sum_{i=1}^{d}(x_i-1)^2-\sum_{i=2}^{d}(x_i-1x_ {i-1})'
2576
+ latex_formula = r" f(\mathbf{x})=\sum_{i=1}^{d}(x_i-1)^2-\sum_{i=2}^{d}(x_ix_ {i-1})"
2569
2577
latex_formula_dimension = r'd \in \mathbb{N}_{+}^{*}'
2570
2578
latex_formula_input_domain = r'x_i \in [-d^2, d^2], \forall i \in \llbracket 1, d\rrbracket'
2571
2579
latex_formula_global_minimum = r'f(\mathbf{x}) =\frac{-d(d+4)(d-1)}{6}, $$$$x_i=i(d+1-i)'
@@ -2596,7 +2604,7 @@ def get_global_minimum(self, d):
2596
2604
def __call__ (self , X ):
2597
2605
d = X .shape [0 ]
2598
2606
i = np .arange (1 , d + 1 )
2599
- res = np .sum (X - 1 ) ** 2 - np .sum (X [1 :]* X [:- 1 ])
2607
+ res = np .sum (( X - 1 ) ** 2 ) - np .sum (X [1 :] * X [:- 1 ])
2600
2608
return res
2601
2609
2602
2610
class Wolfe :
0 commit comments