跳至主内容
框架 无框架

CPLEX 优化器中的整数值、整数公差和四舍五入
上一页 下一页

提示:如果需要精确的整数值,请使用函数 "IloRound,以避免截断的危险。

CPLEX 优化器采用传统浮点运算来表示数字。 在整数约束和积分解法中,这一约定意味着以浮点数表示的整数的内部值可以非常接近积分,而不会成为该整数的浮点表示。 在某些情况下,整数的浮点表示与整数的预期计算之间的这种差异会产生令人惊讶的结果。

例如,考虑一个变量 x 的内部值为-0.99999952316284191问题。 根据问题中模型的积分公差值,您可能希望该值被四舍五入并返回-1(负 1)。 但是,由于四舍五入可能会影响 x 所处的约束条件的可行性,因此不进行四舍五入。 如果现在将该值赋值给应用程序中的 "integer类型变量,如 "IloInt,则根据这些约定,该赋值会将浮点表示隐式地 "截断为整数值 0(零)。 也就是说,赋值不会像你所期望的那样,将数值取整为-1(负 1)。

具体来说,以下方法接受一个 "IloIntVar或 "IloIntVarArray实例作为参数。 将这些方法的返回值赋值给 "IloInt(或 "IloIntArray)实例时,截断(而不是四舍五入)可能会在应用程序中产生令人惊讶的结果。

上一页 下一页