Я столкнулся с проблемой записи ограничений с использованием IloRange. Ошибка компиляции отсутствует, но код не запущен.Ошибка в определении ограничений с использованием IloRange в CPLEX (C++)
В коде ad_sales.u_j [j] является переменной, а спрос [j] и лямбда [j] являются параметрами. Синтаксис, который я использовал для ILoRange, - это ilorange (env, нижняя граница, переменная, верхняя граница).
Мне нужно найти двойники набора ограничений, поэтому я переключился на IloRange. Если я использую следующую команду вместо Ilorange, код работает нормально.
for(IloInt j=0; j<data.n; j++)
model_ad.add(ad_sales.u_j[j] <= demand[j]*lambda[j]);
Но следующее не работает:
IloRangeArray cons(env, data.n);
for(IloInt j=0; j<data.n; j++)
{
cons.add(IloRange(env, 0, ad_sales.u_j[j],demand[j]*lambda[j]));
//model_ad.add(cons[j]);
}
model_ad.add(cons);
Действительно ценю помощь.
Спасибо
Я попробовал ваш предложенный метод, ограничения добавляются в массив IloRange, но код не может их добавить в model_ad. Код перестает работать на 'model_ad.add (минус)' –
Я очень ценю помощь ...... Я пробовал 'IloConstraintArray cons (env)' метод .... Он работает нормально .. Но проблема в том, что я хотите получить двойственность от набора ограничений. GetDual ожидает IloRangeArray и не работает с IloConstraintArray .... Код останавливается на 'for (IloInt j = 0; j
Ну, в этом случае сначала запишите свой массив' cons', затем добавьте ограничения один за другим в цикле 'for (IloInt j = 0; j