Add MPI_IslandModel: a distributed island model where each MPI rank
runs one island with asynchronous migration via MPI send/receive.
Key features:
- Single-message MPI protocol: MPI_Isend (data) + MPI_Get_count/
MPI_Recv on receive side. Avoids the two-message (size + data)
pattern that can deadlock under oversubscription.
- MPI_Iprobe for non-blocking message detection (upstream's
communicator lacks iprobe())
- Non-blocking sends with PendingSend tracking and MPI_Test cleanup
- Receive-before-send ordering to prevent message accumulation
- Post-loop drain with safe shutdown (cancel pending sends)
- Configurable poll interval (default 1s)
- Thread-safe update method for asynchronous migration
- Debug-level migration logging via eo::log
Extended Island with:
- IslandType enum (HOMOGENEOUS/HETEROGENEOUS) for conditional
immigrant re-evaluation
- IslandModelKind enum (None/Shared/MPI) replacing string dispatch
- algoEOT template parameter for algorithm/individual type mismatch
- finalize() call after population integration
Extended islandModelWrapper with MPI_IslandModel overloads,
initial_values parameter, and algoEOT support.
Add virtual finalize() and hasFinalize() to moeoAlgo/moeoPopAlgo hierarchy.
NSGA-II implements finalize() to recompute fitness and diversity assignments
after population modifications (e.g. immigrant integration in island model).
The goal is to speed up recompilation using ccache.
Ccache is a tool that speeds up recompilation of C/C++ code. It does this by caching the results of previous compilations.
When you recompile code, ccache checks if it has already compiled the same code with the same compiler flags. If so, it uses the cached result instead of recompiling.
- std::cin does not allow seekg/tellg, so instead one wrap the read string
in a istringstream, and then read from it.
This allows to read from any istream, with or without seekg.
- Adds an EO::invalidTag member, in case someone would need to use it
(for instance as a regexp to sanitize inputs).
- Fix all operators in eoStandardBitMutation.h
- Bitflip componennt was not bound, use explicit assignement of rates.
- Fix normal and fast operators algorithms.
Co-authored-by: Potalas <potalas@free.fr>