CP - входной массив среза OPL - PullRequest
0 голосов
/ 30 июня 2018

Я думаю, что мне нужна помощь с языком 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;

Что я хочу сделать, это извлечь m 1D массивов из структуры Modes, содержащей только поле opId кортежа. Каждый массив test[m] должен содержать соответствующие элементы: это поле opId кортежа md, где md.mch =m.

Ошибка, которую я получаю из приведенного выше кода: «Невозможно использовать тип int [] для int». Кажется, что правая часть вышеупомянутой функции возвращает одно целое число, но я думал, что оператор all() - это тот, который я могу использовать для выполнения этой работы.

Заранее спасибо

1 Ответ

0 голосов
/ 01 августа 2018

В общем случае количество opId зависит от машины m, поэтому вы не можете иметь здесь двумерный массив. Я бы использовал массив наборов:

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

Обратите внимание, что предполагается, что у вас есть только один режим для opId, mch.

...