表达式包含 Inf 或 NaN
优化建模函数不允许您指定复杂的、Inf 或 NaN 值。但是在普通操作过程中可能会出现 Inf 或 NaN 表达式。通常,这些表达式会导致错误的解。
包含 Inf 或 NaN 的优化表达式无法显示。例如,双精度算术中最大的实数约为 1.8e308。因此 2e308 溢出为 Inf。
x = optimvar('x');
y = 1e308;
expr = 2*x*yexpr =
OptimizationExpression
Expression contains Inf or NaN.同样,因为 Inf - Inf = NaN,所以无法显示以下表达式。
expr = 2*x*y - 3*x*y
expr =
OptimizationExpression
Expression contains Inf or NaN.如果任何优化表达式包含 Inf 或 NaN,请尝试在调用 solve 之前消除这些值。为此:
使用
show或write函数搜索这些表达式。检查表达式是否来自除以零或者大数的加法或乘法。如果是,请消除或者纠正该表达。
通常,这些表达式是由于错误而出现的。然而,有时它们是由于缩放不佳而产生的。如果有必要,将每个相关表达式除以一个足够大的标量,以使表达式不再溢出,或者使用另一个缩放运算。