【问题标题】:CP - OPL slicing input arrayCP - OPL 切片输入数组
【发布时间】:2018-06-30 14:19:44
【问题描述】:

我想我需要一些有关 OPL 语言的帮助:/ 我的代码如下:

using CP;

int NbMchs = ...;
range Mchs = 0..NbMchs-1;

tuple Mode {
  int opId;
  int mch;
  int pt;
};

{Mode}      Modes = ...;

// Not Working...
int test[m in Mchs] =  all(md in Modes: md.mch == m) md.opId;

我想要做的是从仅包含元组的 opId 字段的Modes 结构中提取 m 个一维数组。每个test[m] 数组都必须包含它的对应元素:即元组md 的opId 字段,其中md.mch =m

我从上面的代码中得到的错误是“Cannot use type int[] for int”。似乎上述函数的右侧返回了一个整数,但我认为all() 运算符是我可以用来完成这项工作的那个。

提前致谢

【问题讨论】:

    标签: constraint-programming opl


    【解决方案1】:

    在一般情况下,opId 的数量取决于机器 m,因此您不能在这里真正拥有二维数组。我会使用一组集合:

    {int} test[m in Mchs] =  { md.opId | md in Modes: md.mch == m };
    

    请注意,它假定每个 opId,mch 只有一种模式。

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2012-02-23
      • 2019-06-24
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多