go: add bench funcs
All checks were successful
continuous-integration/drone/push Build is passing

* Schwefel
* 1st De Jong
* 2nd De Jong
This commit is contained in:
surtur 2022-06-15 00:26:35 +02:00
parent ab14e97f16
commit ae7e912284
Signed by: wanderer
GPG Key ID: 19CE1EC1D9E0486D

59
bench/bench.go Normal file

@ -0,0 +1,59 @@
// Copyright 2022 wanderer <a_mirre at utb dot cz>
// SPDX-License-Identifier: GPL-3.0-or-later
package bench
import "math"
type funcParams struct {
min float64
max float64
}
const (
Neighbourhood = 10
// MaxFES is the maximum number of allowed function evaluations.
MaxFES = 10000
)
var (
// Dimensions to compute for (spatial complexity..?).
Dimensions = []int{5, 10, 20}
SchwefelParams = funcParams{min: -500.0, max: 500.0}
DeJong1Params = funcParams{min: -5.0, max: 5.0}
DeJong2Params = funcParams{min: -5.0, max: 5.0}
)
// Schwefel computes a value of the Schwefel function for x.
func Schwefel(x []float64) float64 {
var res float64
for _, val := range x {
res += val * math.Sin(math.Sqrt(math.Abs(val)))
}
return 418.9829*float64(len(x)) - res
}
// DeJong1st computes the value of the 1st De Jong function for x.
func DeJong1st(x []float64) float64 {
var res float64
for _, val := range x {
res += math.Floor(val)
}
return res
}
// DeJong2nd computes the value of the 2nd De Jong function for x.
func DeJong2nd(x []float64) float64 {
var res float64
for _, val := range x {
res += math.Pow(val, 2)
}
return res
}