Проблемы с использованием границ переменных и целевой функции в C ++ CPLEX

Я пишу линейную модель программирования на C ++, используя технологию концерта от cplex.

Я объявляю переменные и целевую функцию моей модели следующим образом:

IloModel genInst (env);

IloNumVarArray Sizes(env,N,0.25+EPS,1.0-EPS);

IloObjective Weight = IloAdd(genInst, IloMaximize(env,IloSum(Sizes));

EPS — это небольшая константа, потому что я хочу, чтобы переменные были строго больше 0,25 и строго меньше 1,0.

Целевая функция должна просто максимизировать сумму всех переменных, но всякий раз, когда я пытаюсь это сделать, переменные в решении будут иметь значения вне моего ограничения (например, меньше 0,25 или слишком большое), и я не вижу возможности сохранить переменную значения в их диапазоне.

Может кто-нибудь, пожалуйста, помогите мне? Я, вероятно, сделал какую-то ошибку, потому что это не должно быть так сложно. Спасибо вам!

0

Решение

Вот ограничивающая функция:

template<class T>
T bound_number(T n, T min, T max) {
return std::max(std::min(n, max), min);
}
0

Другие решения

Других решений пока нет …