Я пишу модель линейного программирования на 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 или слишком большие), и я не вижу никаких возможностей для сохранения значений переменных в их диапазоне.
Может кто-нибудь, пожалуйста, помогите мне? Вероятно, я ошибся, потому что это не должно быть так сложно. Спасибо вам!
Хороший способ устранения CPLEX заключается в использовании exportModel. Проверьте границы в вашем .LP-файле и посмотрите, соответствуют ли они вашим ожиданиям. Попробуйте решить проблему с помощью другого решателя, такого как Gurobi, и посмотрите, какие значения вы получите. Кроме того, когда вы говорите, что значения вне вашего ограничения после того, как вы решите, какие значения вы получите? Что такое значение EPS? – raoulcousins
Спасибо, exportModel помог мне найти причину, мои ограничения всегда содержали отрицательную переменную, которая должна была быть положительной. – user2145167