l_srtde
A Rust implementation of the L-SRTDE (Large Scale Random Topology Differential Evolution) algorithm for large-scale numerical optimization.
This crate focuses on large-scale global optimization problems and uses rayon
to parallelize population evaluation.
Reference
This crate implements the algorithm proposed by V. Stanovov and E. Semenkin. If you use the algorithm or this code in research, cite the original paper:
V. Stanovov and E. Semenkin, "Success Rate-based Adaptive Differential Evolution L-SRTDE for CEC 2024 Competition," 2024 IEEE Congress on Evolutionary Computation (CEC), Yokohama, Japan, 2024, pp. 1-8, doi: 10.1109/CEC60901.2024.10611907.
Features
- Parallel population evaluation with
rayon - Success-rate based adaptation of the scaling factor
F - Linear population size reduction (LPSR)
- Random-topology strategy for large search spaces
- Pure Rust implementation
Installation
[]
= { = "https://github.com/Tydwdh/l_srtde-rs", = "main" }
Quick Start
use ;
Advanced Configuration
let solver = new
.with_max_evaluations
.with_pop_size_multiplier
.with_memory_size
.with_seed;
You can also use a callback to monitor progress or stop the search early:
let mut generation = 0;
let solution = solver.run_with_callback?;
Validation And Budget Semantics
run() and run_with_callback() now return Result<_, LsrtdeError>. The
solver rejects invalid configurations before any parallel evaluation starts.
The current validation rules are:
dimension() > 0memory_size > 0dimension * pop_size_multipliermust not overflow- initial population size must be at least
3 - every
(lower, upper)bound pair must be finite and satisfylower < upper
with_max_evaluations() is a soft budget, not a hard cap:
- the initial population is always evaluated in full
- each generation evaluates a full batch of trial vectors in parallel
- total objective evaluations can exceed the configured budget
- the overrun is bounded by at most one current-generation population size
License
This project is licensed under the MIT license. See LICENSE.