pytuq.func.bench1d

1d benchmark functions module.

Most of the functions are taken from https://github.com/Vahanosi4ek/pytuq_funcs.

Classes

TFData

TensorFlow function

SineSum

Simple sum of sines

SineSum2

A more complex sum of sines

QuadxExp

Product of quadratic and exponent

LinxSin

Product of linear and sine functions

SinexExp

Product of sine and exp functions

SineLogSum

Sum of sine and log functions

CosineSum

Simple sum of cosines

Sinex

Product of x and sine function

CosineSum2

Simple sum of cosines

Sinusoidal

Simple 1d sine function

Forrester

Forrester function

GramacyLee2

Complicated oscillatory 1d function

Higdon

Higdon function

Holsclaw

Holsclaw function

DampedCosine

A simple 1d cosine function

Module Contents

class pytuq.func.bench1d.TFData(name='tfdata')[source]

Bases: pytuq.func.func.Function

TensorFlow function

Data generating toy model inspired by https://colab.research.google.com/github/tensorflow/probability/blob/master/tensorflow_probability/examples/jupyter_notebooks/Probabilistic_Layers_Regression.ipynb#scrollTo=5zCEYpzu7bDX .

\[f(x)=w_0 x (1 + \sin(x)) + b_0\]

Default constant values are \(w_0 = 0.125\), \(b_0 = 5.0\), \(a = -20.0\), \(b = 60.0\).

name = 'tfdata'[source]
dim = 1[source]
outdim = 1[source]
w0 = 0.125[source]
b0 = 5.0[source]
a = -20.0[source]
b = 60.0[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.SineSum(c1=1.0, c2=10.0 / 3.0, name='SineSum')[source]

Bases: pytuq.func.func.Function

Simple sum of sines

Problem 02 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem02]

\[f(x)=\sin(c_1x)+\sin(c_2x)\]

Default constant values are \(c = (1., 10./3.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.SineSum2(c1=6, name='SineSum2')[source]

Bases: pytuq.func.func.Function

A more complex sum of sines

Problem 03 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem03]

\[f(x)=-\sum_{k=1}^{c_1}k\sin((k+1)x+k)\]

Default constant value is \(c = 6\).

c1 = 6[source]
dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.QuadxExp(c1=16.0, c2=-24.0, c3=5.0, name='QuadxExp')[source]

Bases: pytuq.func.func.Function

Product of quadratic and exponent

Problem 04 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem04]

\[f(x)=-(c_1x^2+c_2x+c_3)e^{-x}\]

Default constant values are \(c = (16., -24., 5.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.LinxSin(c1=1.4, c2=-3.0, c3=18.0, name='LinxSin')[source]

Bases: pytuq.func.func.Function

Product of linear and sine functions

Problem 05 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem05]

\[f(x)=-(c_1-c_2x)sin(c_3x)\]

Default constant values are \(c = (1.4, -3., 18.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.SinexExp(name='SinexExp')[source]

Bases: pytuq.func.func.Function

Product of sine and exp functions

Problem06 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem06]

\[f(x)=-(x+\sin(x))e^{-x^2}\]
dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.SineLogSum(c1=1.0, c2=10 / 3, c3=np.exp(1), c4=-0.84, c5=3.0, name='SineLogSum')[source]

Bases: pytuq.func.func.Function

Sum of sine and log functions

Problem07 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem07]

\[f(x)=\sin(c_1x) + \sin(c_2x) + \log_{c_3}(x) + c_4x + c_5\]

Default constant values are \(c = (1., 10/3, e, -0.84, 3.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.CosineSum(c1=6, name='CosineSum')[source]

Bases: pytuq.func.func.Function

Simple sum of cosines

Problem 08 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem08]

\[f(x)=-\sum_{k=1}^{c_1}k\cos((k+1)x+k)\]

Default constant value is \(c = 6\).

c1 = 6[source]
dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.Sinex(name='Sinex')[source]

Bases: pytuq.func.func.Function

Product of x and sine function

Problem10 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem10]

\[f(x)=-x\sin(x)\]
dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.CosineSum2(c1=2.0, c2=2.0, name='CosineSum2')[source]

Bases: pytuq.func.func.Function

Simple sum of cosines

Problem11 [https://infinity77.net/global_optimization/test_functions_1d.html#go_benchmark.Problem11]

\[f(x)=c_1\cos(x) + \cos(c_2x)\]

Default constant values are \(c = (2., 2.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.Sinusoidal(c1=2.0, c2=0.1, name='Sinusoidal')[source]

Bases: pytuq.func.func.Function

Simple 1d sine function

Sinusoidal [https://www.sfu.ca/~ssurjano/curretal88sin.html]

\[f(x)=\sin(c_1\pi(x-c_2))\]

Default constant values are \(c = (2., 0.1)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.Forrester(c1=6.0, c2=2.0, c3=12.0, c4=4.0, name='Forrester')[source]

Bases: pytuq.func.func.Function

Forrester function

Forrester [https://www.sfu.ca/~ssurjano/forretal08.html]

\[f(x)=(c_1x-c_2)^2\sin(c_3x-c_4)\]

Default constant values are \(c = (6., 2., 12., 4)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.GramacyLee2(c1=10.0, c2=2.0, c3=1.0, c4=4.0, name='GramacyLee2')[source]

Bases: pytuq.func.func.Function

Complicated oscillatory 1d function

Gramacy and Lee (2012) [https://www.sfu.ca/~ssurjano/grlee12.html]

\[f(x)=\frac{\sin(c_1\pi x)}{c_2x}+(x-c_3)^{c_4}\]

Default constant values are \(c = (10., 2., 1., 4.)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.Higdon(c1=10.0, c2=0.2, c3=2.5, name='Higdon')[source]

Bases: pytuq.func.func.Function

Higdon function

Higdon (2002) [https://www.sfu.ca/~ssurjano/hig02.html]

\[f(x)=\sin(2\pi x/c_1) + c_2\sin(2\pi x/c_3)\]

Default constant values are \(c = (10., 0.2, 2.5)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.Holsclaw(c1=10.0, name='Holsclaw')[source]

Bases: pytuq.func.func.Function

Holsclaw function

Holsclaw et al. [https://www.sfu.ca/~ssurjano/holsetal13sin.html]

\[f(x)=\frac{x\sin(x)}{c_1}\]

Default constant value is \(c = 10.0\).

c1 = 10.0[source]
dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray

class pytuq.func.bench1d.DampedCosine(c1=-1.4, c2=3.5, name='DampedCosine')[source]

Bases: pytuq.func.func.Function

A simple 1d cosine function

Damped Cosine [https://www.sfu.ca/~ssurjano/santetal03dc.html]

\[f(x)=e^{c_1x}\cos(c_2\pi x)\]

Default constant values are \(c = (-1.4, 3.5)\).

dim = 1[source]
outdim = 1[source]
grad(x)[source]

Gradient evaluator.

Parameters:

x (np.ndarray) – Input 2d array of size \((N,d)\).

Returns:

Output 3d array of size \((N,o,d)\).

Return type:

np.ndarray