Häufig gestellte Fragen zu den Layoutalgorithmen

Die folgende Liste mit häufig gestellten Fragen enthält einige hilfreiche Vorschläge zur Verwendung der Layoutalgorithmen. Möglicherweise finden Sie hier Antworten auf Fragen, die während der Arbeit mit dem Graphenlayoutpaket aufkommen.
Häufig gestellte Fragen zu den Layoutalgorithmen
Frage
Antwort
Ich führe das Layout aus, und es passiert nichts (kein Knoten wird verschoben). Warum?
Ein möglicher Grund ist der folgende: Die im Produkt bereitgestellten Layoutalgorithmen führen standardmäßig keine Aktionen aus, wenn seit der letzten erfolgreichen Ausführung für denselben Graphen keine Änderungen im Graphen vorgenommen wurden. Eine Änderung bedeutet, dass ein Knoten verschoben wurde oder dass ein Knoten oder Link hinzugefügt, entfernt oder in der Form geändert wurde.
Sie können eine erneute Ausführung des Layouts erzwingen, selbst wenn keine Änderungen vorgenommen wurde, indem Sie die Methode performLayout(force:Boolean = false, traverse:Boolean = false):int mit dem Wert true für das Argument "force" aufrufen.
Ein anderer möglicher Grund ist folgender: Während des Layouts ist ein Fehler oder Sonderfall aufgetreten. Zuerst müssen Sie prüfen, ob die Methode performLayout() einen Fehler ausgelöst hat. Wurde kein Fehler ausgelöst, rufen Sie die Eigenschaft code in der Instanz des Layoutberichts ab. Überprüfen Sie diesen Wert anhand der Dokumentation der entsprechenden Layoutberichtsklasse. (Weitere Einzelheiten finden Sie unter Graphenlayoutbericht verwenden.)
Nach einmaliger Ausführung des Layouts mit dem kräftegesteuerten Layoutalgorithmus (Force-directed) im inkrementellen Modus sehe ich selbst dann keine Bewegung, wenn ich die Option zum Erzwingen des Layouts verwende. Warum?
Der Grund ist wahrscheinlich der, dass der Algorithmus bei der ersten Ausführung des Layouts die Konvergenz erreicht hat. Wenn das Layout erneut ausgeführt wird, stellt es fest, dass die Konvergenz bereits erreicht ist, und stoppt die Ausführung. Wenn Sie die Verarbeitung wirklich fortsetzen möchten, z. B., um einen bestimmten Teil des Graphen übersichtlicher zu gestalten, müssen Sie möglicherweise einen oder mehrere Knoten verschieben, um die Erstkonfiguration zu ändern. (Der Algorithmus richtet sich nach der Erstkonfiguration.)
Nach der Ausführung des Layouts wird der Graph weit von seiner Anfangsposition entfernt angelegt. Warum?
Die meisten Layoutalgorithmen verwenden einen Layoutbereichsparameter, um die Größe und die Position des Layouts zu steuern. (Einzelheiten hierzu finden Sie unter Layoutbereich.) Je nach Wert dieses Parameters können die Knoten weit von ihren Anfangspositionen weg verschoben werden.
Um festzustellen, ob ein Layoutalgorithmus für die Verwendung eines Layoutbereichsparameters bestimmt ist, lesen Sie die Dokumentation, um festzustellen, ob die Layoutklasse die folgende Methode der Basisklasse überschreibt, damit true zurückgegeben wird:
Andere Algorithmen haben einen anderen Mechanismus, der Ihnen ermöglicht, die Position des Layouts festzulegen. Es kann passieren, dass der Standardwert des Positionsparameters so definiert ist, dass der Graph weit von seiner Anfangsposition entfernt angelegt wird.
Wenn ich bestimmte Layoutalgorithmen für bestimmte Graphen verwende, kommt es zu sich überschneidenden Knoten. Warum, und was kann ich dagegen tun?
Ein möglicher Grund sind die verschiedenen Weisen, in denen die Layoutalgorithmen mit der Größe der Knoten umgehen:
- Die Algorithmen für das Baumstrukturlayout und das hierarchische Layout vermeiden sich überschneidende Knoten immer. (Der Algorithmus für Link-Layout verschiebt keine Knoten. Er formt die Links lediglich so um, dass die Kreuzungen und Überschneidungen verringert werden. Die Größe der Knoten wird berücksichtigt.)
- Der kräftegesteuerte Algorithmus (Force-directed) mit ausgewählter Option "Knotengrößen berücksichtigen" ist bei der Vermeidung sich überschneidender Knoten in vielen Fällen erfolgreich.
In jedem Fall sollten Sie versuchen, sofern der Layoutalgorithmus den Layoutbereichsmechanismus unterstützt (siehe Layoutbereich), die Größe des Layoutbereichs zu erhöhen. Wenn Ihr Graph beispielsweise Hunderte von Knoten enthält, ist es nicht sinnvoll, einen kleinen Layoutbereich, z. B. 600x600, zu verwenden. Ein solcher Bereich bietet nicht genug Platz für alle Knoten. Probieren Sie es mit einem größeren Layoutbereich, z. B. 5000x5000.
Die optimale Größe des Layoutbereichs ist nicht allein von der Anzahl der Knoten, sondern auch von deren Größe abhängig. Wenn die Knoten in Bezug auf die Größe des Layoutbereichs relativ groß sind, kann es erforderlich sein, einige der Parameter anzupassen (z. B. die bevorzugte Linklänge für das kräftegesteuerte Layout (Force-directed).
In manchen Netzen gibt es zwei (oder mehr) Teilnetze, die nicht verbunden sind. Wie wirkt sich dies auf die Layoutalgorithmen aus?
Dies ist von der verwendeten Layoutklasse abhängig:
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout: Dieser Algorithmus unterstützt nicht verbundene Graphen, aber ist es besser, sich auf den Parameter für das automatische Layout verbundener Komponenten zu verlassen. (Weitere Informationen finden Sie unter Layout verbundener Komponenten.)
- ibm_ilog.graphlayout.hierarchical.HierarchicalLayout und ibm_ilog.graphlayout.tree.TreeLayout: Diese Algorithmen besitzen eine integrierte Unterstützung für nicht verbundene Graphen. Alternativ können Sie die automatische Unterstützung aus der Basisklasse verwenden. (Weitere Informationen finden Sie unter Layout verbundener Komponenten.)
- ibm_ilog.graphlayout.longlink.LongLinkLayout, ibm_ilog.graphlayout.shortlink.ShortLinkLayout, ibm_ilog.graphlayout.grid.GridLayout, ibm_ilog.graphlayout.random.RandomLayout: Diese Algorithmen unterstützen verbundene und nicht verbundene Graphen. Ihr Verhalten ist für beiden Kategorien von Graphen dasselbe.
Es gibt einige Merkmale des Netzes, die wir kennen (z. B. kennen wir den Basisswitch, und wir wissen, wo die Mitte sein soll). Werden solche Merkmale vom Layoutalgorithmus berücksichtigt?
Dies ist vom Layoutalgorithmus abhängig:
- Das zirkuläre Layout (Circular Layout) ist so konzipiert, dass Sie Informationen zu der physischen Topologie des Netzes angeben können. Sie können angeben, welche Knoten zu demselben Cluster (Ring oder Stern) gehören, die Reihenfolge der Knoten im Cluster und den Knoten, der die Mitte eines Sternclusters bildet.
- Im Baumstrukturlayout können Sie den Stammknoten angeben.
- Im Algorithmus für das hierarchische Layout können Sie Knotenpositionsindizes und Ebenenindizes sowie Vorgaben für die relative Positionierung angeben.
Wenn ich IBM ILOG Dojo Diagrammer auf verschiedenen Computern mit einem anderen Brower verwende, erhalte ich manchmal unterschiedliche Layouts für denselben Graphen und mit denselben Parametern. Warum?
1. Computer und Browser können sich in der Geschwindigkeit unterscheiden - langsamer oder schneller sein. Wenn der Layoutalgorithmus, den Sie verwenden, die Berechnung stoppt, wenn die zulässige Zeit abgelaufen ist, bewirkt ein langsamerer Computer oder Browser, dass die Berechnung früher gestoppt wird. Dies kann eine Erklärung für die unterschiedlichen Ergebnisse sein. Dies kann selbst mit demselben Computer und demselben Browser passieren, wenn die Last des Computers erhöht wird. Möglicherweise müssen Sie die Angabe für die zulässige Zeit erhöhen, wenn Sie auf einem langsameren Computer oder einem anderen Browser arbeiten.
Ich verwende den die Algorithmen für die Layouts mit kurzen und langen Links für das Anlegen der Links eines Netzes von Grafikobjekten.
Wenn mehrere Links mit derselben Seite eines Knotens verbunden werden, überschneiden sich diese, obwohl ich eigentlich erwarte, dass das der Parameter für das Link-Offset (oder die Rastergröße) des Link-Layouts berücksichtigt wird.
Warum?
Einige dimensionale Parameter der Layoutalgorithmen müssen im Hinblick auf die Größe der Knoten ausgewählt werden. Dies sind die Parameter für das Link-Offset (Linkversatz) und die Umgehung des Abstands für das Layout mit kurzen Links (Short Link Layout) und die Rastergröße für das Layout mit langen Links. Deren Standardwerte sind nicht angemessen, wenn die Knoten groß sind. Verglichen mit dieser Größe, sind die Standardwerte der Parameter so klein, dass sie wie ein Nullwert erscheinen.
Die Lösung ist, die Werte der dimensionalen Parameter unter Berücksichtigung der Größe der Knoten zu erhöhen. Wenn verschiedene Knoten verschiedene Größen haben, kann entweder die mittlere oder die größte Größe der Knoten verwendet werden, um die Parameter als Bruchteil dieser Größe zu berechnen.