Join%20Chat

logo

Performance

Competitions

fcmaes can give you a real advantage in optimization competitions such as ESA’s optimization challenges, especially if you use its parallelization features well. Here is a list of the ranks achieved by fcmaes:

ESA SPOC RANK

For most challenges, the fcmaes result is either the best or within 1 % of the best. All competition code was written in Python, although fcmaes and or-tools wrap C++ code for speed. All 15 challenges are still open. You can submit solutions, and your result will appear on the leaderboard.

Engineering Design Optimization

Engineering design problems often combine multiple competing objectives with many constraints. Here we use the Mazda real-world car structure design benchmark. The task is to optimize three car models at the same time, reduce their weight, increase the number of shared thicknesses of structural parts, and satisfy 54 constraints. In 2017 there was a competition related to this problem, documented in the Report of Evolutionary Computation Competition 2017. Even so, many of the ideas developed there have still not found their way into open source optimization libraries.

We applied modecpp.py for about one hour on one AMD 5950x CPU under Linux, using the de/rand/1 strategy (nsga_update=False, pareto_update=False, ints=[True]*dim) with population size 256. We chose the best result from two runs executed in parallel, each using 16 threads (workers=16). Together, both runs performed about 8200 function evaluations per second.

The resulting Pareto front has hypervolume 0.4074:

mazda

The "reference" NSGA-II solution provided with the benchmark has hypervolume 0.1456:

mazda0

The reference solution was computed with a limited budget. Still, NSGA-II scales much worse than fcmaes-MoDe when using enhanced multiple constraint ranking. This example shows that fcmaes also works well on constrained multi-objective engineering problems, not only on single-objective benchmarks.

Space Flight Trajectory Planning

Remark: This section was initially created in 2022 and updated in 2024. What changed:

  • New hardware: CPU AMD 9950x replaced an AMD 5950x

  • Hardware performance: The 9950x is about factor 1.75 faster than the 5950x for these benchmarks.

  • Random generator: fcmaes switched from Mersenne Twister to PCG64 DXSM both for Python and C++.

fcmaes provides fast parallel example solvers for the real-world space flight design problems from GTOP and for the F-8_aircraft problem based on differential equations. At GTOPX you can find implementations of the corresponding objective functions in several programming languages. The solution times in the tables below were measured on Linux with an AMD 9950x CPU using 32 parallel processes.

Table 1. GTOP coordinated retry results for stopVal = 1.005*absolute_best
problem runs absolute best stopVal success rate mean time sdev time

Cassini1

100

4.9307

4.95535

100%

0.69s

1.1s

Cassini2

100

8.383

8.42491

100%

12.05s

5.73s

Gtoc1

100

-1581950

-1574080

100%

11.11s

8.49s

Messenger

100

8.6299

8.673

100%

13.33s

8.16s

Rosetta

100

1.3433

1.35

100%

17.49s

6.21s

Tandem

100

-1500.46

-1493

81%

166.92s

147.87s

Sagas

100

18.188

18.279

100%

1.7s

0.99s

Messenger Full

100

1.9579

1.96769

43%

1757.94s

1240.32s

Messenger Full

100

1.9579

2.0

79%

693.02s

515.71s

Here, stopVal is the threshold value that determines success, and mean time includes failed runs. Execute benchmark_gtop.py to reproduce these results. The same optimization algorithm was used for all problems, with the same parameters for both the optimizer and the coordinated retry / boundary management.

Table 2. GTOP coordinated retry results for reaching the absolute best value
problem runs absolute best stopVal success rate mean time sdev time

Cassini1

100

4.9307

4.931

100%

2.24s

1.87s

Cassini2

100

8.383

8.384

98%

37.12s

20.15s

Gtoc1

100

-1581950

-1581949

100%

23.13s

16.23s

Messenger

100

8.6299

8.631

100%

27.28s

12.48s

Rosetta

100

1.3433

1.344

91%

33.0s

18.16s

Tandem

100

-1500.46

-1500

81%

175.11s

148.41s

Sagas

100

18.188

18.189

100%

2.05s

1.06s

ESAs Messenger-Full Space Trajectory Design Problem

Because of its well-known complexity, ESA’s 26-dimensional Messenger full problem is often used as a reference in the literature. See, for instance, the MXHCP paper.

fcmaes solves this problem in less than half an hour using an AMD 9950x.

The problem models a multi-gravity-assist interplanetary mission from Earth to Mercury. In 2009, the first good solution (6.9 km/s) was submitted. It took more than five years to reach 1.959 km/s, and three more years until 2017 to find the optimum 1.958 km/s. The picture below shows the progress of the broader research community since 2009:

Fsc

The next picture shows 100 coordinated retry runs:

mf3.6000

In 79 of these 100 runs, the result was better than 2 km/s:

mf3.2000

About 2.1*10^6 function evaluations per second were performed. This shows how well the algorithm scales when using all 16 cores / 32 threads. For a larger setup, fcmaesray shows how fcmaes coordinated retry performs on a 5-node cluster with 96 CPU cores.