0

我正在用 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 或太大),我看不到任何保留变量的可能性在他们的范围内的值。

有人可以帮帮我吗?我可能犯了一些错误,因为它不应该那么复杂。谢谢!

4

1 回答 1

0

这是一个边界函数:

template<class T>
T bound_number(T n, T min, T max) {
    return std::max(std::min(n, max), min);
}
于 2013-03-07T16:46:13.363 回答