在 OPL 中定义集合的集合(或索引集合)

Defining Set of Set in OPL (or indexed set)

我尝试在 OPL 中定义 set of set。问题是:

  1. 我有几个计算平台,例如:{"DC1", "DC2", "MP1"}
  2. 每个计算平台可以有多种配置,例如:DC1可以有{"conf1", "conf3"},DC2可以有{"conf1", "conf2", "conf3"},MP1可以有{ "conf1", "conf3"}
  3. 每个计算平台都有几个属性,例如容量 (vcpu)
  4. AMPL中set的集合,参数可以简单写成:
set COMPPLATFORMS;
set CONFCP{COMPPLATFORMS}

param vcpu {d in COMPPLATFORMS, CONFCP[d]};

但是,在 OPL 中,我们没有直接声明索引集的方法。我注意到我们可以使用元组或一些预处理。但是现在我不确定如何为索引集声明参数“vcpu”?

我知道我们可以有一组数组,或一组数组。但是我们可以来一套吗?

OPL中有类似结构的例子吗? 谢谢

例子见套套power sets in how to with OPL

{string} s={"A","B","C","D"};
    range r=1.. ftoi(pow(2,card(s)));
    {string} s2 [k in r] = {i | i in s: ((k div (ftoi(pow(2,(ord(s,i))))) mod 2) == 1)};

    execute
    {
     writeln(s2);
    }