chore: repoint URLs at git.swaits.com and bump for release
CI / rustfmt (push) Waiting to run
CI / clippy --all-features (push) Waiting to run
CI / test (default) (push) Waiting to run
CI / test (parallel) (push) Waiting to run
CI / test (serde) (push) Waiting to run
CI / test (serde,parallel) (push) Waiting to run
CI / cargo doc (push) Waiting to run
CI / minimum supported Rust version (1.85) (push) Waiting to run
CI / fuzz smoke (clamp_to_bounds) (push) Waiting to run
CI / fuzz smoke (crowding_distance) (push) Waiting to run
CI / fuzz smoke (hypervolume_2d) (push) Waiting to run
CI / fuzz smoke (non_dominated_sort) (push) Waiting to run
CI / fuzz smoke (pareto_archive) (push) Waiting to run
CI / fuzz smoke (pareto_compare) (push) Waiting to run
CI / fuzz smoke (sbx_polymut) (push) Waiting to run
CI / fuzz smoke (spacing) (push) Waiting to run
Docs / Build mdbook (push) Canceled after 0s
Docs / Deploy to GitHub Pages (push) Canceled after 0s
CI / rustfmt (push) Waiting to run
CI / clippy --all-features (push) Waiting to run
CI / test (default) (push) Waiting to run
CI / test (parallel) (push) Waiting to run
CI / test (serde) (push) Waiting to run
CI / test (serde,parallel) (push) Waiting to run
CI / cargo doc (push) Waiting to run
CI / minimum supported Rust version (1.85) (push) Waiting to run
CI / fuzz smoke (clamp_to_bounds) (push) Waiting to run
CI / fuzz smoke (crowding_distance) (push) Waiting to run
CI / fuzz smoke (hypervolume_2d) (push) Waiting to run
CI / fuzz smoke (non_dominated_sort) (push) Waiting to run
CI / fuzz smoke (pareto_archive) (push) Waiting to run
CI / fuzz smoke (pareto_compare) (push) Waiting to run
CI / fuzz smoke (sbx_polymut) (push) Waiting to run
CI / fuzz smoke (spacing) (push) Waiting to run
Docs / Build mdbook (push) Canceled after 0s
Docs / Deploy to GitHub Pages (push) Canceled after 0s
Rewrites remaining github.com / git.sr.ht references to git.swaits.com, translating GitHub URL shapes to Gitea's (/blob/<ref>/ -> /src/branch/<ref>/, /tree/<tag> -> /src/tag/<tag>, /actions/workflows/X -> /actions?workflow=X, /edit/ -> /_edit/). Left pointing at GitHub on purpose: pull-request links (PRs were not migrated) and GitHub-only surfaces Gitea lacks (security advisories, discussions).
This commit is contained in:
+12
-12
@@ -91,7 +91,7 @@ unchanged, verified by the per-algorithm snapshot tests.
|
||||
catch rate from ~74% to ~85%. See `.cargo/mutants.toml` for the
|
||||
campaign notes and the residual equivalent-mutant categories.
|
||||
|
||||
[0.11.0]: https://github.com/swaits/heuropt/releases/tag/v0.11.0
|
||||
[0.11.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.11.0
|
||||
|
||||
## [0.10.0] — 2026-05-06
|
||||
|
||||
@@ -151,7 +151,7 @@ strings (e.g. `if name == "Nsga3"`) needs updating to the new
|
||||
canonical strings. The names are stable now (they match the
|
||||
literature), so this is a one-time fix.
|
||||
|
||||
[0.10.0]: https://github.com/swaits/heuropt/releases/tag/v0.10.0
|
||||
[0.10.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.10.0
|
||||
|
||||
## [0.9.0] — 2026-05-06
|
||||
|
||||
@@ -236,7 +236,7 @@ compile untouched.
|
||||
count went from 229 to 242 (10 new explorer tests + 3 from the
|
||||
new `Objective` / `DecisionVariable` builders).
|
||||
|
||||
[0.9.0]: https://github.com/swaits/heuropt/releases/tag/v0.9.0
|
||||
[0.9.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.9.0
|
||||
|
||||
## [0.8.0] — 2026-05-06
|
||||
|
||||
@@ -319,7 +319,7 @@ gated behind a new `async` feature flag.
|
||||
flag ULP-level slop in the simplex projection's
|
||||
`max(x_i − τ, 0)` clamp boundary.
|
||||
|
||||
[0.8.0]: https://github.com/swaits/heuropt/releases/tag/v0.8.0
|
||||
[0.8.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.8.0
|
||||
|
||||
## [0.5.0] — 2026-05-05
|
||||
|
||||
@@ -405,7 +405,7 @@ Three new polished examples covering distinct domains:
|
||||
- `lib.rs` crate-level docs polished — better intro, points readers
|
||||
at the user guide and the design spec.
|
||||
|
||||
[0.5.0]: https://github.com/swaits/heuropt/releases/tag/v0.5.0
|
||||
[0.5.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.5.0
|
||||
|
||||
## [0.4.0] — 2026-05-05
|
||||
|
||||
@@ -543,7 +543,7 @@ last decimal in every benchmark.
|
||||
ratio, and is robust to floating-point precision loss in the
|
||||
algorithm's inner loop.
|
||||
|
||||
[0.4.0]: https://github.com/swaits/heuropt/releases/tag/v0.4.0
|
||||
[0.4.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.4.0
|
||||
|
||||
## [0.3.0] — 2026-05-05
|
||||
|
||||
@@ -622,7 +622,7 @@ constraint-handling gaps. No breaking changes to the v0.2.0 public API.
|
||||
preserves the existing midpoint-of-bounds default; `IpopCmaEs` sets
|
||||
it to inject restart diversity without shrinking the search box.
|
||||
|
||||
[0.3.0]: https://github.com/swaits/heuropt/releases/tag/v0.3.0
|
||||
[0.3.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.3.0
|
||||
|
||||
## [0.2.0] — 2026-05-05
|
||||
|
||||
@@ -688,7 +688,7 @@ benchmark problems. No breaking changes to the v0.1.0 public API.
|
||||
- `benchmarks` — canonical reference runs of NSGA-II on ZDT1 and DE on
|
||||
Rastrigin.
|
||||
- `jiggly_tuning` — real-world 4-objective NSGA-III firmware tuning
|
||||
for the [`jiggly`](https://github.com/swaits/jiggly) USB-mouse-jiggler,
|
||||
for the [`jiggly`](https://git.swaits.com/swaits/jiggly) USB-mouse-jiggler,
|
||||
with an a-posteriori weighted-decision step that picks one
|
||||
recommendation off the Pareto front.
|
||||
|
||||
@@ -714,7 +714,7 @@ benchmark problems. No breaking changes to the v0.1.0 public API.
|
||||
`Problem` / decision type without exotic interior mutability already
|
||||
satisfies these.
|
||||
|
||||
[0.2.0]: https://github.com/swaits/heuropt/releases/tag/v0.2.0
|
||||
[0.2.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.2.0
|
||||
|
||||
## [0.1.0] — 2026-05-04
|
||||
|
||||
@@ -772,7 +772,7 @@ Initial release.
|
||||
algorithm on ZDT1 (2-obj), DTLZ2 (3-obj), and Rastrigin (single-obj),
|
||||
reporting hypervolume, spacing, mean L2, front size, and wall time.
|
||||
- `jiggly_tuning` — 4-objective NSGA-III tuning of the
|
||||
[`jiggly`](https://github.com/swaits/jiggly) USB-mouse-jiggler firmware
|
||||
[`jiggly`](https://git.swaits.com/swaits/jiggly) USB-mouse-jiggler firmware
|
||||
with an a-posteriori weighted-decision step that picks one
|
||||
recommendation off the Pareto front.
|
||||
|
||||
@@ -783,5 +783,5 @@ Initial release.
|
||||
`RandomSearch`, `Nsga2`, and `DifferentialEvolution`. Seeded runs stay
|
||||
bit-identical to serial mode.
|
||||
|
||||
[Unreleased]: https://github.com/swaits/heuropt/compare/v0.10.0...HEAD
|
||||
[0.1.0]: https://github.com/swaits/heuropt/releases/tag/v0.1.0
|
||||
[Unreleased]: https://git.swaits.com/swaits/heuropt/compare/v0.10.0...main
|
||||
[0.1.0]: https://git.swaits.com/swaits/heuropt/releases/tag/v0.1.0
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "heuropt"
|
||||
version = "0.11.0"
|
||||
version = "0.11.1"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
authors = ["Stephen Waits <steve@waits.net>"]
|
||||
@@ -8,7 +8,7 @@ description = "A practical Rust toolkit for heuristic single-, multi-, and many-
|
||||
license = "MIT"
|
||||
readme = "README.md"
|
||||
repository = "https://git.swaits.com/swaits/heuropt"
|
||||
homepage = "https://github.com/swaits/heuropt"
|
||||
homepage = "https://git.swaits.com/swaits/heuropt"
|
||||
documentation = "https://docs.rs/heuropt"
|
||||
keywords = ["optimization", "evolutionary", "nsga", "pareto", "moead"]
|
||||
categories = ["algorithms", "science", "mathematics", "simulation"]
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[](https://docs.rs/heuropt)
|
||||
[](https://swaits.github.io/heuropt/)
|
||||
[](LICENSE)
|
||||
[](https://github.com/swaits/heuropt/actions/workflows/ci.yml)
|
||||
[](https://git.swaits.com/swaits/heuropt/actions?workflow=ci.yml)
|
||||
|
||||
**A practical Rust toolkit for heuristic optimization.** Single-objective.
|
||||
Multi-objective. Many-objective. 33 algorithms — every one of them with a
|
||||
|
||||
+2
-2
@@ -12,8 +12,8 @@ create-missing = false
|
||||
[output.html]
|
||||
default-theme = "rust"
|
||||
preferred-dark-theme = "navy"
|
||||
git-repository-url = "https://github.com/swaits/heuropt"
|
||||
edit-url-template = "https://github.com/swaits/heuropt/edit/main/docs/book/{path}"
|
||||
git-repository-url = "https://git.swaits.com/swaits/heuropt"
|
||||
edit-url-template = "https://git.swaits.com/swaits/heuropt/_edit/main/docs/book/{path}"
|
||||
site-url = "/heuropt/"
|
||||
no-section-label = true
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ are heavily optimized — see the perf entry in the v0.4.0 CHANGELOG.
|
||||
On the comparison harness in `examples/compare.rs` (10-seed mean,
|
||||
30 000 evaluations on DTLZ2), the total wall-clock time across 12
|
||||
algorithms is ~5 seconds. Per-algorithm timings are in
|
||||
[`examples/compare-results.md`](https://github.com/swaits/heuropt/blob/main/examples/compare-results.md).
|
||||
[`examples/compare-results.md`](https://git.swaits.com/swaits/heuropt/src/branch/main/examples/compare-results.md).
|
||||
|
||||
For comparison-shopping speed against Python libraries, the gap is
|
||||
typically 10×–100× in heuropt's favor for compute-bound
|
||||
@@ -106,4 +106,4 @@ Hyperband+BO hybrids, distributed runners). heuropt is younger; the
|
||||
core is solid but the ecosystem is small.
|
||||
|
||||
If you adopt heuropt and miss a thing, the project is small enough
|
||||
that contributions land fast. See [CONTRIBUTING.md](https://github.com/swaits/heuropt/blob/main/CONTRIBUTING.md).
|
||||
that contributions land fast. See [CONTRIBUTING.md](https://git.swaits.com/swaits/heuropt/src/branch/main/CONTRIBUTING.md).
|
||||
|
||||
@@ -444,4 +444,4 @@ let neighbors = |x: &Vec<usize>, _rng: &mut Rng| -> Vec<Vec<usize>> {
|
||||
[`InsertionMutation`]: https://docs.rs/heuropt/latest/heuropt/operators/struct.InsertionMutation.html
|
||||
[`ScrambleMutation`]: https://docs.rs/heuropt/latest/heuropt/operators/struct.ScrambleMutation.html
|
||||
[`CompositeVariation`]: https://docs.rs/heuropt/latest/heuropt/operators/struct.CompositeVariation.html
|
||||
[CompareExample]: https://github.com/swaits/heuropt/blob/main/examples/tsp_operators_compare.rs
|
||||
[CompareExample]: https://git.swaits.com/swaits/heuropt/src/branch/main/examples/tsp_operators_compare.rs
|
||||
|
||||
@@ -35,7 +35,7 @@ hyperopt, optuna, DEAP). heuropt's design priorities:
|
||||
outputs.
|
||||
3. **Algorithms that work.** Every algorithm is benchmarked against
|
||||
the canonical test problems (ZDT, DTLZ, Rastrigin, Rosenbrock,
|
||||
Ackley) and the results are checked into [examples/compare-results.md](https://github.com/swaits/heuropt/blob/main/examples/compare-results.md)
|
||||
Ackley) and the results are checked into [examples/compare-results.md](https://git.swaits.com/swaits/heuropt/src/branch/main/examples/compare-results.md)
|
||||
so you can see what each algorithm's strengths actually are.
|
||||
4. **Testing as a first-class concern.** 316+ unit / integration /
|
||||
property tests, eight cargo-fuzz targets in CI, gungraun
|
||||
|
||||
@@ -89,7 +89,7 @@ breaking API change.
|
||||
- **Migration guides** — per-release, in this book at
|
||||
[migration](./migration.md).
|
||||
- **GitHub releases** — each tag has release notes.
|
||||
- **Watch the repo** — https://github.com/swaits/heuropt — to be
|
||||
- **Watch the repo** — https://git.swaits.com/swaits/heuropt — to be
|
||||
notified of new releases.
|
||||
|
||||
[`heuropt::prelude`]: https://docs.rs/heuropt/latest/heuropt/prelude/index.html
|
||||
|
||||
Reference in New Issue
Block a user