Skip to content

Conversation

@soerendomroes
Copy link
Contributor

@soerendomroes soerendomroes commented May 30, 2025

  • Fix all fixmes, i.e. add group model order to all parts of layered in cycle breaking
  • in crossing minimization
  • [?] Add tests for group model order. Existing tests showed that I did not break anything.
  • (Optional) serialize lists in elkt and so on to be able to use everything properly.

@soerendomroes soerendomroes marked this pull request as draft June 2, 2025 13:52
@soerendomroes soerendomroes requested a review from Copilot July 21, 2025 11:31
@soerendomroes soerendomroes marked this pull request as ready for review July 21, 2025 11:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR extends the ELK layered layout algorithm to support group model order strategies for both cycle breaking and crossing minimization phases. The changes enable users to define ordering groups that can be enforced or used as partial ordering constraints beyond simple model order.

  • Adds group model order support to cycle breaking strategies with new SCC-based approaches
  • Integrates group model order into crossing minimization with configurable enforcement strategies
  • Introduces new cycle breaking algorithms (DFS/BFS node order, SCC connectivity/node type) that respect group ordering

Reviewed Changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
ModelOrderBarycenterHeuristic.java Updates comparator to use group model order calculation with configurable enforcement
LayerSweepCrossingMinimizer.java Adds group order strategy parameters to model order counting methods
SCConnectivity.java New SCC-based cycle breaker using connectivity heuristics with group model order
SCCNodeTypeCycleBreaker.java New SCC cycle breaker with preferred node type selection and group ordering
SCCModelOrderCycleBreaker.java Abstract base class for SCC-based cycle breaking with group model order support
ModelOrderCycleBreaker.java Refactored to use shared GroupModelOrderCalculator with group ordering support
GroupModelOrderCalculator.java New utility class for calculating model order vs group model order with constraints
GreedyModelOrderCycleBreaker.java Updated to support group model order in node selection heuristics
DFSNodeOrderCycleBreaker.java New DFS-based cycle breaker using node model order for traversal ordering
BFSNodeOrderCycleBreaker.java New BFS-based cycle breaker using node model order for traversal ordering
InternalProperties.java Adds properties for tracking max model order, group counts, and Tarjan algorithm state
GroupOrderStrategy.java New enum defining group ordering enforcement strategies
CycleBreakingStrategy.java Extended with new cycle breaking strategy options supporting group model order
ModelOrderPortComparator.java Updated to use group model order calculation in port comparison logic
ModelOrderNodeComparator.java Enhanced with group order strategy support and improved edge handling
CMGroupModelOrderCalculator.java New utility for crossing minimization group model order calculations
SortByInputModelProcessor.java Updated to pass group order strategy to comparators
ElkGraphImporter.java Enhanced to track group model order statistics during graph import
Tarjan.java New implementation of Tarjan's algorithm for strongly connected component detection
Layered.melk Adds configuration options for group model order strategies and enforcement

soerendomroes and others added 3 commits July 21, 2025 13:35
…yered/p1cycles/GroupModelOrderCalculator.java

Co-authored-by: Copilot <[email protected]>
Signed-off-by: Sören Domrös <[email protected]>
…yered/p1cycles/BFSNodeOrderCycleBreaker.java

Co-authored-by: Copilot <[email protected]>
Signed-off-by: Sören Domrös <[email protected]>
…yered/p1cycles/SCCModelOrderCycleBreaker.java

Co-authored-by: Copilot <[email protected]>
Signed-off-by: Sören Domrös <[email protected]>
@eclipse-elk eclipse-elk deleted a comment from Copilot AI Jul 21, 2025
@eclipse-elk eclipse-elk deleted a comment from Copilot AI Jul 21, 2025
@eclipse-elk eclipse-elk deleted a comment from Copilot AI Jul 21, 2025
@eclipse-elk eclipse-elk deleted a comment from Copilot AI Jul 21, 2025
…yered/p1cycles/SCConnectivity.java

Co-authored-by: Copilot <[email protected]>
Signed-off-by: Sören Domrös <[email protected]>
@soerendomroes soerendomroes requested a review from Eddykasp July 21, 2025 11:41
Copy link
Member

@Eddykasp Eddykasp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me

@soerendomroes
Copy link
Contributor Author

Fixes #952

@soerendomroes soerendomroes added this to the Release 0.10.1 milestone Aug 5, 2025
@soerendomroes soerendomroes merged commit 806f4cb into eclipse-elk:master Aug 6, 2025
4 checks passed
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