perf: parallelize PairFiller candidates and add GridDedup

- Evaluate pair candidates in parallel batches instead of sequentially
- Add GridDedup to skip duplicate pattern/direction/workArea combos
  across PairFiller and StripeFiller strategies
- Replace crude 30% remnant area estimate with L-shaped geometry
  calculation using actual grid extents and max utilization
- Move FillStrategyRegistry.SetEnabled to outer evaluation loop
  to avoid repeated enable/disable per remnant fill

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-21 23:08:55 -04:00
parent b6ee04f038
commit 92b17b2963
4 changed files with 184 additions and 52 deletions

View File

@@ -12,7 +12,8 @@ namespace OpenNest.Engine.Strategies
public List<Part> Fill(FillContext context)
{
var comparer = context.Policy?.Comparer;
var filler = new PairFiller(context.Plate, comparer);
var dedup = GridDedup.GetOrCreate(context.SharedState);
var filler = new PairFiller(context.Plate, comparer, dedup);
var result = filler.Fill(context.Item, context.WorkArea,
context.PlateNumber, context.Token, context.Progress);