次のような OPL プロジェクトに読み込んだセットがあります。
S = {<"A","">, <"B","">, <"AB","A">, <"AB","B">, <"C","">, <"ABC","A">,<"ABC","B">, <"ABC","C">, <"ABC","AB">},
各要素 <,> は、2 つの文字列要素を持つタプルです。このセットは、対象アイテム間の親子関係を表します。
このセットから、新しいセットを作成する必要があります。
S' = {<"A",{""}>, <"B",{""}>, <"C",{""}>, <"AB",{"A","B"}>, <"ABC",{"A","B","C","AB"}>},
ここで、各要素 <,> は、各タプルの最初の要素が文字列であり、各タプルの 2 番目の要素が文字列のセットであるタプルです。このセットを作成する私の試みは次のとおりです。
tuple child{
string Item;
string Child;
}
{child} Children = ...; //Reads in the set S
tuple dependents{
string Item;
{string} ItemChildren;
}
{dependents} dependentsSet = {<x.Item, y.Child> | x in Children, (y in Children : <x,y> in Children)};
上記のコードの変数名を使用してS'を作成する目的は、プログラムの後半で、Item ごとに 1 つずつ制約のコレクションを作成する必要があり、各制約内で ItemChildren にインデックスを付ける必要があるためです。私は OPL の比較的初心者なので、dependentsSet 変数の初期化で構文を間違って使用していることはわかっていますが、探しているセットを作成するようにこのステートメントを正しく記述する方法がわかりません。
私が求めているセットを作成するために必要なステートメントを理解するのを手伝ってくれる人はいますか?