diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index bdfb4eb..f6992fd 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -11,7 +11,7 @@ body: id: version attributes: label: Unsga3 version / commit - placeholder: "0.2.0 or git SHA" + placeholder: "0.2.1 or git SHA" validations: required: true - type: textarea diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a4e953..d6d800d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,16 +9,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/). ### Added +- Optional **TypeSafe / Jev System One** pass (`tools/typesafe-pareto`) for Score + Choice judgments over a small Pareto candidate sample. Additive semantic layer — does not replace NSGA-III / U-NSGA-III objectives. Live calls only when `TYPESAFE_API_KEY` is set; CI uses mocks. Metrics append to `metrics/typesafe-runs.jsonl`. + +### Changed + +- Docs and XML comments describe `initialPopulation` and hybrid loops in generic terms (domain-adapter warm-start / grid-seed). No product-repo names. + +## [0.2.1] — 2026-10-01 + +`net8.0`+`net10.0`, GD+, DocFX, and the matched DTLZ2 Wilcoxon table (`n_var=12` on C# and pymoo). **Defaults stay unconstrained `RankNicheDistance`, independent mating, and single-layer `DasDennis`.** GitHub Packages is still the only publish target. No new ZDT2 Wilcoxon numbers. + +### Added + - `PerformanceIndicators.GenerationalDistancePlus` (Ishibuchi GD+): mean modified distance from each obtained point to the nearest reference point. Hand-case unit tests. No new benchmark IGD table. - API reference via DocFX. From a clean checkout: `dotnet tool restore && dotnet docfx docfx.json`. CI job `api-docs` builds `_site/`. - Measured 15-seed tables for OSY, TNK, and C1-DTLZ1 (feasible non-dominated IGD vs pymoo `UNSGA3`) and for mating opt-ins (`TwoShuffledPasses`, `Algorithm2`, and both) in `docs/NEW-SURFACES-RESULTS.md`. Protocol is in `docs/EQUIVALENCE.md`. Package defaults are unchanged. -- Optional **TypeSafe / Jev System One** pass (`tools/typesafe-pareto`) for Score + Choice judgments over a small Pareto candidate sample. Additive semantic layer — does not replace NSGA-III / U-NSGA-III objectives. Live calls only when `TYPESAFE_API_KEY` is set; CI uses mocks. Metrics append to `metrics/typesafe-runs.jsonl`. ### Changed - The library, tests, and BasicUsage sample multi-target `net8.0` and `net10.0`. `tools/OracleCompare` stays `net10.0`. GitHub Packages is still the only publish target. - `docs/WILCOXON-RESULTS.md` is the matched DTLZ2 re-run (`n_var=12` on C# and pymoo). ZDT2 stays out of that table (quality bar is gens=250 + `PymooCompatible`). No invented ZDT2 Wilcoxon numbers. -- Docs and XML comments describe `initialPopulation` and hybrid loops in generic terms (domain-adapter warm-start / grid-seed). No product-repo names. ## [0.2.0] — 2026-09-30 @@ -116,7 +126,8 @@ Forensic-audit wave (G1–G10): document known gaps against pymoo and Seada & De - Benchmarks: ZDT1–4/6, DTLZ1–4/7, Sphere / Ackley / Rosenbrock - Metrics: IGD, GD, 2-D HV; self-tests + GitHub Packages publish workflow -[Unreleased]: https://github.com/AppSprout-dev/Unsga3/compare/v0.2.0...HEAD +[Unreleased]: https://github.com/AppSprout-dev/Unsga3/compare/v0.2.1...HEAD +[0.2.1]: https://github.com/AppSprout-dev/Unsga3/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/AppSprout-dev/Unsga3/compare/v0.1.5...v0.2.0 [0.1.5]: https://github.com/AppSprout-dev/Unsga3/compare/v0.1.4...v0.1.5 [0.1.4]: https://github.com/AppSprout-dev/Unsga3/compare/v0.1.3...v0.1.4 diff --git a/CITATION.cff b/CITATION.cff index 88fa287..a3fc65c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -21,8 +21,8 @@ keywords: - C# - .NET license: MIT -version: 0.2.0 -date-released: "2026-09-30" +version: 0.2.1 +date-released: "2026-10-01" references: - type: article authors: diff --git a/Directory.Build.props b/Directory.Build.props index 82c997c..343c9cc 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/AppSprout-dev/Unsga3 https://github.com/AppSprout-dev/Unsga3 optimization;nsga;nsga3;unsga3;multi-objective;evolutionary;moea - 0.2.0 + 0.2.1 README.md diff --git a/README.md b/README.md index 46dc600..3480d61 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **U-NSGA-III** (Unified NSGA-III) for .NET — single-, multi-, and many-objective evolutionary optimization with Das–Dennis reference directions, SBX crossover, polynomial mutation, and **niching-based tournament selection** ([Seada & Deb, 2016](https://ieeexplore.ieee.org/document/7271063)). -> **v0.2.0** — opt-in two-shuffle mating, Algorithm 2 tournament, odd-N pairing, feasible-only niching, equal-CV Deb fix, two-layer Das–Dennis, and OSY/TNK/C1-DTLZ1. Defaults stay unconstrained `RankNicheDistance`, independent mating, and single-layer Das–Dennis. Unreleased work adds `net8.0`+`net10.0`, GD+, and DocFX. +> **v0.2.1** — `net8.0`+`net10.0`, Ishibuchi GD+, DocFX, and the matched DTLZ2 Wilcoxon re-run (`n_var=12` on C# and pymoo). Defaults stay unconstrained `RankNicheDistance`, independent mating, and single-layer Das–Dennis. > **15-seed IGD vs pymoo `UNSGA3`:** ZDT1 **median 0.053173 vs 0.0695884** (MWU *p*=0.0512394) compares the full C# non-dominated front with pymoo `res.F`. DTLZ2 **median 0.00451168 vs 0.00388327** (ratio 1.16183, MWU *p*=0.0225311) uses **n_var=12** on both sides. ZDT2 has no Wilcoxon table. Notes: [`docs/WILCOXON-RESULTS.md`](docs/WILCOXON-RESULTS.md). > Details: [`docs/WILCOXON-RESULTS.md`](docs/WILCOXON-RESULTS.md) · single-seed notes: [`docs/ORACLE-RESULTS.md`](docs/ORACLE-RESULTS.md) · constrained + mating opt-ins: [`docs/NEW-SURFACES-RESULTS.md`](docs/NEW-SURFACES-RESULTS.md)