我正在用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 :(得分:0)
这是一个边界函数:
template<class T>
T bound_number(T n, T min, T max) {
return std::max(std::min(n, max), min);
}