グループ・スプレッド制約 (HL)

ノードのグループを同じレベルになるように強制する代替手段として、ゼロ (0) のスプレッド・サイズを使用してグループ・スプレッド制約を指定する方法があります。 一般的に、グループ・スプレッド制約はノードのグループが後続の k+1 レベルになるように強制します。 数値 k はスプレッド・サイズです。 この制約はグループの最低および最高のレベル・インデックスを選択しませんが、ノードを k レベルより離れていない場所に配置することのみを要求します。そのため、k=0 の場合、グループに属するすべてのノードは同じレベルに配置されます。
以下に、ID が「nodeA」、「nodeB」、および「nodeC」のノードに対する一般的なグループ・スプレッド制約を例として説明します。
グループ・スプレッド制約を使用するには、以下を呼び出します。
var nodeGroup = new ibm_ilog.graphlayout.hierarchical.HierarchicalNodeGroup();
nodeGroup.add(nodeA);
nodeGroup.add(nodeB);
nodeGroup.add(nodeC);
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalGroupSpreadConstraint(nodeGroup, 2));
nodeAnodeB、 および nodeC の中の最も高いレベル・インデックスがこれらのノードの中の最小のレベル・インデックスから 2 レベルよりも離れていない場合に、 この制約は満たされます。 例えば、nodeAnodeB、 および nodeC のレベル・インデックスがそれぞれ 1、2、3 の場合、 7、8、9 の場合、または 16、14、15 の場合に、制約は満たされます。 3 つのノードがすべてレベル 5 に配置される場合、またはこれらのノードのうち 2 つがレベル 15 に配置されてもう 1 つのノードがレベル 13 に配置される場合も、制約は満たされます。 nodeAnodeB、および nodeC のレベル・インデックスがそれぞれ 3、5、6 の場合は、制約は満たされません。 これは、最高のインデックス (6) が最低のインデックス (3) より 2 レベルを超えて離れているからです。