RDEx: Rank 1 in all four tracks of the IEEE CEC 2025 numerical optimization competitions (official results; papers: SOP, CSOP, MOP, CMOP)
RDEx is a series of differential evolution solvers for the IEEE CEC 2025 competitions on numerical optimization. By the organizers' U-score ranking the series took rank 1 in all four tracks (official materials: P-N-Suganthan/2025-CEC). This repository contains the source code of the four entries, the benchmark material needed to run them, and run scripts.
| Track | Rank | Package | Language | Paper |
|---|---|---|---|---|
| CEC 2025 BC-SOPs | 1 | RDEx_SOP | C++ and Python | arXiv:2603.27089 |
| CEC 2025 BC-CSOPs | 1 | RDEx_CSOP | C++ and Python | arXiv:2603.27090 |
| CEC 2025 BC-MOPs | 1 | RDEx_MOP | MATLAB and Python | arXiv:2603.27092 |
| CEC 2025 BC-CMOPs | 1 | RDEx_CMOP | MATLAB and Python | arXiv:2604.03708 |
The ranks are the ones obtained in the 2025 competition (U-score ranking of the organizers; official materials: P-N-Suganthan/2025-CEC). The code has changed since the first public release (see CHANGELOG.md). For RDEx-SOP and RDEx-CSOP, the results of the current code were scored again by U-score against the published results of the other entries: the rank is the same in both tracks, and the total scores differ from the published ones.
| Package | Test set | Dimension | Independent runs | Budget | Recorded |
|---|---|---|---|---|---|
RDEx_SOP |
29 CEC 2017 real-parameter single-objective functions (F1 and F3-F30 of the suite, numbered 1-29 in the code) | D = 30, every variable in [-100, 100] | 25 | 10000 x D = 300,000 function evaluations per run | error of the best solution every 300 evaluations (1000 rows) |
RDEx_CSOP |
28 CEC 2017 constrained real-parameter problems (numbered 1-28) | D = 30; the search range depends on the problem: [-10, 10] for problems 4, 5 and 9, [-20, 20] for problem 6, [-50, 50] for problems 7, 19 and 28, [-100, 100] for the others | 25 | 20000 x D = 600,000 function evaluations per run | best objective and constraint values every 300 evaluations (2000 checkpoints and one extra value) |
RDEx_MOP |
10 multi-objective problems, MaOP1-MaOP10 | M = 3 objectives, D = 7 variables, population size N = 100 (as set in main.m) | 30 | 100,000 function evaluations per run | 500 saved populations per run, metric IGD |
RDEx_CMOP |
15 scalable decision-space constrained multi-objective problems, SDC1-SDC15 | D = 30, population size N = 100 | 30 | 200,000 function evaluations per run | 1000 saved populations per run, metrics IGD and HV |
.
├── README.md, README.zh-CN.md, README.ja.md
├── CHANGELOG.md, LICENSE, CITATION.cff
├── RDEx_SOP/ bound-constrained single-objective optimization (C++)
│ ├── benchmark/CEC2017_SOP/ cec17_test_func.cpp, input_data/
│ └── code/rdex-sop/ main.py, RDEx.cpp, cec17_test_func.cpp, malloc.h, input_data/
├── RDEx_CSOP/ constrained single-objective optimization (C++)
│ ├── benchmark/CEC2017_CSOP/ cec17_test_COP.cpp, inputData/
│ └── code/rdex-csop/ main.py, RDEx.cpp, cec17_test_COP.cpp, inputData/
├── RDEx_MOP/ multi-objective optimization (MATLAB)
│ ├── benchmark/SEC2018_MaOP_M3_D10/ MaOP/ (MaOP1-10), POF/, PROBLEM.m, SOLUTION.m
│ └── code/rdex-mop/ main.py, main.m, platemo.m, Algorithm/, Metrics/
└── RDEx_CMOP/ constrained multi-objective optimization (MATLAB)
├── benchmark/SDC/ SDC1-SDC15, PROBLEM.m, SOLUTION.m
├── benchmark/cpp/ C++ version of the SDC suite (not needed by the MATLAB code)
└── code/rdex-cmop/ main.py, main.m, platemo.m, Algorithm/, Metrics/
Each package has its own README with build and run details. In RDEx_SOP and RDEx_CSOP, benchmark/ holds the same evaluator and input data as code/, so either copy can be used on its own.
- Python 3.8 or newer (run scripts).
- RDEx-SOP and RDEx-CSOP: a C++ compiler, called as
g++by default (--cxxselects another one). RDEx-SOP is compiled as C++14, RDEx-CSOP as C++11. - RDEx-MOP and RDEx-CMOP: MATLAB R2019a or newer (the run scripts call
matlab -batch) with the Statistics and Machine Learning Toolbox (pdist2,unifrnd). The PlatEMO classes the code needs are included, a separate PlatEMO installation is not required. - Checked on macOS (arm64) with Apple clang 17 and Python 3.12. Linux and Windows have not been tried.
# RDEx-SOP: 29 functions x 25 runs
python3 RDEx_SOP/code/rdex-sop/main.py
# short check: 4 functions, 2 runs, fixed seed
python3 RDEx_SOP/code/rdex-sop/main.py --functions 3,24,26,29 --runs 2 --seed 1
# RDEx-CSOP: 28 problems x 25 runs
python3 RDEx_CSOP/code/rdex-csop/main.py
# short check: 3 problems, 2 runs, fixed seed
python3 RDEx_CSOP/code/rdex-csop/main.py --functions 7,9,11 --runs 2 --seed 1
# RDEx-MOP: 10 problems x 30 runs (MATLAB)
python3 RDEx_MOP/code/rdex-mop/main.py --check # print the MATLAB executable that will be used
python3 RDEx_MOP/code/rdex-mop/main.py
# RDEx-CMOP: 15 problems x 30 runs (MATLAB)
python3 RDEx_CMOP/code/rdex-cmop/main.py --check
python3 RDEx_CMOP/code/rdex-cmop/main.pyOn one core of an Apple-silicon Mac, a full run with the default settings took about 8 minutes for RDEx-SOP and about 35 minutes for RDEx-CSOP.
Results go to outputs/ next to each main.py (RDEx-SOP, RDEx-CSOP), or to a Data/RDE/ folder inside code/rdex-mop/ and code/rdex-cmop/ (RDEx-MOP, RDEx-CMOP). The options of main.py are listed in the README of each package.
| Package | Files | Content |
|---|---|---|
RDEx_SOP |
RDEx_D30_F<n>.txt, n = 1-29 |
1000 rows x one column per run: error of the best solution so far, rows at 300, 600, ..., 300,000 evaluations; errors up to 1e-8 are written as 0 |
RDEx_CSOP |
RDEx_f_F<n>_D30_.txt, RDEx_F<n>_D30.txt, RDEx_C_F<n>_D30.txt, RDEx_C2_F<n>_D30.txt, n = 1-28 |
one row per run (two for RDEx_F<n>_D30.txt): objective values and constraint values of the best solution at 2001 checkpoints; details in RDEx_CSOP/README.md |
RDEx_MOP |
code/rdex-mop/Data/RDE/RDE_MaOP<k>_M3_D7_<run>.mat |
result (500 saved populations) and metric (IGD of each saved population, run time) |
RDEx_CMOP |
code/rdex-cmop/Data/RDE/RDE_SDC<k>_M<M>_D30_<run>.mat |
result (1000 saved populations) and metric (IGD and HV of each saved population, run time) |
- RDEx-SOP and RDEx-CSOP: a component of a trial vector that left the search range after the Cauchy perturbation used to be evaluated as it was. It is now repaired as described in the papers (uniform resampling in RDEx-SOP, midpoint repair in RDEx-CSOP).
- RDEx-SOP: the probability of the local Cauchy perturbation is 0.1 as in the paper (it was 0.4 in the previous source).
- RDEx-CMOP: the clipping to the bounds now follows the Cauchy perturbation, as in the paper; three files the code calls (
CalFitness.m,NDSort.m,UniformPoint.m) were missing from the package and have been added. - RDEx-MOP: checked, no change needed.
main.pyof RDEx-SOP and RDEx-CSOP has new options (--functions,--runs,--seed, ...), and the executables accept the same three options.
Details, with the checks that were run, are in CHANGELOG.md.
| Year | Result | Track | Repository | Paper |
|---|---|---|---|---|
| 2024 | Runner-Up Award | IEEE CEC 2024 BC-SOPs | RDE | arXiv:2404.16280 |
| 2025 | Rank 1 (U-score) | IEEE CEC 2025 RDEx Series | RDEx | SOP, CSOP, MOP, CMOP |
| 2026 | Champion / Rank 1 | IEEE WCCI 2026 / IEEE CEC 2026 RDE26 Series | RDE26 | Competition release |
Each package corresponds to one paper; the first entry is the earlier RDE paper.
@misc{tao2024efficient,
title = {An Efficient Reconstructed Differential Evolution Variant by Some of the Current State-of-the-art Strategies for Solving Single Objective Bound Constrained Problems},
author = {Tao, Sichen and Zhao, Ruihan and Wang, Kaiyu and Gao, Shangce},
year = {2024},
eprint = {2404.16280},
archivePrefix = {arXiv},
primaryClass = {cs.NE},
doi = {10.48550/arXiv.2404.16280}
}
@misc{tao2026rdexsop,
title = {RDEx-SOP: Exploitation-Biased Reconstructed Differential Evolution for Fixed-Budget Bound-Constrained Single-Objective Optimization},
author = {Tao, Sichen and Yang, Yifei and Zhao, Ruihan and Wang, Kaiyu and Liu, Sicheng and Gao, Shangce},
year = {2026},
eprint = {2603.27089},
archivePrefix = {arXiv},
primaryClass = {cs.NE},
doi = {10.48550/arXiv.2603.27089}
}
@misc{tao2026rdexcsop,
title = {RDEx-CSOP: Feasibility-Aware Reconstructed Differential Evolution with Adaptive epsilon-Constraint Ranking},
author = {Tao, Sichen and Yang, Yifei and Zhao, Ruihan and Wang, Kaiyu and Liu, Sicheng and Gao, Shangce},
year = {2026},
eprint = {2603.27090},
archivePrefix = {arXiv},
primaryClass = {cs.NE},
doi = {10.48550/arXiv.2603.27090}
}
@misc{tao2026rdexmop,
title = {RDEx-MOP: Indicator-Guided Reconstructed Differential Evolution for Fixed-Budget Multiobjective Optimization},
author = {Tao, Sichen and Yang, Yifei and Zhao, Ruihan and Wang, Kaiyu and Liu, Sicheng and Gao, Shangce},
year = {2026},
eprint = {2603.27092},
archivePrefix = {arXiv},
primaryClass = {cs.NE},
doi = {10.48550/arXiv.2603.27092}
}
@misc{tao2026rdexcmop,
title = {RDEx-CMOP: Feasibility-Aware Indicator-Guided Differential Evolution for Fixed-Budget Constrained Multiobjective Optimization},
author = {Tao, Sichen and Yang, Yifei and Zhao, Ruihan and Wang, Kaiyu and Liu, Sicheng and Gao, Shangce},
year = {2026},
eprint = {2604.03708},
archivePrefix = {arXiv},
primaryClass = {cs.NE},
doi = {10.48550/arXiv.2604.03708}
}Sichen Tao, Yifei Yang, Ruihan Zhao, Kaiyu Wang, Sicheng Liu, and Shangce Gao.
The RDEx source code is released under the MIT License (see LICENSE). The repository also contains third-party material that keeps its own terms:
- The CEC 2017 evaluators and data (
cec17_test_func.cppwithinput_data/,cec17_test_COP.cppwithinputData/) are material of the competition organizers; the file headers name their authors. - The MATLAB runtime classes taken from PlatEMO (
platemo.m,Algorithm/ALGORITHM.m,PROBLEM.m,SOLUTION.m,Metrics/,Algorithm/Utility functions/) keep the PlatEMO notice in their headers: PlatEMO may be used for research purposes, and publications that use it should acknowledge PlatEMO and cite Y. Tian, R. Cheng, X. Zhang, and Y. Jin, "PlatEMO: A MATLAB platform for evolutionary multi-objective optimization [educational forum]," IEEE Computational Intelligence Magazine, 12(4): 73-87, 2017. - The SDC problems (
RDEx_CMOP/benchmark/SDC/) come from K. Qiao, J. Liang, K. Yu, C. Yue, H. Lin, D. Zhang, and B. Qu, "Evolutionary constrained multiobjective optimization: scalable high-dimensional constraint benchmarks and algorithm," IEEE Transactions on Evolutionary Computation, 2023 (the reference given in the file headers).
Questions and bug reports: GitHub issues.