Skip to content

Measure constrained problems and mating opt-ins - #13

Merged
jkbennitt merged 2 commits into
mainfrom
cursor/new-surfaces-ab-adef
Sep 30, 2026
Merged

jkbennitt merged 2 commits into
mainfrom
cursor/new-surfaces-ab-adef

Conversation

@jkbennitt

@jkbennitt jkbennitt commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Summary

Measured 15-seed tables for the v0.2.0 surfaces. Every numeric cell is from python tools/oracle/run_new_surfaces.py --seeds 15 (2026-09-30, pymoo 0.6.2, .NET SDK 10.0.401). Package defaults are unchanged. docs/WILCOXON-RESULTS.md is not rewritten.

Tables and the protocol write-up: docs/NEW-SURFACES-RESULTS.md. Knob list: docs/EQUIVALENCE.md.

Constrained (seeds 1–15)

Constructor defaults (RankNicheDistance, IndependentWithReplacement), single-layer Das–Dennis, SBX η=30 / PM η=20. IGD is pymoo's mean nearest distance on the feasible non-dominated final population, both solvers, one shared reference front. res.F is a separate column and is not used in the tests.

Problem n_var Pop Gens Partitions
OSY 6 52 250 12
TNK 2 52 250 12
C1-DTLZ1 7 (k=5) 92 150 12

pymoo's default c1dtlz1 n_var is 12. This run passes n_var=7.

Each pymoo seed was run twice. TNK matched. OSY seed 11 and C1-DTLZ1 seed 14 did not; the table keeps the first run and lists the second. The two values are not averaged.

Mating opt-ins (seeds 1–15)

C# IGD on the feasible non-dominated front against ParetoFronts. Columns: default, TwoShuffledPasses (default tournament), Algorithm2 (default pool), both.

Problem Pop Gens
ZDT1 52 100
ZDT2 52 250
DTLZ2 92 150

ZDT1 default G6 strings match the published Wilcoxon C# column on 15/15 seeds. DTLZ2 algorithm2 G6 strings match the published PymooCompatible column on 15/15 seeds. That published file was not rewritten. ZDT2 and DTLZ2 default columns here are RankNicheDistance.

Commands

python tools/oracle/run_new_surfaces.py --seeds 15
dotnet run --project tools/OracleCompare -c Release -- \
  --problem zdt1 --partitions 12 --pop 52 --gens 100 --seed 1 --seed-count 15 \
  --tournament rank-niche --mating independent
dotnet run --project tools/OracleCompare -c Release -- \
  --problem osy --partitions 12 --pop 52 --gens 250 --seed 1 --seed-count 15
dotnet run --project tools/OracleCompare -c Release -- \
  --problem c1dtlz1 --partitions 12 --pop 92 --gens 150 --seed 1 --seed-count 15

Checklist

  • dotnet test Unsga3.slnx -c Release passes locally (108 passed)
  • CHANGELOG.md updated under Unreleased
  • Public API changes documented (XML docs / README) — no API change
  • If survival / normalization / metrics changed: noted oracle impact (or re-ran multi-seed) — no algorithm change; new surfaces measured

Test plan

  • python tools/oracle/run_new_surfaces.py --seeds 15
  • ZDT1 default column checked against the published G6 strings
  • dotnet test Unsga3.slnx -c Release
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 30, 2026 08:36
The script records OSY, TNK, and C1-DTLZ1 against pymoo, plus the four
mating configs, into docs/NEW-SURFACES-RESULTS.md. It does not rewrite
the published Wilcoxon table or change constructor defaults.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
OSY, TNK, and C1-DTLZ1 are scored against pymoo on a shared feasible
front. ZDT1, ZDT2, and DTLZ2 compare the four mating configs. The
published Wilcoxon table is unchanged, and constructor defaults stay
RankNicheDistance with independent mating.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
@jkbennitt
jkbennitt marked this pull request as ready for review September 30, 2026 08:49
@jkbennitt
jkbennitt merged commit 38bc4f5 into main Sep 30, 2026
2 checks passed
@jkbennitt jkbennitt mentioned this pull request Oct 1, 2026
6 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants