【发布时间】:2014-10-15 23:38:49
【问题描述】:
我刚开始使用 cplex 及其 c++ API,当我尝试编写一个简单的二次程序时遇到了这种不寻常的情况。
IloEnv env;
IloNumVarArray x(env, 3, 0, IloInfinity, ILOINT);
IloModel model(env);
IloExpr obj(env);
obj= x[0]*x[1] ;
model.add(IloMaximize(env, obj - 120*x[2] ));
model.add(x[0] <= 200);
model.add(x[1] >= 4500);
model.add(x[1] <= 5500);
model.add(x[2] >= 100);
model.add(x[2] <= 300);
Cplex 解决并为我提供以下解决方案:x[0] = 200, x[1] = 5500 & x[2] = 100。这对我来说似乎完全合理。但是,当我对如何制定 iloexpr 进行以下更改时,上述代码不起作用:
obj= x[0]*x[1] - 120*x[2];
model.add(IloMaximize(env, obj ));
解决它,我得到 x[0] = 0, x[1] = 4500, x[2] = 300。实际上,目标值 = 36000 这对我来说没有意义。
有人知道我的表述有什么问题吗?谢谢!
【问题讨论】:
标签: visual-c++ mathematical-optimization cplex