Я пытаюсь написать простое ограничение, но, вероятно, делаю основную ошибку кодирования. Я хочу использовать один и тот же индекс дважды, но OPL выдает мне сообщение об ошибке, в котором говорится, что второго индекса не существует.
forall(i in 1..3, t in 10)
sum(l in 1..2)
z[i][l][t]+z[i+3][l][t]<=1;
Я удалил имена параметров и заменил их значениями, так как я думаю, что это «грамматическая» ошибка, и я не делаю вопрос слишком запутанным. OPL подчеркивает мой второй индекс «l» и говорит мне, что его не существует.
Я хотел бы, чтобы ограничение суммировало переменную z для всех [t], во всех 3 моих [i] и суммировало по [l], где [l] должно быть точно таким же значением.
Как правильно закодировать это ограничение?
Вы должны помнить приоритеты операторов, и вы можете решить свою проблему с помощью скобок.
Приведу небольшой пример:
int a=sum(i in 1..2) 1+i;
execute
{
writeln(a);
}
Это не работает, но это работает нормально:
int a=sum(i in 1..2) (1+i);
execute
{
writeln(a);
}
Спасибо за вашу помощь!