Skip to content
SichenTaoPublic

About

RDEx: differential evolution solvers that ranked 1st in all four tracks (SOP, CSOP, MOP, CMOP) of the IEEE CEC 2025 numerical optimization competitions. C++, MATLAB and Python.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Repository files navigation

RDEx: Rank 1 in all four tracks of the IEEE CEC 2025 numerical optimization competitions (official results; papers: SOP, CSOP, MOP, CMOP)

IEEE CEC 2025 Series Tracks

English | 中文 | 日本語

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.

Results

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.

Test sets and settings

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

Repository layout

.
├── 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.

Requirements

  • Python 3.8 or newer (run scripts).
  • RDEx-SOP and RDEx-CSOP: a C++ compiler, called as g++ by default (--cxx selects 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.

Quick start

# 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.py

On 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.

Output files

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)

Changes since the first public release

  • 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.py of 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.

RDE research line

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

Papers and citation

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}
}

Team

Sichen Tao, Yifei Yang, Ruihan Zhao, Kaiyu Wang, Sicheng Liu, and Shangce Gao.

License and third-party material

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.cpp with input_data/, cec17_test_COP.cpp with inputData/) 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).

Contact

Questions and bug reports: GitHub issues.

About

RDEx: differential evolution solvers that ranked 1st in all four tracks (SOP, CSOP, MOP, CMOP) of the IEEE CEC 2025 numerical optimization competitions. C++, MATLAB and Python.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages