Я пишу линейную модель программирования на 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 или слишком большое), и я не вижу возможности сохранить переменную значения в их диапазоне.
Может кто-нибудь, пожалуйста, помогите мне? Я, вероятно, сделал какую-то ошибку, потому что это не должно быть так сложно. Спасибо вам!
Вот ограничивающая функция:
template<class T>
T bound_number(T n, T min, T max) {
return std::max(std::min(n, max), min);
}
Других решений пока нет …