feat(heuropt-plot): v0.1.0 — SVG visualization companion crate

Adds heuropt-plot, a tiny SVG-only plotter that takes heuropt
results and emits scatter plots (pareto_front_svg) and line plots
(convergence_svg). No heavy 'plotters' or 'tiny-skia' dep — hand-
rolled SVG so the crate adds <100 KB to a build.

Workspace setup: root Cargo.toml gains [workspace] with members =
['.', 'heuropt-plot']. heuropt-plot has its own version (0.1.0) and
publishes independently against heuropt 0.7+.

Adds examples/visualize.rs that wires it all up: NSGA-II on Schaffer
N.1, observer closure recording per-generation hypervolume, two SVGs
written to disk.
This commit is contained in:
2026-05-05 15:26:22 -06:00
parent 41122b7d48
commit 8cf518200a
8 changed files with 634 additions and 0 deletions
+11
View File
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- **`heuropt-plot` companion crate (v0.1.0)** at `heuropt-plot/`,
published independently. Lightweight SVG-only plotter for Pareto
fronts (`pareto_front_svg`) and convergence traces
(`convergence_svg`) — hand-rolled SVG output, no `plotters` /
`tiny-skia` dep so the crate stays a tiny optional addition.
- `examples/visualize.rs` — runs NSGA-II on Schaffer N.1 with a
closure observer that records hypervolume per generation, then
emits `pareto_front.svg` + `convergence.svg` via `heuropt-plot`.
## [0.7.0] — 2026-05-05
Theme: async evaluation. heuropt now supports problems where each