refactor(engine): retarget ML runner to plate filler
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using OpenNest.Engine.Jobs.Placement.Fillers;
|
||||||
|
|
||||||
namespace OpenNest.Engine.ML
|
namespace OpenNest.Engine.ML
|
||||||
{
|
{
|
||||||
@@ -30,12 +31,12 @@ namespace OpenNest.Engine.ML
|
|||||||
bool forceFullAngleSweep = false
|
bool forceFullAngleSweep = false
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var engine = new DefaultNestEngine(plate);
|
var filler = new DefaultPlateFiller(plate);
|
||||||
engine.ForceFullAngleSweep = forceFullAngleSweep;
|
filler.ForceFullAngleSweep = forceFullAngleSweep;
|
||||||
var item = new NestItem { Drawing = drawing };
|
var item = new NestItem { Drawing = drawing };
|
||||||
|
|
||||||
var sw = Stopwatch.StartNew();
|
var sw = Stopwatch.StartNew();
|
||||||
var parts = engine.Fill(
|
var parts = filler.Fill(
|
||||||
item,
|
item,
|
||||||
plate.WorkArea(),
|
plate.WorkArea(),
|
||||||
null,
|
null,
|
||||||
@@ -47,9 +48,9 @@ namespace OpenNest.Engine.ML
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
// Rank phase results — winner is explicit, runners-up sorted by count.
|
// Rank phase results — winner is explicit, runners-up sorted by count.
|
||||||
var winner = engine.PhaseResults.FirstOrDefault(r => r.Phase == engine.WinnerPhase);
|
var winner = filler.PhaseResults.FirstOrDefault(r => r.Phase == filler.WinnerPhase);
|
||||||
var runnerUps = engine
|
var runnerUps = filler
|
||||||
.PhaseResults.Where(r => r.PartCount > 0 && r.Phase != engine.WinnerPhase)
|
.PhaseResults.Where(r => r.PartCount > 0 && r.Phase != filler.WinnerPhase)
|
||||||
.OrderByDescending(r => r.PartCount)
|
.OrderByDescending(r => r.PartCount)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@ namespace OpenNest.Engine.ML
|
|||||||
TimeMs = sw.ElapsedMilliseconds,
|
TimeMs = sw.ElapsedMilliseconds,
|
||||||
LayoutData = SerializeLayout(parts),
|
LayoutData = SerializeLayout(parts),
|
||||||
PlacedParts = parts,
|
PlacedParts = parts,
|
||||||
WinnerEngine = engine.WinnerPhase.ToString(),
|
WinnerEngine = filler.WinnerPhase.ToString(),
|
||||||
WinnerTimeMs = winner?.TimeMs ?? 0,
|
WinnerTimeMs = winner?.TimeMs ?? 0,
|
||||||
RunnerUpEngine = runnerUps.Count > 0 ? runnerUps[0].Phase.ToString() : "",
|
RunnerUpEngine = runnerUps.Count > 0 ? runnerUps[0].Phase.ToString() : "",
|
||||||
RunnerUpPartCount = runnerUps.Count > 0 ? runnerUps[0].PartCount : 0,
|
RunnerUpPartCount = runnerUps.Count > 0 ? runnerUps[0].PartCount : 0,
|
||||||
@@ -68,7 +69,7 @@ namespace OpenNest.Engine.ML
|
|||||||
ThirdPlaceEngine = runnerUps.Count > 1 ? runnerUps[1].Phase.ToString() : "",
|
ThirdPlaceEngine = runnerUps.Count > 1 ? runnerUps[1].Phase.ToString() : "",
|
||||||
ThirdPlacePartCount = runnerUps.Count > 1 ? runnerUps[1].PartCount : 0,
|
ThirdPlacePartCount = runnerUps.Count > 1 ? runnerUps[1].PartCount : 0,
|
||||||
ThirdPlaceTimeMs = runnerUps.Count > 1 ? runnerUps[1].TimeMs : 0,
|
ThirdPlaceTimeMs = runnerUps.Count > 1 ? runnerUps[1].TimeMs : 0,
|
||||||
AngleResults = engine.AngleResults.ToList(),
|
AngleResults = filler.AngleResults.ToList(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -115,5 +115,7 @@ public class EngineRefactorSmokeTests
|
|||||||
|
|
||||||
Assert.NotNull(result);
|
Assert.NotNull(result);
|
||||||
Assert.True(result.PartCount > 0);
|
Assert.True(result.PartCount > 0);
|
||||||
|
Assert.False(string.IsNullOrWhiteSpace(result.WinnerEngine));
|
||||||
|
Assert.NotEmpty(result.AngleResults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user