#cplex #opl
Вопрос:
Вот мой код:
range products = 1..5;
// Variables
dvar float P;
dvar float Q;
// Expressions
dexpr float produced[products] = [P, Q, P, P Q, P Q];
Проблема в том, что я не могу использовать produced
выражение, потому что получаю ошибку:
Index out of bound for array "produced": p.
всякий раз, когда я пытаюсь использовать выражение produced[p]
«где p
находится число 1..5
«.
Я знаю, что могу создавать массивы выражений с помощью синтаксиса dexpr float product[p in products] = (some math expression using p);
, но я хочу использовать форму выше из своего кода. Похоже, этот синтаксис не разрешен для выражений, есть ли обходной путь?
Ответ №1:
range products = 1..5;
// Variables
dvar float P;
dvar float Q;
int coefP[products]=
[1,0,1,1,1];
int coefQ[products]=
[0,1,0,1,1];
// Expressions
dexpr float produced[p in products] = coefP[p]*P coefQ[p]*Q;
subject to
{
produced[1]==3;
}
работает нормально