feat(algorithms): add Paes (Pareto Archived Evolution Strategy)

A readable v1 PAES (spec §12.2):

- Single starting decision from the initializer.
- Each iteration mutates the current decision via the Variation operator,
  evaluates the child, and pareto_compares to the current.
- Dominating children become current; for non-dominated comparisons we
  move to the child (acceptable v1 behavior per spec).
- Both current and child are inserted into a ParetoArchive truncated
  to `archive_size` (simple tail-truncation in v1).

The final result returns the archive as both `population` and
`pareto_front`. Tests verify the archive never exceeds
`archive_size`.
This commit is contained in:
2026-05-04 19:23:53 -06:00
parent f17c960ec7
commit bb3a01f90e
3 changed files with 165 additions and 1 deletions
+1 -1
View File
@@ -18,4 +18,4 @@ pub use crate::pareto::{
pub use crate::operators::{BitFlipMutation, GaussianMutation, RealBounds, SwapMutation};
pub use crate::algorithms::{RandomSearch, RandomSearchConfig};
pub use crate::algorithms::{Paes, PaesConfig, RandomSearch, RandomSearchConfig};