The Moving Peaks Benchmark


The Moving Peaks Benchmark is a fitness function changing over time. It consists of a number of peaks, changing in height, width and location. A simple visualization has been included below, a more formal description can be found here. Two similar versions of this benchmark have been proposed independently at the Congress of Evoluationary Computation held at Washington D.C. in July 1999 by Jürgen Branke resp. Ron Morrison and Ken DeJong. The version compiled here tries to cover many (but not all) of the features available at either of the original versions, and adds some more. Also, it is programmed to be easily expandable. Eventually, I still hope that we can come up with a unified version, but since this took too long, we decided it would be a good idea to release the current version. I will try to ensure that future versions remain compatible with this one.

Parameters

The benchmark allows to set the following parameters:

Functions Provided

The module can be easily incorporated into any C program. Simply include the movpeaks.h file which allows you to call the functions

Performance Evaluation

To allow convenient evaluation of an EA and to guarantee fair comparisons, the benchmark includes a number of evaluation functions: Although offline performance is a more established measure, since for Moving Peaks the optimum at all times is known, we recommend to use the error measures. By comparing to the optimum, they mask out the effects of a changing optimum.

Source Code


All other variables can be influenced from the main program by declaring them extern, an example is given  in movmain.c.

To download the source code,click here.

There is also a graphic version available that requires the QT library and a C++ compiler. It allows to view a 2-dimensional moving peaks landscape in motion. On the right you can see an example ouput of this version. When you click on the image, you will see 15 consecutive changes of the landscape, then starting again from the beginning. The source code of the graphical version is also available for download. Allways keep in mind that this can only show 2-dimensional versions of the benchmark.

Direct any questions or suggestions to Jürgen Branke, Institute AIFB, University of Germany, Karlsruhe. I will try to maintain the module, adding additional features, more standard settings, and increase usability.

If you experience any problems, find any bugs, or would like to have another feature added, please drop me a note. I will give my best efforts to respond timely.

Standard Settings

No matter how many features a benchmark provides, it is only useful when it is possible to reproduce it.
In the following, I will try to maintain a set of standard settings, with references and results. If you use other settings, or obtain better results with the settings below, let me know.
Scenario   1 2 3
movrand 1 1-5 1
no of peaks 5 10-200 50
no of dimensions 5 5 5
minheight 30 30 30
maxheight 70 70 70
stdheight 50 50 0
minwidth 0.0001 1.0 1.0
maxwidth 0.2 12.0 12.0
stdwidth 0.1 0.0 0.0
mincoordinate 0 0 0
maxcoordinate 100 100 100
vlength 0.0-2.0 0.0-3.0 1.0
height_severity 7.0 7.0 1.0
width_severity 0.01 1.0 0.5
use_basis_function FALSE FALSE TRUE
correlation lambda 0.0 0.0-1.0 0.5
change every x evaluations 5000 1000-5000 1000
peak_function function1 cone cone
change_stepsize constant constant constant

Remarks concerning the different scenarios:

1.  The settings I used in my CEC paper [2] are no longer exactly reproducable with this benchmark. The settings from scenario 1 would probably come closest.

2. For a recent paper [4], I have run a number of experiments with scenario2. It uses more peaks, a different peak shape, and different correlation values. To give an idea for performance, using scenario 2 with a change every 5000 evaluations, no of peaks 50, vlength 1.0 and correlation lambda 0.0 I achieve an offline error of 4.605 (average over 50 runs with different random seeds for the GA and movrandseed=1 all the time).

A recent survey on papers using the Moving Peaks Benchmark has been compiled by Irene Moser from Swinburne University of Technology and is courteously provided for download here.

References:

[1] J. Branke: "Evolutionary Algorithms for Dynamic Optimization Problems - A Survey -", Technical Report No. 387, Insitute AIFB, University of Karlsruhe, 76128 Karlsruh e, Germany, February 1999

[2] J. Branke: "Memory-Enhanced Evolutionary Algorithms", Congress on Evolutionary Computation (CEC'99), IEEE, 1999, vol.3 pp. 1875-1882

[3] J. Branke: "Evolutionary Approaches to Dynamic Optimization Problems - A Survey", GECCO Workshop on Evolutionary Algorithms for Dynamic Optimization Problems, A. Wu (ed.), 1999, pp. 134-137

[4] J. Branke, H. Schmeck: "Designing Evolutionary Algorithms for Dynamic Optimization Problems", In S. Tsutsui and A. Ghosh, editors, Theory and Application of Evolutionary Computation: Recent Trends, pages 239-262. Springer, 2002