我使用Ilog Cplex和c ++实现了我的数学模型。我的大多数决策变量在最优解中都有小数值。其中一些非常小,cplex将它们输出为0.有没有办法提高精度,这样我仍然可以看到这些变量的值?
另外,当我使用cplex.getBestObjValue()
时,它会给我“-Inf”。 (这是最大化问题。)
答案 0 :(得分:1)
具有接近(但不完全是)整数值的整数变量的值是很正常的。 CPLEX具有完整性容差,因此可以接受这些值足够接近正确的整数值。只需使用标准C ++输出函数将这些值输出到您想要的任何精度。
大多数情况下这不是问题,但如果需要,您可以将完整性容差设置为较小的值。我通常将这些值舍入到最接近的整数值,并将其用作我的解决方案。您还可以尝试使用固定为舍入整数值的决策变量来重新求解模型,以确保解决方案真正有效。如果您不确定这是否足够,请尝试Alex的数值精确强调建议。
答案 1 :(得分:0)
您可以尝试使用设置IloCplex :: Param :: Emphasis :: Numerical
强调数字不稳定或困难问题的精确性。此参数允许您指定CPLEX它应该在数值上困难或不稳定的问题中强调精度,从而在时间和内存方面进行性能权衡。
关于你的第二个问题,你的模特是LP吗?
问候