计算精度c ++ Cplex

时间:2016-09-30 02:44:22

标签: c++ cplex ilog

我使用Ilog Cplex和c ++实现了我的数学模型。我的大多数决策变量在最优解中都有小数值。其中一些非常小,cplex将它们输出为0.有没有办法提高精度,这样我仍然可以看到这些变量的值?

另外,当我使用cplex.getBestObjValue()时,它会给我“-Inf”。 (这是最大化问题。)

2 个答案:

答案 0 :(得分:1)

具有接近(但不完全是)整数值的整数变量的值是很正常的。 CPLEX具有完整性容差,因此可以接受这些值足够接近正确的整数值。只需使用标准C ++输出函数将这些值输出到您想要的任何精度。

大多数情况下这不是问题,但如果需要,您可以将完整性容差设置为较小的值。我通常将这些值舍入到最接近的整数值,并将其用作我的解决方案。您还可以尝试使用固定为舍入整数值的决策变量来重新求解模型,以确保解决方案真正有效。如果您不确定这是否足够,请尝试Alex的数值精确强调建议。

答案 1 :(得分:0)

您可以尝试使用设置IloCplex :: Param :: Emphasis :: Numerical

强调数字不稳定或困难问题的精确性。此参数允许您指定CPLEX它应该在数值上困难或不稳定的问题中强调精度,从而在时间和内存方面进行性能权衡。

关于你的第二个问题,你的模特是LP吗?

问候