Skip to content

1.1.8

Latest

Choose a tag to compare

@Gnpd Gnpd released this 17 Apr 23:46
· 4 commits to main since this release

What's Changed

Bug Fixes

  • Classic algorithm no longer freezes on certain datasets: the hill-climb loop in both single and double sphere modes could traverse large flat landscapes indefinitely due to a radius tie-breaking condition. The algorithm now only moves on strict datafit improvement, with radius minimization resolved once at convergence.
  • Double sphere containment constraint bug fix: the containment check in _classic_two_fit was evaluated against the stale center position rather than the candidate being tested, leading to incorrect constraint enforcement.

Performance Improvements

  • Classic algorithm: radius search is now fully vectorized — all ~87 candidates are evaluated in a single NumPy broadcast per corner instead of individual compute_datafit calls. All 8 corner distances are also computed simultaneously, significantly reducing per-iteration overhead.
  • Differential evolution: the loss functions now support batch evaluation of the entire population (n_params, S) → (S,) in one NumPy operation, enabled via scipy's vectorized=True mode. This replaces the previous per-member Python call loop.

Parameter Defaults Updated

  • de_maxiter: 2000 → 1000 (convergence typically occurs well before this limit)
  • de_updating: 'immediate' → 'deferred' (required by scipy for vectorized evaluation)

Full Changelog: v1.1.7...v1.1.8