ElkSharp edge routing: boundary slots, gateway repairs, corridor spacing

Major edge routing improvements including corridor spacing, crossing reduction,
focused gateway boundary repairs, setter families, and advanced restabilization.
Adds workflow renderer tests for document-processing and artifact inspection.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
master
2026-04-06 08:52:02 +03:00
parent e3e87942c7
commit 5d6435fdb2
41 changed files with 8334 additions and 246 deletions

View File

@@ -73,6 +73,37 @@ internal static partial class ElkEdgeRouterIterative
|| candidate.ExcessiveDetourViolations > baseline.ExcessiveDetourViolations;
}
private static bool HasBlockingSetterFamilyPromotionRegression(
RoutingRetryState candidate,
RoutingRetryState baseline,
bool localImproved)
{
var allowTemporaryDetourTrade =
localImproved
&& candidate.RemainingShortHighways <= baseline.RemainingShortHighways
&& candidate.UnderNodeViolations <= baseline.UnderNodeViolations
&& candidate.ExcessiveDetourViolations <= baseline.ExcessiveDetourViolations + 1;
var allowTemporaryBoundarySlotTrade =
localImproved
&& candidate.BoundarySlotViolations <= baseline.BoundarySlotViolations + 1;
return candidate.RemainingShortHighways > baseline.RemainingShortHighways
|| candidate.RepeatCollectorCorridorViolations > baseline.RepeatCollectorCorridorViolations
|| candidate.RepeatCollectorNodeClearanceViolations > baseline.RepeatCollectorNodeClearanceViolations
|| candidate.BelowGraphViolations > baseline.BelowGraphViolations
|| candidate.UnderNodeViolations > baseline.UnderNodeViolations
|| candidate.LongDiagonalViolations > baseline.LongDiagonalViolations
|| candidate.EntryAngleViolations > baseline.EntryAngleViolations
|| candidate.GatewaySourceExitViolations > baseline.GatewaySourceExitViolations
|| candidate.SharedLaneViolations > baseline.SharedLaneViolations
|| (!allowTemporaryBoundarySlotTrade
&& candidate.BoundarySlotViolations > baseline.BoundarySlotViolations)
|| candidate.TargetApproachJoinViolations > baseline.TargetApproachJoinViolations
|| candidate.TargetApproachBacktrackingViolations > baseline.TargetApproachBacktrackingViolations
|| (!allowTemporaryDetourTrade
&& candidate.ExcessiveDetourViolations > baseline.ExcessiveDetourViolations);
}
private static int CompareRetryStates(RoutingRetryState left, RoutingRetryState right)
{
if (left.RemainingShortHighways != right.RemainingShortHighways)