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.8+.

Adds examples/visualize.rs that wires it up: NSGA-II on Schaffer
N.1, plain run() (no observer plumbing), final-front SVG written to
disk.
This commit is contained in:
2026-05-06 07:58:08 -06:00
parent 6368ca5f3d
commit 5b5fe50df3
7 changed files with 503 additions and 2 deletions
+13
View File
@@ -7,6 +7,19 @@ 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 and writes
`pareto_front.svg` via the new `pareto_front_svg` helper.
- Workspace setup at the repo root: `[workspace] members = [".",
"heuropt-plot"]` so both crates share a target dir and one
`cargo` invocation builds the lot.
## [0.8.0] — 2026-05-06
Theme: async evaluation. heuropt now supports problems where each