主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

表达式包含 InfNaN

优化建模函数不允许您指定复杂的、InfNaN 值。但是在普通操作过程中可能会出现 InfNaN 表达式。通常,这些表达式会导致错误的解。

包含 InfNaN 的优化表达式无法显示。例如,双精度算术中最大的实数约为 1.8e308。因此 2e308 溢出为 Inf

x = optimvar('x');
y = 1e308;
expr = 2*x*y
expr = 

  OptimizationExpression

    Expression contains Inf or NaN.

同样,因为 Inf - Inf = NaN,所以无法显示以下表达式。

expr = 2*x*y - 3*x*y
expr = 

  OptimizationExpression

    Expression contains Inf or NaN.

如果任何优化表达式包含 InfNaN,请尝试在调用 solve 之前消除这些值。为此:

  • 使用 showwrite 函数搜索这些表达式。

  • 检查表达式是否来自除以零或者大数的加法或乘法。如果是,请消除或者纠正该表达。

  • 通常,这些表达式是由于错误而出现的。然而,有时它们是由于缩放不佳而产生的。如果有必要,将每个相关表达式除以一个足够大的标量,以使表达式不再溢出,或者使用另一个缩放运算。

另请参阅

|

主题