surF is a novel surrogate modeling technique that leverages the discrete Fourier transform to generate a smoother, and possibly easier to explore, fitness landscape.
pip install surfer
First of all, import surF as follows (please mind the upper case F):
from surfer import surF
Assume now that you have a fitness function f()
defined over a search space hypercube
.
In order to build a surrogate model with surF, considering gamma
Fourier coefficients, built with sigma
samples of the fitness landscape and interpolated with a grid with rho
steps, use the following code:
S = surF()
S.specify_fitness(fitness)
S.specify_search_space(hypercube)
S.build_model(coefficients=gamma, numpoints=sigma, resolution=rho)
Now, it is possible to exploit surF's approximate(x)
method to calculate the fitness value of a candidate solution x
using the Fourier surrogate model.
If you find surF useful for your research, please cite our work as follows:
Manzoni L., Papetti D.M., Cazzaniga P., Spolaor S., Mauri G., Besozzi D., Nobile M.S.: Surfing on fitness landscapes: a boost on optimization by Fourier surrogate modeling, Entropy, 22(3):285, 2020
For any information please contact: Luca Manzoni (luca.manzoni@units.it) and Marco S. Nobile (m.s.nobile@tue.nl).