Files
OpenNest-Engines/README.md
T
ajandClaude Opus 5.5 90f07603e2 feat(qwen38flashnext): add the finished engine
Qwen3.8-Flash-Next's final version after a 14.5-hour optimization run
(its commit 7d7fca3): cost-first sheet trials, largest-area-first
demand order, and a cached-triangulation exact gate that brought a
219-part production job from timeout to ~106 s. 13/13 tests pass
against OpenNest master.

README cleaned for publishing: the model-facing template rules are
replaced by a one-line independence statement, the production job is
described generically instead of by its PEP job/file name (also in a
JobSolver comment), results show both sheet pools as re-measured here
(the 9-size claim in its report didn't reproduce: it grabs 96x240 and
under-fills them), and the stale StockLadder-crash note is gone now
that core leaves etch marks out of nesting.

Also drops a stale Aurora plugin reference from Opus55's README and
lists the engine in the repo README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 06:57:11 -04:00

2.2 KiB

OpenNest Engines

Independent nesting engine plugins for OpenNest. Each engine is a standalone class library that OpenNest discovers at runtime via NestingEngineRegistry.LoadPlugins() — drop the DLL into an Engines/ folder next to the OpenNest app or OpenNest.Benchmark build output.

Engine Approach
Gpt6Astra Contact-based placement
Opus55 Frontier-advance no-fit-polygon packing
Qwen38FlashNext Bottom-left greedy insertion over convex NFPs with an exact clearance gate

Building

Engines compile against an OpenNest checkout, expected as a sibling clone:

src/
  OpenNest/           git clone https://git.thecozycat.net/aj/OpenNest.git
  OpenNest-Engines/   this repo

Use a different location with /p:OpenNestRoot=<path> (or the OpenNestRoot environment variable).

./Build-Engines.ps1                    # build all engines + deploy to the benchmark
./Build-Engines.ps1 -Engines Opus55    # just one
dotnet test OpenNest.Engine.Opus55/tests/OpenNest.Engine.Opus55.Tests.csproj

Each engine's README covers its algorithm and benchmark results.

Writing a new engine

./New-Engine.ps1 -Name Nova

This copies _Template/ to OpenNest.Engine.Nova/: an INestingEngine stub, a README spelling out what counts as an independent engine, BENCH-RULES.md (how a model's run works: workspace limits, git, the real-part archive, reporting), and starter acceptance tests checked by the benchmark's own NestValidator (they fail until Solve() is implemented).

To work inside an OpenNest checkout instead, stamp it into an Engines/ folder there and bring the shared build files along; they detect that layout automatically:

./New-Engine.ps1 -Name Nova -Destination <OpenNest>/Engines -IncludeBuildFiles

Layout

Each engine lives in OpenNest.Engine.<Name>/ with an optional tests/ subproject. Directory.Build.props supplies the target framework and the OpenNest.Engine reference, so an engine's .csproj can be nearly empty.