CEC Benchmark Functions
Problem Definitions and Evaluation Criteria for the CEC 2005
Special Session on Real-Parameter Optimization
Prof. Suguthan website: http://www.ntu.edu.sg/home/EPNSugan/
In the past two decades, different kinds of optimization algorithms have been designed and applied to solve real-parameter function optimization problems. Some of the popular approaches are real-parameter EAs, evolution strategies (ES), differential evolution (DE), particle swarm optimization (PSO), evolutionary programming (EP), classical methods such as quasi-Newton method (QN), hybrid evolutionary-classical methods, other non-evolutionary methods such as simulated annealing (SA), tabu search (TS) and others. Under each category, there exist many different methods varying in their operators and working principles, such as correlated ES and CMA-ES. In most such studies, a subset of the standard test problems (Sphere, Schwefel's, Rosenbrock's, Rastrigin's, etc.) is considered. Although some comparisons are made in some research studies, often they are confusing and limited to the test problems used in the study. In some occasions, the test problem and chosen algorithm are complementary to each other and the same algorithm may not work in other problems that well. There is definitely a need of evaluating these methods in a more systematic manner by specifying a common termination criterion, size of problems, initialization scheme, linkages/rotation, etc. There is also a need to perform a scalability study demonstrating how the running time/evaluations increase with an increase in the problem size. We would also like to include some real world problems in our standard test suite with codes/executables. In this report, 25 benchmark functions are given and experiments are conducted on some real-parameter optimization algorithms. The codes in Matlab, C and Java for them could be found at http://www.ntu.edu.sg/home/EPNSugan/. The mathematical formulas and properties of these functions are described in Section 2. In Section 3, the evaluation criteria are given. Some notes are given in Section 4.
Unimodal Functions (5):
¾ F 1 : Shifted Sphere Function
¾ F 2 : Shifted Schwefel’s Problem 1.2
¾ F 3 : Shifted Rotated High Conditioned Elliptic Function
¾ F 4 : Shifted Schwefel’s Problem 1.2 with Noise in Fitness
¾ F 5 : Schwefel’s Problem 2.6 with Global Optimum on Bounds
Multimodal Functions (20):
¾ Basic Functions (7):
F 6 : Shifted Rosenbrock’s Function
F 7 : Shifted Rotated Griewank’s Function without Bounds
F 8 : Shifted Rotated Ackley’s Function with Global Optimum on Bounds
F 9 : Shifted Rastrigin’s Function
F 10 : Shifted Rotated Rastrigin’s Function
F 11 : Shifted Rotated Weierstrass Function
F 12 : Schwefel’s Problem 2.13
Expanded Functions (2)
F13 : Expanded Extended Griewank’s plus Rosenbrock’s Function (F8,F2)
F14 : Shifted Rotated Expanded Scaffer’s F6
Hybrid Composition Functions (11):
F 15 : Hybrid Composition Function
F 16 : Rotated Hybrid Composition Function
F 17 : Rotated Hybrid Composition Function with Noise in Fitness
F 18 : Rotated Hybrid Composition Function
F 19 : Rotated Hybrid Composition Function with a Narrow Basin for the Global Optimum
F 20 : Rotated Hybrid Composition Function with the Global Optimum on the Bounds
F 21 : Rotated Hybrid Composition Function
F 22 : Rotated Hybrid Composition Function with High Condition Number Matrix
F 23 : Non-Continuous Rotated Hybrid Composition Function
F 24 : Rotated Hybrid Composition Function
F 25 : Rotated Hybrid Composition Function without Bounds
Search bounds for each function in c code:
1 #ifdef CEC2005 2 switch (funcid)//cec_2005 functions : F1----F25 3 { 4 5 //单峰函数 6 case 1: accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 7 case 2: accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 8 case 3: accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 9 case 4:accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 10 case 5:accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 11 12 //多峰函数 13 case 6:accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 14 case 7:accuracy = 1.0e-6; *initi_low = 0; *initi_high = 600; *search_low=-1.0*RAND_MAX ; *search_high=RAND_MAX; break; //无边界搜索 15 case 8:accuracy = 1.0e-6; *initi_low = -32; *initi_high = 32; *search_low = -32; *search_high = 32; break; 16 case 9:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 17 case 10:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 18 case 11:accuracy = 1.0e-6; *initi_low = -0.5; *initi_high = 0.5; *search_low = -0.5; *search_high = 0.5; break; 19 case 12:accuracy = 1.0e-6; *initi_low = -1.0*PI; *initi_high = 1.0*PI; *search_low = -1.0*PI; *search_high = 1.0*PI; break; 20 21 //扩展函数 22 case 13:accuracy = 1.0e-6; *initi_low = -3; *initi_high = 1; *search_low = -3; *search_high = 1; break; 23 case 14:accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; break; 24 25 //混合函数 26 case 15:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 27 case 16:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 28 case 17:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 29 case 18:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 30 case 19:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 31 case 20:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 32 case 21:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 33 case 22:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 34 35 case 23:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 36 case 24:accuracy = 1.0e-6; *initi_low = -5; *initi_high = 5; *search_low = -5; *search_high = 5; break; 37 case 25:accuracy = 1.0e-6; *initi_low = 2; *initi_high = 5; *search_low = -1.0*RAND_MAX; *search_high = RAND_MAX; break; //无边界搜索 38 39 default: 40 accuracy = 1.0e-6; *initi_low = -100; *initi_high = 100; *search_low = -100; *search_high = 100; 41 break; 42 } 43 #endif // CEC2005