В CPLEX, как я могу использовать переменные в синтаксисе цикла forall?

Я хочу использовать переменные в синтаксисе cplex forall, как показано ниже.

forall(j in {1,2,3,4,5,6,7})
{
  x[1][j] + x[1][(j+3)%7] + x[1][(j+4)%7] + x[1][(j+5)%7] + 
  x[1][(j+6)%7] + x[2][j] + x[2][(j+3)%7] + x[2][(j+4)%7] + 
  x[2][(j+5)%7] + x[2][(j+6)%7] >= 5;
}

Но после того, как я запустил этот скрипт, возникла синтаксическая ошибка из-за (j+3)... Как мне сделать скрипт для использования этого алгоритма?


person user3634728    schedule 14.05.2014    source источник
comment
Каково объявление массива x[][]? Какая у вас ошибка?   -  person TimChippingtonDerrick    schedule 14.05.2014
comment
Я получил синтаксическую ошибку из-за j+4 в forall,   -  person user3634728    schedule 15.05.2014
comment
я не могу использовать j + 4 или j + 3 в синтаксисе forall (j in)?   -  person user3634728    schedule 15.05.2014
comment
не могли бы вы вставить определение x, пожалуйста?   -  person jjlema    schedule 11.11.2014


Ответы (1)


Есть разные способы решить эту проблему, в основном вам нужна функция, которая принимает индекс j и смещение в качестве параметра и возвращает соответствующий результат.

Это можно сделать с помощью постоянной матрицы, которую вы устанавливаете в начале для каждого из 7 j и смещений. Затем внутри цикла, на который вы ссылаетесь

x[1][ f[j][3] ]
person Vincent Ho    schedule 10.02.2015